三种页面置换算法(详解)

01月20日 收藏 0 评论 1 前端开发

三种页面置换算法(详解)

文章声明:转载来源:https://blog.csdn.net/qq_41431406/article/details/98305546

地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法
一、先进先出(FIFO)
1)原理:把内存中驻留时间最久的页面置换算法予以淘汰
2)举例:
在分页中,采用FIFO页面置换算法,序列 4,3,2,1,4,5,4,3,2,1,5,当物理块为3时,计算缺页次数和缺页率?
算法执行如下操作步骤:

· 程序运行时,先将4,3,2三个页面装入内存。

· 之后,当进程要访问页面1的时候,将会产生缺页中断此时根据先进先出置换算法,因为页面4是最先进入内存的,所以将页面4换出;同理4 3 5分别替换3,2,1.

· 当进程4要访问时,因为它已存在在内存所以不必产生缺页中断; 当页面2要访问时,又引起缺页中断淘汰4;

· 依次类推直到最后一个页面访问完。图为采用先进先出置换算法的置换图。由图可得,采用先进先出置换算法发生了9次缺页中断。先进先出的页面置换比最佳置换算法的页面置换正好多了一倍;

当数字不在框中,横着找最长的连续数字(划掉),将新的数字填入
当数字在框中,则不做改变,即空白列

缺页次数=总列数-空白列数=9
缺页率=缺页数/总列数=75%

(3)特点
优点:先进先出算法实现简单,是最直观的一个算法
缺点:先进先出的性能最差,因为与通常页面的使用规则不符合,所以实际应用少

二、最近最久未使用(LRU)
(1)原理:选择最近且最久未被使用的页面进行淘汰
(2)举例:
在分页中,采用LRU页面置换算法,序列 7,0,1,2,0,3,0,4,2,3,0,3,2,0,1,7,0,1当物理块为3时,计算缺页次数和缺页率?

· 程序运行时,先将7,0,1三个页面装入内存。

· 之后,当进程要访问页面2的时候,将会产生缺页中断。此时根据最近最久未使用置换算法,因为页面7是最近最久未被使用的的,所以将页面7淘汰;

· 当进程0要访问时,因为它已存在在内存所以不必产生缺页中断;

· 在进程要访问页面3的时候,因为页面1是最近最久未被使用的,所以将页面1淘汰;

· 依次类推直到最后一个页面访问完。下图为采用最近最久未使用的置换算法的置换图。由图可得,采用最近最久未使用置换算法发生了9次缺页中断。

算法执行如下操作步骤:

当数字不在框中,从头找第一个未被划掉的数字进行替换
当数字在框中,划掉从前往后数和数字一样的第一个数字

3)特点
优点:由于考虑程序访问的时间局部性,一般能有较好的性能;实际应用多
缺点:实现需要较多的硬件支持,会增加硬件成本

三、最佳置换算法(OPT)
(1)原理:每次选择未来长时间不被访问的或者以后永不使用的页面进行淘汰。
(2)举例:假定系统为某进程分配了三块物理块,并有以下页面:
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1

算法执行如下操作步骤:
· 程序运行时,先将7,0,1三个页面装入内存。

· 之后,当进程要访问页面2的时候,将会产生缺页中断。此时根据最佳置换算法,因为页面7要在第18次才能访问,页面0在第5次访问,页面1在第14次访问,页面7最久不被使用,所以将页面7淘汰;

· 当进程0要访问时,因为它已存在在内存所以不必产生缺页中断; 当页面3要访问时,又引起缺页中断淘汰1;

· 依次类推直到最后一个页面访问完。下图为采用最佳置换算法的置换图。由图可得,采用最佳置换算法发生了6次缺页中断。

当数字不在框中,从当前向后找最后一个将要访问的数字进行替换
当数字在框中,则不做改变,继续向后

(3)特点
缺点:最佳置换算法是一种理想化算法,具有较好的性能,但是实际上无法实现(无法预知一个进程中的若干页面哪一个最长时间不被访问);
优点:最佳置换算法可以保证获得最低的缺页率

C 1条回复 评论
墨石

跟着大佬输出,感觉能量满满

发表于 2022-08-20 21:00:00
0 0