The role of the Buffer Manager is to make page from the disk available to processes into the main memory (buffer pool). It is the responsability of the buffer manager to allow process to get the pages they need, while minimizing disk accesses and unsatisfiable requests. by implementing a page replacement strategy.
The buffer pool is an array of frames containing a page, a dirty bit, the page number, and the pin count for the page occupying that frame. A hash table is used to know what page frame a given disk page (i.e., with a given pageId) occupies. When a page is requested, the buffer manager brings it in and pins it, and implement a page replacement strategy when a free frame is not available for the requested page in the buffer pool. 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.
The Buffer Manager is used by the other modules to read / write / allocate / de-allocate pages. The Buffer Manager makes calls to the underlying Permanent Memory Manager, which actually performs these operations on disk pages.
Click here for the Buffer Manager public interface.