操作系统常见的十种页面置换算法

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

二、目标:
如今已经有很多页面置换算法,但是不同页面置换算法的主要目标还是使页面置换频率最低(即缺页率最低)。

三、常见的算法:
1. 最佳置换算法

基本思想:选择以后再也不用的页面;没有的话,选择以后最长时间不用的页面;

实现:无法实现,因为页面的访问顺序无法预知;

特点:无法实现,仅具有理论意义;

2. 先进先出置换算法(FIFO)

基本思想:基于程序的顺序执行特点选择到达内存最早的页面,予以淘汰;

实现:页面在内存中按时间排序;

特点:效果不佳(程序不是严格顺序执行);

3. 最近最久未使用置换算法(LRU)

基本思想:基于程序运行的局部性原理,选择最近以来最久未使用的页面,予以淘汰;

实现:移位寄存器,栈;

特点:调度性能教好;

4. 第二次机会算法

第二次机会算法的基本思想是与FIFO相同的,但是有所改进,避免把经常使用的页面置换出去。当选择置换页面时,依然和FIFO一样,选择最早置入内存的页面。但是二次机会法还设置了一个访问状态位。所以还要检查页面的的访问位。如果是0,就淘汰这页;如果访问位是1,就给它第二次机会,并选择下一个FIFO页面。当一个页面得到第二次机会时,它的访问位就清为0,它的到达时间就置为当前时间。如果该页在此期间被访问过,则访问位置为1。这样给了第二次机会的页面将不被淘汰,直至所有其他页面被淘汰过(或者也给了第二次机会)。因此,如果一个页面经常使用,它的访问位总保持为1,它就从来不会被淘汰出去。

第二次机会算法可视为一个环形队列。用一个指针指示哪一页是下面要淘汰的。当需要一个存储块时,指针就前进,直至找到访问位是0的页。随着指针的前进,把访问位就清为0。在最坏的情况下,所有的访问位都是1,指针要通过整个队列一周,每个页都给第二次机会。这时就退化成FIFO算法了。

5. 时钟算法

需要用到页表项当中的访问位,当一个页面被装入内存时,把该位初始化为0,然后如果这个页面被访问(读/写),则把该位置为1;把各个页面组织成环形链表(类似于钟表面),把指针指向最老的页面(最先进来);当发生一个缺页中断时,考察指针所指向的最老页面,若它的访问位为0,立即淘汰;若访问位为1,则把该位置为0,然后指针往下移动一格,如此下去,直至找到被淘汰的页面,然后把指针移动到它的下一格。

6. 改进型的时钟置换算法

简单的时钟置换算法仅考虑到一个页面最近是否被访问过。事实上,如果被淘汰的页面没有被修改过,就不需要执行I/O操作写回外存。只有被淘汰的页面被修改过时,才需要写回外存。因此,除了考虑一个页面最近有没有被访问过之外,操作系统还应考虑页面有没有被修改过。在其他条件都相同时,应优先淘汰没有修改过的页面,避免I/O操作。这就是改进型的时钟置换算法的思想。

修改位=0,表示页面没有被修改过;修改位=1,表示页面被修改过。为方便讨论,用(访问位,修改位)的形式表示各页面状态。如(1,1)表示一个页面近期被访问过,且被修改过。算法规则:将所有可能被置换的页面排成一个循环队列。

实例:

第一轮:从当前位置开始扫描到第一个(0, 0)的帧用于替换。本轮扫描不修改任何标志位。

第二轮:若第一轮扫描失败,则重新扫描,查找第一个(0, 1)的帧用于替换。本轮将所有扫描过的帧访问位设为0。

第三轮:若第二轮扫描失败,则重新扫描,查找第一个(0, 0)的帧用于替换。本轮扫描不修改任何标志位。

第四轮:若第三轮扫描失败,则重新扫描,查找第一个(0, 1)的帧用于替换。

由于第二轮已将所有帧的访问位设为0,因此经过第三轮、第四轮扫描一定会有一个帧被选中,因此改进型CLOCK置换算法选择一个淘汰页面最多会进行四轮扫描。

7. 最近未使用页面置换算法(NRU)算法

找到最久没有使用的页面置换出去,页面被访问时设置访问位为1,修改时设置修改位为1,为便于说明,用R位标识访问位,M位标识修改位。R位定期清0;

此算法可以把页面分四类:

未被访问,未被修改的R=M=0
未被访问,被修改R=0,M=1
被访问,未被修改R=1,M=0
被访问,被修改R=1,M=1
置换方式:系统从类类编号最小的非空类随机挑选一个置换。

8. 最不常用算法

用一个软件模拟LRU,该算法将每个页面与一个软件计数器相关联。计数器的初值为0。每次时钟中断时,由操作系统扫描内存中所有的页面,将每个页面的R位(它是0或1)加到它的计数器上。这个计数器大体上跟踪了各个页面被访问的频繁程度。发生缺页中断时,则置换计数器值最小的页面。
    NFU的缺点是它不从不忘记任何事,比如一个页面之前频繁被访问,导致这个它的计数器很大,但是后来它不被访问了,而它的计数器的值还是很大,所以它一直不会被置换出去。

9. 老化算法

老化算法是对NFU算法的修改,其修改包括两个部分,首先,在R位被加进之前将计数器右移一位,其次,将R位加到计数器最左端的位而不是最右端的位。
    老化算法中的计数器只有有限位数,如果时钟滴答是20ms,8位一般是够用的。假如一个页面160ms没有被访问过,那么它很可能并不重要。

10. 工作集页面置换算法

相关定义:

