虚拟内存之页面置换算法

内存空间不够,OS将内存中暂时用不到的信息换出到外存。但页面的换入/出需要磁盘I/O,系统开销较大。页面置换算法要更少的缺页率。

一、最佳置换(OPT)-optimal

1.思想

每次选择淘汰以后永不使用、在最长时间内不再被访问的页面,以此保证最低的缺页率。

2.实现

如果有可用空闲内存块,缺页不必进行页面置换,直接调入内存即可。

如果没有可用空闲内存块,往右找最远的页面即是要被淘汰的页面,将其换出

2.计算

缺页中断次数=内存块数+页面置换次数

缺页率=缺页中断次数/总访问次数

3.特点

实现前提是操作系统会预先知道访问页面的序列,实际是无法实现的,是一种理想化算法。

二、先进先出置换算法(FIFO)

1.思想

每次选择淘汰早出最早进入内存的页面,以此保证最低的缺页率。

2.实现

按调入内存顺序将页面排成一个队列。

如果有可用空闲内存块,缺页不必进行页面置换,直接将其插入队列队尾即可。

如果没有可用空闲内存块,淘汰队头页面,将新调入页面插入队尾

3.特点

当为进程分配的物理块数增大时,缺页次数也会增加。

盲目淘汰最先进入的页面,而未考虑其访问次数,算法性能差。

三、最近最久未使用置换算法(LRU)-least recently used

1.思想

每次选择淘汰最近最久未使用的页面,以此保证最低的缺页率。

2.实现

为每个页面建一个页表项,并用访问字段记录该页面由上次被访问以来所经历的时间。

如果有可用空闲内存块,缺页不必进行页面置换,直接调入内存即可。

如果没有可用空闲内存块,淘汰页面中t值最大的页面,将其换出。(即往左找最远的页面即为要淘汰的页面)

3.特点

需要专门硬件支持,实现困难,开销大

四、时钟置换算法(CLOCK)

即最近未用算法(NRU, not recently used)

1.思想

每次选择淘汰最近未用的页面,以此保证最低的缺页率。

2.实现

为每个页面设置一个访问位,再将内存中页面通过指针链接成一个循环队列。被访问时访问位置为1。

按可用空闲内存块,将页面调入并链接成一个循环队列,访问位均是1.

如果没有可用空闲内存块,淘汰访问位为0的页面,将其换出;如果访问位都是1,将其置为0,暂不换出,开始第二轮扫描时,淘汰访问位为0的页面

3.特点

只考虑到页面最近是否被访问,未考虑淘汰页面的状态(是否被修改)进行置换

3.改进

优先淘汰未被访问未被修改过(0,0) ------> (0,1)的页面无需执行I/O操作写回外存。增加一个修改位,0-未被修改,1-已被修改。

用(访问位,修改位)表示各页面状态,进行置换。

相关推荐
wunaiqiezixin1 天前
MIT 6.S081 xv6 源码精读(Scheduling):sched、scheduler
linux·unix·os·xv6·mit6.s081
wunaiqiezixin11 天前
MIT 6.S081 lazy 前置篇(lab5):缺页异常、惰性分配、写时复制、页面换出
linux·unix·os·xv6·mit6.s081
驱动探索者12 天前
RISC-V 指令集深度解析:从 ISA 到 Zephyr
网络·计算机·操作系统·os
TechEdu20260613 天前
[操作系统]操作系统文件系统与输入输出:架构、行为与调优
操作系统·计算机科学·os
haoly198915 天前
xv6-examples-输出helloworld
os·fork·xv6·文件描述符·dup
无小道18 天前
深入理解 Linux 异步 I/O:从 epoll 到 io_uring
os
wunaiqiezixin19 天前
MIT 6.S081 syscall 实验篇(lab2):System call tracing (moderate)
linux·unix·os·xv6·mit6.s081
^yi1 个月前
【Linux系统编程】对操作系统的理解
linux·运维·服务器·操作系统·系统调用·os
星马梦缘2 个月前
操作系统计算题专项练习(15题)
操作系统·os·银行家算法·段页式
岑梓铭3 个月前
考研408《操作系统》复习笔记,第二章《2.3.3 + 2.3.4 经典同步问题、管程》
笔记·考研·操作系统·408·os