|
Buffer Manager
Introduction
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
|