页面置换算法

来源:互联网 发布:铁路局通信段 知乎 编辑:程序博客网 时间:2024/05/04 13:05

页面置换方法:

起源

操作系统给每个进程分配内存空间,即为每个进程分配多少个页框驻留进程。此时,分配到的页框称为驻留集。有两种方法:固定驻留策略动态驻留策略

固定驻留策略指为每个进程分配固定的页框数,不能增减,也不能使用别的进程的空间

动态驻留策略指在进程活跃期间,系统可以根据进程的缺页率进行动态调整,进程的页框数可以增减。这样就有两个问题:页框置换的范围,如何选择置换出内存的页框

页框置换有局部置换和全局置换,固定驻留策略必然导致局部置换,而全局置换必须使用动态驻留策略。

第二个问题则涉及到页面置换算法。

定义

地址映射过程中,若发现所要访问的页面不再内存中,则产生缺页中断。此时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法

 

常见的页面置换算法:

OPT:OPT(最佳置换算法),是理论算法,它将不再使用的页面换出,而实际中不能预知哪个页面不再使用,但是这个算法是最优算法,可以作为评测其他算法的性能。

FIFO:First In First Out,先进先出。合队列的特性,数据结构上使用队列Queue来实现。按照页面装进内存的时间进行置换,越老的页面最先被换出,不管该页面是否经常使用。算法简单,但是效率不高。

 

LRU:Least Recently Used,最近最少使用。LRU是根据使用时间的差异来决定的。按照上次使用时间进行排序,将离上次使用时间最长的页面换出。LRU算法是经常采用的页面置换算法。

可以采用栈的数据结构,新数据插入到栈顶;每当缓存数据被访问,则将数据移到栈顶;当栈满的时候,将栈底的数据丢弃。


LFU:Least FrequentlyUsed,最不经常使用。LFU根据使用次数的差异来决定。其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。

1. 新加入数据插入到队列尾部(因为引用计数为1);

2. 队列中的数据被访问后,引用计数增加,队列重新排序;

3. 当需要淘汰数据时,将已经排序的列表最后的数据块删除。

 

Clock:

采用应用为R,当R=1说明被引用过,这种方法是FIFO的改进,根据装入内存时间和是否被引用过作为标准,首先从时间最长项检查,若R=0则置换出,若为1则检查下一项并将R=0。若全部R=1,则按照FIFO方法进行置换。

 

参考:http://www.cnblogs.com/tracylee/archive/2012/10/16/2726891.html

点击打开链接

 

0 0
原创粉丝点击