一个进程当前正在使用的页面的集合称为它的工作集。
若每执行几条指令就产生一次缺页中断,那么就称这个程序发生了颠簸。
在单纯的分页系统中,刚启动进程时,在内存中并没有页面。在CPU试图读取第一条指令时就会产生一次缺页中断,使操作系统装入含有第一条指令的页面,其他由访问全局数据和堆栈引起的缺页中断通常会紧接着发生。一段时间后,进程需要的大部分页面都已经在内存了,进程开始在较少缺页中断的情况下运行。这个策略被称为请求调页。
有不少分页系统会设法跟踪进程的工作集,以确保在让进程运行以前,它的工作集就已经在内存中了。该方法称为工作集模型,大大减少缺页中断率。在进程前装入其工作集页面也称为预先调页。工作集是随时间变化的。
事实上大多数程序会任意访问一小部分页面,工作集随时间缓慢变化。当程序重新开始时,就有可能根据它上次结束时的工作集对要用到的页面做一个合理的推测,预先调页就是在程序IXUS运行之前预先装入推测的工作集的页面。
按照以前的方法,定义工作集为前1000万次内存访问锁使用过的页面的集合,那么现在就可以这样定义:工作集即是过去10ms中的内存访问所用到的页面的集合。这样的模型很合适而且更容易实现。要注意到,每个进程只计算它自己的执行时间。因此,如果一个进程在T时刻开始,在(T+100ms)的时刻使用了40msCPU时间,对工作集而言,它的时间就是40ms。一个程序从它开始执行到当前所实际使用的CPU时间总数通常称作当前实际运行时间。通过这个近似的方法,进程的工作集可以被称为在过去的τ秒实际运行时间中它所访问过的页面的集合。
基于工作集的页面置换算法就是找出一个不在工作集中的页面并淘汰它。每个表项至少包含两条信息:上次使用该页面的近似时间和R(访问位)。
算法过程:

过程:扫描所有的页面检查R位:

若(R == 1)则设置上次使用时间为当前实际时间,表示缺页中断时该页面正在被使用。

若(R == 0 且生存时间>τ)则移出这个页面,该页面在当前时钟滴答中未被访问,不在工作集中,用新的页面置换它。扫描会继续进行以更新剩余的表项。

若(R == 0 且生存时间≤τ)则记住最小时间。如果该页面R==0且生存时间小于或等于τ,则页面仍在工作集中。把页面临时保存下来,但是要记住生存时间最长(“上次使用时间”的最小值)。如果扫描完整个页表却没有找到合适的淘汰的页面,如果找到了一个或多个R == 0的页面,就淘汰生存时间最长的页面。

     在最坏的情况下,在当前时钟滴答中,所有的页面都被访问过了,也就是所有的R都为1,因此就随机选择一个页面淘汰,如果有的话最好选一个干净页面。

工作集时钟页面置换算法

工作集时钟页面置换算法是在工作集和时钟算法的基础上改进的。

在工作集页面置换算法中中,当缺页中断发生后,需要扫描整个页表才能确定被淘汰的页面,因此基本工作集算法是比较费时的。
    基于时钟算法,并且使用了工作集信息,被称为WSClock(工作集时钟)算法。由于它实现简单,性能较好,所以在实际工作中得到了广泛应用。与时钟算法一样,所需的数据结构是一个以页框为元素的循环表。

最初,该表为空,当装入第一个页面后,把它加到该表中。随着更多的页面加入,它们形成一个环。每个表项包含来自基本工作集算法的上次使用时间,以及R位和M位。
    与时钟算法一样,每次缺页中断时,首先检查指针指向的页面。如果R位是1,该页面在当前时钟滴答中就被使用过,那么该页面就不适合被淘汰。然后把该页面的R位置为0,指针指向下一个页面,并重复该算法。
    如果R位是0,查看生存时间,如果生存时间大于τ并且该页面是干净的,它就不在工作集中,而且在磁盘上它有一个有效的副本。申请此页框,并把新页面放在其中。如果该页面已经被修改过,就不立即申请此页框,为了避免由于调度写磁盘操作引起的进程切换,指针继续向前走,算法继续对下一个页面进行操作,有可能存在一个旧的而且干净的页面可以立即使用。
    原则上,所有的页面都有可能因为磁盘I/O在某个时钟周期被调度,为了降低磁盘阻塞,需要设置一个限制,即最大只允许写回n个页面。一旦达到该限制,就不允许调度新的写操作。
指针经过一圈返回它的起点,有两种情况:

至少调用了一次写操作
没有调用过写操作
    对于第一种情况,执行了写操作的页面已经是干净的了,置换遇到的第一个干净页面,这个页面不一定是第一个被调度写操作的页面,因为硬盘驱动程序为了优化性能可能已经把写操作重排序了。
    对于第二种情况,所有的页面都在工作集中,否则将至少执行了一个写操作。由于缺乏额外的信息,一个简单的方法就是随便置换一个干净的页面来使用,扫描中需要记录干净页面的位置。如果不存在干净页面,就选定当前页面并把它协会磁盘。
算法对比:

算法

优缺点

最优算法

不可实现,但可以用作基准

NRU(最近未使用)算法

和LRU算法很相似

FIFO(先进先出)算法

有可能会抛弃重要的页面

第二次机会算法

比FIFO 有较大的改善

时钟算法

实际使用

LRU(最近最少)算法

比较优秀,但是很难实现

NFU(最不经常使用)算法

和LRU很类似

老化算法

近似LRU的高效算法

工作集算法

实施起来开销很大

工作集时钟算法

比较有效的算法

补充:

在 UNIX 系统中采用的页面置换算法是时钟CLOCK算法,

Windows NT的页面置换算法采用先进先出(FIFO)算法。

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览58074 人正在系统学习中

ALGORITHM LOL
关注

4


27

0

OS之页面置换算法
Andy的博客
 2693
之前几篇博客记录了OS内存管理的一些知识和技术,接下来将继续深入,介绍一些页面置换算法,这里包括一些我们大家都略有耳闻的算法。 置换算法 当出现缺页故障时,需要从外存调入新的页面到内存中去,而如果此时内存已满,于是就要按照一定策略置换一些物理页帧出来,这就是置换算法的目的。而置换算法的目标就是尽量减少页面的调入调出次数 页面置换算法主要可分为两大类: 局部页面置换算法 置换页面的选择范围仅限于...
页面置换算法 (全)
Wu_yongtao的博客
 4788
