操作系统——页面置换
一、页面置换算法
\(1.\)最佳\((OPT)\)页面置换算法
将以后永不使用或在(未来)最长时间内不会被访问的页面置换。
假定系统为某进程分配了三个物理块,并考虑有以下页面号引用串:\(1、2、3、4、1、2、5、1、4、2\)
程序运行时,先将\(1、2、3\)三个页面装入内存。
之后进程要访问页面4,出现了缺页现象,即内存中没有页面4,会产生缺页中断。
置换掉内存中页面3,因为之后都不在使用。(当前内存中页面有\(1、2、4\))
接下来是页面\(1、2\),已在内存中,因此不会产生缺页中断。
访问页面5(当前内存中页面有\(1、2、4\)),缺页,将置换掉页面2,因为页面2是三个页面中最晚被访问的。
置换图如下:
\(2.\)先进先出\((FIFO)\)页面置换算法
置换最先进入内存的页面
假定系统为某进程分配了三个物理块,并考虑有以下页面号引用串:\(1、2、3、4、1、2、5、1、4、2\)
程序运行时,先将\(1、2、3\)三个页面装入内存。
访问页面4,出现缺页现象,则置换页面1。因为页面1是最先进入内存的。
其余页面相同。
置换图如下:
\(3.\)最近最久未使用\(LRU\)页面置换算法
赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经理的时间\(t\)。
每次淘汰\(t\)最大的一个页面。
假定系统为某进程分配了三个物理块,并考虑有以下页面号引用串:\(1、2、3、4、2、3、5\)
程序运行时,先将\(1、2、3\)三个页面装入内存。
程序要访问页面4,出现缺页现象,置换页面1,因为页面1是当前内存中 未使用时间最长的。(当前内存中有页面\(4、2、3\))
程序依次访问页面2和页面3。
程序页面访问页面5,页面4是 未使用时间最长的。故置换页面4;
置换图如下:
二、考研真题
\(1.\)
题目
有一个请求分页式虚拟存储器系统,分配给某进程3个物理块,开始时内存中预装入第\(1,2,3\)个页面,该进程的页面访问序列为\(1,2,4,2,6,2,1,5,6,1\)
\((1)\)若采用最佳页面置换算法,则访问过程中发生的缺页率为多少?
\((2)\)若采用\(LRU\)页面置换算法,则访问过程中发生的缺页率为多少?
解答
\((1)\)最佳页面置换算法
程序请求页面1,页面2,未发生缺页现象。(当前内存中页面有\(1、2、3\))
程序请求页面4,发生缺页现象,置换页面3。(当前内存中页面有\(1、2、4\))
程序请求页面2,未发生缺页现象。
程序请求页面6,发生缺页现象,置换页面4。(当前内存中页面有\(1、2、6\))
程序请求页面2,页面1,未发生缺页现象。
程序请求页面5,发生缺页现象,置换页面2。(当前内存中页面有\(1、5、6\))
程序请求页面6,页面1,未发生缺页现象。
置换图如下:
访问次数为:10
缺页次数:3
缺页率:\(3/10=30\%\)
\((2)\)\(LRU\)页面置换算法
程序请求页面1,页面2,未发生缺页现象。(当前内存中页面有\(1、2、3\))
程序请求页面4,发生缺页现象,置换页面3。(当前内存中页面有\(1、2、4\))
程序请求页面2,未发生缺页现象。
程序请求页面6,发生缺页现象,置换页面1。(当前内存中页面有\(6、2、4\))
程序请求页面2,未发生缺页现象。
程序请求页面1,发生缺页现象,置换页面4。(当前内存中页面有\(6、2、1\))
程序请求页面5,发生缺页现象,置换页面6。(当前内存中页面有\(5、2、1\))
程序请求页面6,发生缺页现象,置换页面2。(当前内存中页面有\(5、6、1\))
程序请求页面1,未发生缺页现象。
置换图如下:
访问次数为:10
缺页次数:5
缺页率:\(5/10=50\%\)