Buffer Manager


The buffer manager reads disk pages into a main memory page as needed. The collection of main memory pages (called frames) used by the buffer manager for this purpose is called the buffer pool. This is just an array of Page objects. The buffer manager is used by (the code for) access methods, heap files, and relational operators to read / write /allocate / de-allocate pages. The Buffer Manager makes calls to the underlying DB class object, which actually performs these functions on disk pages.

Replacement policies for the buffer manager can be changed easily at compile time.

Design Decisions

A hash table is used to figure out what page frame a given disk page (i.e., with a given pageId) occupies. A buffer descriptor object is associated with every page frame in the buffer pool. It contains a dirty bit, the page number, and the pin count for the page occupying that frame.

When a page is requested, the buffer manager brings it in and pins it. The buffer manager does not keep track of all the pages that have been pinned by a transaction. It is up to the various components (that call the buffer manager) to make sure that all pinned pages are subsequently unpinned.

See the text for a more detailed description of the buffer manager.

Click here for the public interface.

Back to the List of Components
Back to the Minibase Home Page