页面置换算法 (全) 文章目录页面置换算法 (全)(1)最佳页面置换算法 OPT (OPTimal replacement)(2)先进先出页面置换算法 FIFO (First In First Out)(3)第二次机会页面置换算法 SC (Second Chance)(4)时钟页面置换算法 CLOCK(5)最近最少使用页面置换算法 LRU (Least Recently Used)(6)最不经常使用页面置换算法 LFU (Least frequently used)(7)最近未使用页面置换算法 NRU (N
三种页面置换算法(详解)_最佳置换算法
2-2
1)原理:把内存中驻留时间最久的页面置换算法予以淘汰 2)举例: 在分页中,采用FIFO页面置换算法,序列 4,3,2,1,4,5,4,3,2,1,5,当物理块为3时,计算缺页次数和缺页率? 算法执行如下操作步骤: 程序运行时,先将4,3,2三个页面...
页面置换算法详解
2-2
进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区,其中选择调出页面的算法就称为页面置换算法。 好的页面置换算法应有较低的页面更换频率,也就是说,应将以后...
基于C语言实现的两种常见页面置换算法(OPT,LRU)
04-02
针对一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率。要求设计主界面以灵活选择某算法,且以下算法都要实现 (1)最佳淘汰算法(OPT) (2)最近最少访问页面算法(LRU) 2.要有体现算法比较的程序输出,比如:缺页率和页面置换次数等。 3.采用固定分配局部置换,且可以在程序中实现块数重新分配。 具有抖动判断和Belady异常判断机制 根据设计要求实现对页面置换算法的模拟以及 进程状态转换的模拟。 1.根据自己输入 物理块数量,访问页面总数,要访问的页面号,  2.然后选择所需的置换算法 OPT,LRU 二选一. 计算过程,并得出 缺页次数,缺页率,置换次数,命中率的结果; 3.进行虚拟存储算法设计分析。
操作系统课程设计——页面置换算法模拟实现
02-24
内含源代码及课程设计报告。 设计目的:存储管理的主要功能之一是合理的分配空间。请求页式存储管理是一种常用的虚拟存储管理技术。通过对请求页式存储管理中页面置换算法的模拟设计,掌握请求页式存储管理页面置换算法,并进一步理解虚拟存储技术的原理及特点。 设计内容:设计一个虚拟存储及内存工作区,使用先进先出算法(FIFO),理想型淘汰算法(OPT),最近最久未使用算法(LRU)计算不同内存容量下的缺页率,模拟表示出不同算法内存中页面的变化情况,并对不同内存容量下不同算法的缺页率进行比较分析(例如,可以采用图表、动画等方式来表示各种算法的执行过程;可以用图表方式来对比分析不同算法的缺页率)。
页面置换算法_时钟信号置换
1-31
页面置换算法的概念: 出现缺页异常,则需调入新页面二内存已满时,置换算法选择被置换的物理页面。尽可能减少页面的调如调出次数,把未来不再访问或短期内不访问的页面调出。 页面锁定framelocking:常驻的逻辑页面,操作系统的关键部分,要求相...
几种常见页面置换算法分析_scr算法
2-5
评价一个算法的优劣,可通过在一个特定的存储访问序列(页面走向)上运行它,并计算缺页数量来实现。 1 先入先出法(FIFO) 最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置...
实验报告3页面置换算法演示.doc
08-23
页面置换算法演示 实验目的 1. 分析内存管理办法中每个页面置换算法原理; 2. 掌握页面置换算法执行过程。 二、实验预备内容 1. 熟悉内存管理办法; 2. 熟悉页面置换算法原理; 3. 熟悉不同页面置换算法的置换过程。 要求自选编程语言实现最佳置换算法、先进先出页面置换算法和最近最久未使用置换算法的演示置换过程,并给出运行结果(置换次数和缺页率)。
页面置换算法的模拟实现.docx
03-03
(1)设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算各个算法的缺页率。 (2)用C语言实现,要求设计主界面以灵活选择某算法,且以下算法都要实现: a:最佳置换算法(OPT):将以后永不使用的或许是在最长(未来)时间内不再被访问的页面换出。 b: 先进先出算法(FIFO):淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。 c:最近最久未使用算法(LRU):淘汰最近最久未被使用的页面。 (3)程序采用人工的方法选择,依次换策略选择一个可置换的页,并计算它们的缺页率以便比较。
页面置换算法详解(10种)_页面置换算法有哪些
2-3
如果对于虚拟内存,页表,分页等技术还是一知半解的道友可以参考我之前写的一篇博客: 虚拟内存、分页以及页表,建议读者从头往后读,有的页面置换算法是对前面页面置换算法的修改或者性能提升。 当发生缺页中断时,操作系统必须在内存中选择一个...
操作系统 - 页面置换算法_进程数越少cpu利用率
2-8
无法预知每个页面在下次访向前的等待时间。 作为置换算法的性能评价依据,在模拟器上运行某个程序,并记录每一次的页面访问情况,第二遍运行时使用最优算法。 最优页面置换算法(OPT)示例: 先进先出算法(First-In First-Out, FIFO) ...
操作系统 课程设计 页面置换算法FIFO和 LRU
08-14
这是一个自己完成软件工程的操作系统课程课程设计题目:此程序用于模拟虚拟磁盘页面置换算法,实现了FIFO页面置换算法和LRU页面置换算法,获得课程设计优秀的好成绩
页面置换算法
Bit_Dong的博客
 1万+
进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区,其中选择调出页面的算法就称为页面置换算法。好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做。....
几种页面置换算法
热门推荐
wangsifu2009的专栏
 4万+
