Rhino stores database contents in memory-mapped files; in other words, the database is buffered on pages that are mapped directly onto an application's address space. Memory-mapped files thus avoid the double paging problem even if there is memory competition.
Efficient buffering must comply with the write ahead logging (WAL) rule, which dictates that whenever a page is to be evicted, its log records (undo records) must be flushed to the log device [gray, mcnamee], Rhino ensures WAL by implementing its own pageout procedure. Whenever the kernel chooses a page for purging, the Rhino pageout module is called to flush the log into the log device.