It is the responsibility 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.