地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。常见的置换算法有: 1)最佳置换算法(OPT)(理想置换算法) 这是一
一文看懂页面置换算法
m0_74282605的博客
 1371
如果分配给一个进程的物理页面太少,不能包含整个的工作集,既常驻集属于工作集,那么进程将会造成很多的缺页中断,需要频繁地在内存与外存之间替换页面,从而使进程的运行速度变得很慢,将这种状态称为“抖动”。
一文读懂页面置换算法
m0_74282605的博客
 1074
将每一个页面与一个计数器关联,每次时钟终端,扫描所有页面,将每个页面的R位加到计数器上,这样就大致跟踪了每个页面的使用情况。这种算法的思想和队列是一样的,OS维护一个当前在内存中的所有页面的链表,最新进入的页面在尾部,最久的在头部,每当发生缺页中断,就替换掉表头的页面并且把新调入的页面加入到链表末尾。被引用但不活跃的页面同样会被考虑回收,是因为一些页面是守护进程访问的,可能很长时间不再使用。即在最近的一个时钟滴答内,淘汰一个没有被访问但是已经被修改的页面,比淘汰一个被频繁使用但是“clean”的页面要好。
最全面的六种页面置换算法解析(操作系统课程设计)
莫北
 3146
页面置换算法 一、前言 页面置换算法目的是减少对换量从而提高系统的性能。让我们进一步理解内存页面的置换机制,掌握经典页面置换算法的实现方式。从中比较出各个算法之间的优缺点和各自的特点。自己可以掌握各个算法的方法,并运用到其他适应的场景。为了实现页面置换算法采用了当下比较热门的Java语言编写。第一Java中的数据结构比较多,有很多方式模拟物理块存放页面(比如list集合,map集合等)。第二Jav...
一文讲懂页面置换算法,带例题详解
二琳爱吃肉的博客
 1万+
1.什么是页面置换算法? 在进程运行的过程当中,进程所要访问的页面不再内存中,我们就需要把这个不存在的页面调入内存,但内存已经没有空闲空间了,这时候就要求系统从内存中调出一个页面,将其移入磁盘的对换区中。将哪个页面调出来,就要通过算法来确定。我们把选择换出页面的算法就叫做页面置换算法。 一个好的页面置换算法应具有较低的页面置换概率。 页面置换算法的理论目标: 将那些以后不再会访问的页面换出 把那些在较长时间内不会被访问的页面换出 2.最佳置换算法OPT和先进先出置换算法FIFO 最佳置换算法
4页面置换算法
weixin_46129834的博客
 2685
页面置换算法 页面的换入,换出需要键盘I/O,会有较大的开销,因此好的页面置换算法应该追求更少的缺页率 一. 最佳置换算法(optimal permutation algorithm) 最佳置换算法:每次选择淘汰的页面僵尸以后永不使用,或者在最长时间内不再被访问的页面,这样可以保证最低的缺页率 按最佳置换的规则,往后寻找,最后一个出现的页号就是要淘汰的页面 最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的是哪个页面,操作系统无法提前预判页面访问序列,因此, 最佳
【操作系统】第六章——页面置换算法
欢迎来到我的世界
 4191
分为局部页面置换算法和全局页面置换算法两个版块,以及Belady现象和抖动问题也有提及
[操作系统笔记]页面置换算法
qq_39377889的博客
 863
页面的换入换出需要磁盘I/O,会有较大的开销,因此好的页面置换算法应该追求更少的缺页率。常见的页面置换算法包括OPT、FIFO、LRU、NRU和改进型NRU等。
一文搞懂操作系统页面置换算法
m0_63006478的博客
 1751
首次的3个引用(7,0,1)会引起缺页错误,并被调到这些空帧。因为这个置换,下一个对0的引用将有缺页错误,然后页面1被页面0置换。在内存中找到一些页面,但没有真正使用,将其中的页面拿出。按最佳置换的规则, 往后寻找,最后一个出现的页号就是要淘汰的页面。操作系统确定所需页面的在辅助存储上的位置,但是却发现空闲帧列表上没有空闲帧,所有内存都在使用。然后访问7,首先看内存块没有7,然后开始选择替换的页面,指针经过的内存块把访问位设置为0。过程:第一轮扫描,找(0,0)不改变访问位,所以找到了(0,0)然后置换。
一分钟学会页面置换算法【OPT、FIFO、LRU、NUR】
振华OPPO的博客世界
 2万+
最佳置换(OPT)算法:选择的被淘汰页面,将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面;采用最佳置换算法可保证获得最低的缺页率。但是由于无法预知哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的; 先进先出(FIFO)算法:淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。 最近最久未使用(LRU)算法:根据页面调入内存后的使用情况进行决策,选择最近最久未使用的页面予以淘汰;该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问
操作系统实验五 页面置换算法
最新发布
12-02
页面置换算法是操作系统中用于管理内存的一种算法。当物理内存不足时,操作系统需要将某些页面从内存中置换出去,以便为新的页面腾出空间。常见的页面置换算法包括FIFO、LRU、LFU等。 下面是FIFO页面置换算法的实现方法: 1. 首先创建一个队列,用于存储当前在内存中的页面。 2. 当需要将
————————————————

           

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

二、目标:
如今已经有很多页面置换算法,但是不同页面置换算法的主要目标还是使页面置换频率最低(即缺页率最低)。

三、常见的算法:
1. 最佳置换算法

基本思想:选择以后再也不用的页面;没有的话,选择以后最长时间不用的页面;

实现:无法实现,因为页面的访问顺序无法预知;

特点:无法实现,仅具有理论意义;

2. 先进先出置换算法(FIFO)

基本思想:基于程序的顺序执行特点选择到达内存最早的页面,予以淘汰;

实现:页面在内存中按时间排序;

特点:效果不佳(程序不是严格顺序执行);

3. 最近最久未使用置换算法(LRU)

基本思想:基于程序运行的局部性原理,选择最近以来最久未使用的页面,予以淘汰;

