Every time a read command is issued, the I/O buffer list is searched. If the requested data
is already in a buffer, then it’s made available to the requesting process. If not, then it’s
physically moved from secondary storage to a buffer. If a buffer is available, the move is
made. If all buffers are busy, then one must be emptied out to make room for the new
block. This is done by using a least recently used (LRU) policy, so the contents of frequently
used buffers will be left intact, which, in turn, should reduce physical disk I/O.