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.