实现:移位寄存器,栈;

特点:调度性能教好;

4. 第二次机会算法

第二次机会算法的基本思想是与FIFO相同的,但是有所改进,避免把经常使用的页面置换出去。当选择置换页面时,依然和FIFO一样,选择最早置入内存的页面。但是二次机会法还设置了一个访问状态位。所以还要检查页面的的访问位。如果是0,就淘汰这页;如果访问位是1,就给它第二次机会,并选择下一个FIFO页面。当一个页面得到第二次机会时,它的访问位就清为0,它的到达时间就置为当前时间。如果该页在此期间被访问过,则访问位置为1。这样给了第二次机会的页面将不被淘汰,直至所有其他页面被淘汰过(或者也给了第二次机会)。因此,如果一个页面经常使用,它的访问位总保持为1,它就从来不会被淘汰出去。

第二次机会算法可视为一个环形队列。用一个指针指示哪一页是下面要淘汰的。当需要一个存储块时,指针就前进,直至找到访问位是0的页。随着指针的前进,把访问位就清为0。在最坏的情况下,所有的访问位都是1,指针要通过整个队列一周,每个页都给第二次机会。这时就退化成FIFO算法了。

5. 时钟算法

需要用到页表项当中的访问位,当一个页面被装入内存时,把该位初始化为0,然后如果这个页面被访问(读/写),则把该位置为1;把各个页面组织成环形链表(类似于钟表面),把指针指向最老的页面(最先进来);当发生一个缺页中断时,考察指针所指向的最老页面,若它的访问位为0,立即淘汰;若访问位为1,则把该位置为0,然后指针往下移动一格,如此下去,直至找到被淘汰的页面,然后把指针移动到它的下一格。

6. 改进型的时钟置换算法

简单的时钟置换算法仅考虑到一个页面最近是否被访问过。事实上,如果被淘汰的页面没有被修改过,就不需要执行I/O操作写回外存。只有被淘汰的页面被修改过时,才需要写回外存。因此,除了考虑一个页面最近有没有被访问过之外,操作系统还应考虑页面有没有被修改过。在其他条件都相同时,应优先淘汰没有修改过的页面,避免I/O操作。这就是改进型的时钟置换算法的思想。

修改位=0,表示页面没有被修改过;修改位=1,表示页面被修改过。为方便讨论,用(访问位,修改位)的形式表示各页面状态。如(1,1)表示一个页面近期被访问过,且被修改过。算法规则:将所有可能被置换的页面排成一个循环队列。

实例:

第一轮:从当前位置开始扫描到第一个(0, 0)的帧用于替换。本轮扫描不修改任何标志位。

第二轮:若第一轮扫描失败,则重新扫描,查找第一个(0, 1)的帧用于替换。本轮将所有扫描过的帧访问位设为0。

第三轮:若第二轮扫描失败,则重新扫描,查找第一个(0, 0)的帧用于替换。本轮扫描不修改任何标志位。

第四轮:若第三轮扫描失败,则重新扫描,查找第一个(0, 1)的帧用于替换。

由于第二轮已将所有帧的访问位设为0,因此经过第三轮、第四轮扫描一定会有一个帧被选中,因此改进型CLOCK置换算法选择一个淘汰页面最多会进行四轮扫描。

7. 最近未使用页面置换算法(NRU)算法

找到最久没有使用的页面置换出去,页面被访问时设置访问位为1,修改时设置修改位为1,为便于说明,用R位标识访问位,M位标识修改位。R位定期清0;

此算法可以把页面分四类:

未被访问,未被修改的R=M=0
未被访问,被修改R=0,M=1
被访问,未被修改R=1,M=0
被访问,被修改R=1,M=1
置换方式:系统从类类编号最小的非空类随机挑选一个置换。

8. 最不常用算法

用一个软件模拟LRU,该算法将每个页面与一个软件计数器相关联。计数器的初值为0。每次时钟中断时,由操作系统扫描内存中所有的页面,将每个页面的R位(它是0或1)加到它的计数器上。这个计数器大体上跟踪了各个页面被访问的频繁程度。发生缺页中断时,则置换计数器值最小的页面。
    NFU的缺点是它不从不忘记任何事,比如一个页面之前频繁被访问,导致这个它的计数器很大,但是后来它不被访问了,而它的计数器的值还是很大,所以它一直不会被置换出去。

9. 老化算法

老化算法是对NFU算法的修改,其修改包括两个部分,首先,在R位被加进之前将计数器右移一位,其次,将R位加到计数器最左端的位而不是最右端的位。
    老化算法中的计数器只有有限位数,如果时钟滴答是20ms,8位一般是够用的。假如一个页面160ms没有被访问过,那么它很可能并不重要。

10. 工作集页面置换算法

相关定义:

一个进程当前正在使用的页面的集合称为它的工作集。
若每执行几条指令就产生一次缺页中断,那么就称这个程序发生了颠簸。
在单纯的分页系统中,刚启动进程时,在内存中并没有页面。在CPU试图读取第一条指令时就会产生一次缺页中断,使操作系统装入含有第一条指令的页面,其他由访问全局数据和堆栈引起的缺页中断通常会紧接着发生。一段时间后,进程需要的大部分页面都已经在内存了,进程开始在较少缺页中断的情况下运行。这个策略被称为请求调页。
有不少分页系统会设法跟踪进程的工作集,以确保在让进程运行以前,它的工作集就已经在内存中了。该方法称为工作集模型,大大减少缺页中断率。在进程前装入其工作集页面也称为预先调页。工作集是随时间变化的。
事实上大多数程序会任意访问一小部分页面,工作集随时间缓慢变化。当程序重新开始时,就有可能根据它上次结束时的工作集对要用到的页面做一个合理的推测,预先调页就是在程序IXUS运行之前预先装入推测的工作集的页面。
按照以前的方法,定义工作集为前1000万次内存访问锁使用过的页面的集合,那么现在就可以这样定义:工作集即是过去10ms中的内存访问所用到的页面的集合。这样的模型很合适而且更容易实现。要注意到,每个进程只计算它自己的执行时间。因此,如果一个进程在T时刻开始,在(T+100ms)的时刻使用了40msCPU时间,对工作集而言,它的时间就是40ms。一个程序从它开始执行到当前所实际使用的CPU时间总数通常称作当前实际运行时间。通过这个近似的方法,进程的工作集可以被称为在过去的τ秒实际运行时间中它所访问过的页面的集合。
基于工作集的页面置换算法就是找出一个不在工作集中的页面并淘汰它。每个表项至少包含两条信息:上次使用该页面的近似时间和R(访问位)。
算法过程:

