Comments
Loading Dream Comments...
You must be logged in to write a comment - Log In
In the background is a privileged task called ::CKPT::, the checkpoint thread. It runs whenever all our pageframes are full, and we need to swap something out to the datastore disk, so we can swap in a requested page or segment. It also runs automatically every few seconds, to ensure data synchronisation (i.e contents of RAM == contents of disk). Before actually flushing the page frame, ::CKPT:: first points to the hexadecimal $B (buffer tag), and scans the embedded data items (including nested bufs) in order to rebuild the dope vector (table of offsets to each data item), and ensures any temporary stuff in the free space area (used by FBI (Fundamental Buffer Interface) operations) has been merged back into the active data area. It then whizzes round the TLB chains, in order to NULLify any address registers pointing to this page frame (this eliminates risk of "dangling references"), and flushes the page frame to disk, allowing its reuse for swapping in the new page from disk.