缓存算法(页面置换算法)-FIFO、LFU、LRU
转自:http://www.cnblogs.com/dolphin0520/ 1.FIFO算法 FIFO(First in First out),先进先出。其实在操作系统的设计理念中很多地方都利用到了先进先出的思想,比如作业调度(先来先服务),为什么这个原则在很多地方都会用到呢?因为这个原则简单、且符合人们的惯性思维,具备公平性,并且实现起来简单,直接使用数据结构中的队列即可实现。 在FIFO Cache设计中,核心原则就是: 如果一个数据最先进入缓存中,则应该最早淘汰掉 。也就是说,当缓存满的时候,应当把最先进入缓存的数据给淘汰掉。在FIFO Cache中应该支持以下操作; get(key):如果Cache中存在该key,则返回对应的value值,否则,返回-1; set(key,value):如果Cache中存在该key,则重置value值;如果不存在该key,则将该key插入到到Cache中,若Cache已满,则淘汰最早进入Cache的数据。 举个例子:假如Cache大小为3,访问数据序列为set(1,1),set(2,2),set(3,3),set(4,4),get(2),set(5,5) 则Cache中的数据变化为: (1,1) set(1,1) (1,1) (2,2) set(2,2) (1,1) (2,2) (3,3) set