过程:扫描所有的页面检查R位:

若(R == 1)则设置上次使用时间为当前实际时间,表示缺页中断时该页面正在被使用。

若(R == 0 且生存时间>τ)则移出这个页面,该页面在当前时钟滴答中未被访问,不在工作集中,用新的页面置换它。扫描会继续进行以更新剩余的表项。

若(R == 0 且生存时间≤τ)则记住最小时间。如果该页面R==0且生存时间小于或等于τ,则页面仍在工作集中。把页面临时保存下来,但是要记住生存时间最长(“上次使用时间”的最小值)。如果扫描完整个页表却没有找到合适的淘汰的页面,如果找到了一个或多个R == 0的页面,就淘汰生存时间最长的页面。

     在最坏的情况下,在当前时钟滴答中,所有的页面都被访问过了,也就是所有的R都为1,因此就随机选择一个页面淘汰,如果有的话最好选一个干净页面。

工作集时钟页面置换算法

工作集时钟页面置换算法是在工作集和时钟算法的基础上改进的。

在工作集页面置换算法中中,当缺页中断发生后,需要扫描整个页表才能确定被淘汰的页面,因此基本工作集算法是比较费时的。
    基于时钟算法,并且使用了工作集信息,被称为WSClock(工作集时钟)算法。由于它实现简单,性能较好,所以在实际工作中得到了广泛应用。与时钟算法一样,所需的数据结构是一个以页框为元素的循环表。

最初,该表为空,当装入第一个页面后,把它加到该表中。随着更多的页面加入,它们形成一个环。每个表项包含来自基本工作集算法的上次使用时间,以及R位和M位。
    与时钟算法一样,每次缺页中断时,首先检查指针指向的页面。如果R位是1,该页面在当前时钟滴答中就被使用过,那么该页面就不适合被淘汰。然后把该页面的R位置为0,指针指向下一个页面,并重复该算法。
    如果R位是0,查看生存时间,如果生存时间大于τ并且该页面是干净的,它就不在工作集中,而且在磁盘上它有一个有效的副本。申请此页框,并把新页面放在其中。如果该页面已经被修改过,就不立即申请此页框,为了避免由于调度写磁盘操作引起的进程切换,指针继续向前走,算法继续对下一个页面进行操作,有可能存在一个旧的而且干净的页面可以立即使用。
    原则上,所有的页面都有可能因为磁盘I/O在某个时钟周期被调度,为了降低磁盘阻塞,需要设置一个限制,即最大只允许写回n个页面。一旦达到该限制,就不允许调度新的写操作。
指针经过一圈返回它的起点,有两种情况:

至少调用了一次写操作
没有调用过写操作
    对于第一种情况,执行了写操作的页面已经是干净的了,置换遇到的第一个干净页面,这个页面不一定是第一个被调度写操作的页面,因为硬盘驱动程序为了优化性能可能已经把写操作重排序了。
    对于第二种情况,所有的页面都在工作集中,否则将至少执行了一个写操作。由于缺乏额外的信息,一个简单的方法就是随便置换一个干净的页面来使用,扫描中需要记录干净页面的位置。如果不存在干净页面,就选定当前页面并把它协会磁盘。
算法对比:

算法

优缺点

最优算法

不可实现,但可以用作基准

NRU(最近未使用)算法

和LRU算法很相似

FIFO(先进先出)算法

有可能会抛弃重要的页面

第二次机会算法

比FIFO 有较大的改善

时钟算法

实际使用

LRU(最近最少)算法

比较优秀,但是很难实现

NFU(最不经常使用)算法

和LRU很类似

老化算法

近似LRU的高效算法

工作集算法

实施起来开销很大

工作集时钟算法

比较有效的算法

补充:

在 UNIX 系统中采用的页面置换算法是时钟CLOCK算法,

Windows NT的页面置换算法采用先进先出(FIFO)算法。

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览58074 人正在系统学习中

ALGORITHM LOL
关注

4


27

0

OS之页面置换算法
Andy的博客
 2693
之前几篇博客记录了OS内存管理的一些知识和技术,接下来将继续深入,介绍一些页面置换算法,这里包括一些我们大家都略有耳闻的算法。 置换算法 当出现缺页故障时,需要从外存调入新的页面到内存中去,而如果此时内存已满,于是就要按照一定策略置换一些物理页帧出来,这就是置换算法的目的。而置换算法的目标就是尽量减少页面的调入调出次数 页面置换算法主要可分为两大类: 局部页面置换算法 置换页面的选择范围仅限于...
页面置换算法 (全)
Wu_yongtao的博客
 4788
页面置换算法 (全) 文章目录页面置换算法 (全)(1)最佳页面置换算法 OPT (OPTimal replacement)(2)先进先出页面置换算法 FIFO (First In First Out)(3)第二次机会页面置换算法 SC (Second Chance)(4)时钟页面置换算法 CLOCK(5)最近最少使用页面置换算法 LRU (Least Recently Used)(6)最不经常使用页面置换算法 LFU (Least frequently used)(7)最近未使用页面置换算法 NRU (N
三种页面置换算法(详解)_最佳置换算法
2-2
1)原理:把内存中驻留时间最久的页面置换算法予以淘汰 2)举例: 在分页中,采用FIFO页面置换算法,序列 4,3,2,1,4,5,4,3,2,1,5,当物理块为3时,计算缺页次数和缺页率? 算法执行如下操作步骤: 程序运行时,先将4,3,2三个页面...
页面置换算法详解
2-2
进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区,其中选择调出页面的算法就称为页面置换算法。 好的页面置换算法应有较低的页面更换频率,也就是说,应将以后...
基于C语言实现的两种常见页面置换算法(OPT,LRU)
04-02
针对一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率。要求设计主界面以灵活选择某算法,且以下算法都要实现 (1)最佳淘汰算法(OPT) (2)最近最少访问页面算法(LRU) 2.要有体现算法比较的程序输出,比如:缺页率和页面置换次数等。 3.采用固定分配局部置换,且可以在程序中实现块数重新分配。 具有抖动判断和Belady异常判断机制 根据设计要求实现对页面置换算法的模拟以及 进程状态转换的模拟。 1.根据自己输入 物理块数量,访问页面总数,要访问的页面号,  2.然后选择所需的置换算法 OPT,LRU 二选一. 计算过程,并得出 缺页次数,缺页率,置换次数,命中率的结果; 3.进行虚拟存储算法设计分析。
操作系统课程设计——页面置换算法模拟实现
02-24
内含源代码及课程设计报告。 设计目的:存储管理的主要功能之一是合理的分配空间。请求页式存储管理是一种常用的虚拟存储管理技术。通过对请求页式存储管理中页面置换算法的模拟设计,掌握请求页式存储管理页面置换算法,并进一步理解虚拟存储技术的原理及特点。 设计内容:设计一个虚拟存储及内存工作区,使用先进先出算法(FIFO),理想型淘汰算法(OPT),最近最久未使用算法(LRU)计算不同内存容量下的缺页率,模拟表示出不同算法内存中页面的变化情况,并对不同内存容量下不同算法的缺页率进行比较分析(例如,可以采用图表、动画等方式来表示各种算法的执行过程;可以用图表方式来对比分析不同算法的缺页率)。
页面置换算法_时钟信号置换
1-31
页面置换算法的概念: 出现缺页异常,则需调入新页面二内存已满时,置换算法选择被置换的物理页面。尽可能减少页面的调如调出次数,把未来不再访问或短期内不访问的页面调出。 页面锁定framelocking:常驻的逻辑页面,操作系统的关键部分,要求相...
几种常见页面置换算法分析_scr算法
2-5
评价一个算法的优劣,可通过在一个特定的存储访问序列(页面走向)上运行它,并计算缺页数量来实现。 1 先入先出法(FIFO) 最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置...
实验报告3页面置换算法演示.doc
08-23
页面置换算法演示 实验目的 1. 分析内存管理办法中每个页面置换算法原理; 2. 掌握页面置换算法执行过程。 二、实验预备内容 1. 熟悉内存管理办法; 2. 熟悉页面置换算法原理; 3. 熟悉不同页面置换算法的置换过程。 要求自选编程语言实现最佳置换算法、先进先出页面置换算法和最近最久未使用置换算法的演示置换过程,并给出运行结果(置换次数和缺页率)。
页面置换算法的模拟实现.docx
03-03
(1)设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算各个算法的缺页率。 (2)用C语言实现,要求设计主界面以灵活选择某算法,且以下算法都要实现: a:最佳置换算法(OPT):将以后永不使用的或许是在最长(未来)时间内不再被访问的页面换出。 b: 先进先出算法(FIFO):淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。 c:最近最久未使用算法(LRU):淘汰最近最久未被使用的页面。 (3)程序采用人工的方法选择,依次换策略选择一个可置换的页,并计算它们的缺页率以便比较。
页面置换算法详解(10种)_页面置换算法有哪些
2-3
如果对于虚拟内存,页表,分页等技术还是一知半解的道友可以参考我之前写的一篇博客: 虚拟内存、分页以及页表,建议读者从头往后读,有的页面置换算法是对前面页面置换算法的修改或者性能提升。 当发生缺页中断时,操作系统必须在内存中选择一个...
操作系统 - 页面置换算法_进程数越少cpu利用率
2-8
无法预知每个页面在下次访向前的等待时间。 作为置换算法的性能评价依据,在模拟器上运行某个程序,并记录每一次的页面访问情况,第二遍运行时使用最优算法。 最优页面置换算法(OPT)示例: 先进先出算法(First-In First-Out, FIFO) ...
操作系统 课程设计 页面置换算法FIFO和 LRU
08-14
这是一个自己完成软件工程的操作系统课程课程设计题目:此程序用于模拟虚拟磁盘页面置换算法,实现了FIFO页面置换算法和LRU页面置换算法,获得课程设计优秀的好成绩
页面置换算法
Bit_Dong的博客
 1万+
进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区,其中选择调出页面的算法就称为页面置换算法。好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做。....
几种页面置换算法
热门推荐
wangsifu2009的专栏
 4万+
地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。常见的置换算法有: 1)最佳置换算法(OPT)(理想置换算法) 这是一
一文看懂页面置换算法
m0_74282605的博客
 1371
如果分配给一个进程的物理页面太少,不能包含整个的工作集,既常驻集属于工作集,那么进程将会造成很多的缺页中断,需要频繁地在内存与外存之间替换页面,从而使进程的运行速度变得很慢,将这种状态称为“抖动”。
一文读懂页面置换算法
m0_74282605的博客
 1074
将每一个页面与一个计数器关联,每次时钟终端,扫描所有页面,将每个页面的R位加到计数器上,这样就大致跟踪了每个页面的使用情况。这种算法的思想和队列是一样的,OS维护一个当前在内存中的所有页面的链表,最新进入的页面在尾部,最久的在头部,每当发生缺页中断,就替换掉表头的页面并且把新调入的页面加入到链表末尾。被引用但不活跃的页面同样会被考虑回收,是因为一些页面是守护进程访问的,可能很长时间不再使用。即在最近的一个时钟滴答内,淘汰一个没有被访问但是已经被修改的页面,比淘汰一个被频繁使用但是“clean”的页面要好。
最全面的六种页面置换算法解析(操作系统课程设计)
莫北
 3146
页面置换算法 一、前言 页面置换算法目的是减少对换量从而提高系统的性能。让我们进一步理解内存页面的置换机制,掌握经典页面置换算法的实现方式。从中比较出各个算法之间的优缺点和各自的特点。自己可以掌握各个算法的方法,并运用到其他适应的场景。为了实现页面置换算法采用了当下比较热门的Java语言编写。第一Java中的数据结构比较多,有很多方式模拟物理块存放页面(比如list集合,map集合等)。第二Jav...
一文讲懂页面置换算法,带例题详解
二琳爱吃肉的博客
 1万+
1.什么是页面置换算法? 在进程运行的过程当中,进程所要访问的页面不再内存中,我们就需要把这个不存在的页面调入内存,但内存已经没有空闲空间了,这时候就要求系统从内存中调出一个页面,将其移入磁盘的对换区中。将哪个页面调出来,就要通过算法来确定。我们把选择换出页面的算法就叫做页面置换算法。 一个好的页面置换算法应具有较低的页面置换概率。 页面置换算法的理论目标: 将那些以后不再会访问的页面换出 把那些在较长时间内不会被访问的页面换出 2.最佳置换算法OPT和先进先出置换算法FIFO 最佳置换算法
4页面置换算法
weixin_46129834的博客
 2685
页面置换算法 页面的换入,换出需要键盘I/O,会有较大的开销,因此好的页面置换算法应该追求更少的缺页率 一. 最佳置换算法(optimal permutation algorithm) 最佳置换算法:每次选择淘汰的页面僵尸以后永不使用,或者在最长时间内不再被访问的页面,这样可以保证最低的缺页率 按最佳置换的规则,往后寻找,最后一个出现的页号就是要淘汰的页面 最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的是哪个页面,操作系统无法提前预判页面访问序列,因此, 最佳
【操作系统】第六章——页面置换算法
欢迎来到我的世界
 4191
分为局部页面置换算法和全局页面置换算法两个版块,以及Belady现象和抖动问题也有提及
[操作系统笔记]页面置换算法
qq_39377889的博客
 863
页面的换入换出需要磁盘I/O,会有较大的开销,因此好的页面置换算法应该追求更少的缺页率。常见的页面置换算法包括OPT、FIFO、LRU、NRU和改进型NRU等。
一文搞懂操作系统页面置换算法
m0_63006478的博客
 1751
首次的3个引用(7,0,1)会引起缺页错误,并被调到这些空帧。因为这个置换,下一个对0的引用将有缺页错误,然后页面1被页面0置换。在内存中找到一些页面,但没有真正使用,将其中的页面拿出。按最佳置换的规则, 往后寻找,最后一个出现的页号就是要淘汰的页面。操作系统确定所需页面的在辅助存储上的位置,但是却发现空闲帧列表上没有空闲帧,所有内存都在使用。然后访问7,首先看内存块没有7,然后开始选择替换的页面,指针经过的内存块把访问位设置为0。过程:第一轮扫描,找(0,0)不改变访问位,所以找到了(0,0)然后置换。
一分钟学会页面置换算法【OPT、FIFO、LRU、NUR】
振华OPPO的博客世界
 2万+
最佳置换(OPT)算法:选择的被淘汰页面,将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面;采用最佳置换算法可保证获得最低的缺页率。但是由于无法预知哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的; 先进先出(FIFO)算法:淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。 最近最久未使用(LRU)算法:根据页面调入内存后的使用情况进行决策,选择最近最久未使用的页面予以淘汰;该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问
操作系统实验五 页面置换算法
最新发布
12-02
页面置换算法是操作系统中用于管理内存的一种算法。当物理内存不足时,操作系统需要将某些页面从内存中置换出去,以便为新的页面腾出空间。常见的页面置换算法包括FIFO、LRU、LFU等。 下面是FIFO页面置换算法的实现方法: 1. 首先创建一个队列,用于存储当前在内存中的页面。 2. 当需要将
————————————————

          

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
页面置换算法操作系统中用于管理内存的一种算法。当物理内存不足时,操作系统需要将某些页面从内存中置换出去,以便为新的页面腾出空间。常见页面置换算法包括FIFO、LRU、LFU等。 下面是FIFO页面置换算法的实现方法: 1. 首先创建一个队列,用于存储当前在内存中的页面。 2. 当需要将一个新的页面调入内存时,如果队列未满,则将该页面加入队列尾部;如果队列已满,则将队列头部的页面置换出去,并将新页面加入队列尾部。 3. 当需要置换页面时,选择队列头部的页面进行置换。 下面是LRU页面置换算法的实现方法: 1. 首先创建一个链表,用于存储当前在内存中的页面。 2. 当需要将一个新的页面调入内存时,如果链表未满,则将该页面加入链表尾部;如果链表已满,则将链表头部的页面置换出去,并将新页面加入链表尾部。 3. 当需要置换页面时,选择链表中最久未被访问的页面进行置换。 下面是LFU页面置换算法的实现方法: 1. 首先创建一个链表,用于存储当前在内存中的页面。 2. 当需要将一个新的页面调入内存时,如果链表未满,则将该页面加入链表尾部;如果链表已满,则遍历链表,选择访问次数最少的页面进行置换,并将新页面加入链表尾部。 3. 当需要置换页面时,选择访问次数最少的页面进行置换。 --相关问题--: 1. 什么是页面置换算法? 2. 常见页面置换算法有哪些? 3. 如何实现LRU页面置换算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值