4.52.4页面替换策略 ●页面替换 当主存空间已装满而又要装入新页时,必须按一定的 算法把已在主存的一些页调出去,这个工作称页面替 换 页面替换就是用来确定应该淘汰哪页的算法,也称淘汰 算法 选用了一个不适合的算法,就会出现这样的现象:刚被 淘汰的页面又立即要用,因而又要把它调入,而调入 不久再被淘汰,淘汰不久再被调入。如此反复,使得 整个系统的页面调度非常频繁以至于大部时间都化在 来回调度页面上。这种现象叫做“抖动”( Thrashing) 又称“颠簸”,一个好的调度算法应减少和避免抖动 现象
4.5.2.4 页面替换策略 页面替换 当主存空间已装满而又要装入新页时,必须按一定的 算法把已在主存的一些页调出去,这个工作称页面替 换。 页面替换就是用来确定应该淘汰哪页的算法,也称淘汰 算法。 选用了一个不适合的算法,就会出现这样的现象:刚被 淘汰的页面又立即要用,因而又要把它调入,而调入 不久再被淘汰,淘汰不久再被调入。如此反复,使得 整个系统的页面调度非常频繁以至于大部时间都化在 来回调度页面上。这种现象叫做“抖动”(Thrashing), 又称“颠簸” ,一个好的调度算法应减少和避免抖动 现象
替换策略要处理的是 ◆当把一个新的页面调入主存时,选择己在主存 的哪个页面作替换。由于下列因素,使得替换 策略变得比较困难 ①分给每个活跃进程多少页框? ②页面替换时,仅限于缺页中断进程还是包括 主存中所有页面? ③在被考虑的压面集合中,选出哪个页面进行 替换?
替换策略要处理的是: 当把一个新的页面调入主存时,选择己在主存 的哪个页面作替换。由于下列因素,使得替换 策略变得比较困难: ①分给每个活跃进程多少页框? ②页面替换时,仅限于缺页中断进程还是包括 主存中所有页面? ③在被考虑的压面集合中,选出哪个页面进行 替换?
个理论算法 假定作业p共计n页,而系统分配给它的主存块 只有m块(m,n均为正整数,且1≤m≤n),即 最多主存中只能容纳该作业的m页。如果作业 p在运行中成功的访问次数为s(即所访间的页 在主存中),不成功的访问次数为F(即缺页 中断次数),则总的访问次数A为: CA=S+F 又定义: Cf=F/A
一个理论算法 假定作业p共计n页,而系统分配给它的主存块 只有m块(m,n均为正整数,且1≤m≤n),即 最多主存中只能容纳该作业的m页。如果作业 p在运行中成功的访问次数为s(即所访问的页 在主存中), 不成功的访问次数为F(即缺页 中断次数),则总的访问次数A为: A = S + F 又定义: f = F / A
●则称f为缺页中断率。影响缺页中断率f的因 素有: ●●主存页框数。作业分得的主存块数多,则 缺页中断率就低,反之,缺页中断率就高 ●●页面大小。如果划分的页面大,则缺页中 断率就低,否则缺页中断率就高 ●●页面替换算法。 ●●程序特性。程序编制的方法不同,对缺页 中断的次数有很大影响,程序的局部性要好
则称f为缺页中断率。影响缺页中断率f的因 素有: l主存页框数。作业分得的主存块数多,则 缺页中断率就低,反之,缺页中断率就高。 l页面大小。如果划分的页面大,则缺页中 断率就低,否则缺页中断率就高。 l页面替换算法。 l程序特性。程序编制的方法不同,对缺页 中断的次数有很大影响,程序的局部性要好
●一个程序要将128×128的数组置初值“0 现假定分给这个程序的主存块数只有一块,页面的尺寸为每 页128个字,数组中的元素每一行存放在一页中,开始时第 页在主存。若程序如下编制 Var A: array[1. 128] of array [1.128]of integer, for j: =1 to 128 do for i =1 to 128 do A[0:=0 则每执行一次A[]:=0就要产生一次缺页中断,于是总 共要产生(128×128-1)次缺页中断。如果重新编制这个 程序如下 Var A: arrayl1. 128] of array[. 128] of integer; forj: =1 to128 do for i=1 to 128 doA[而:=0 ●那么,总共只产生(128-1)次缺页中断
一个程序要将128×128的数组置初值“0” 。 现假定分给这个程序的主存块数只有一块,页面的尺寸为每 页128个字,数组中的元素每一行存放在一页中,开始时第 一页在主存。若程序如下编制: Var A: array[1..128] of array [1..128] of integer; for j := 1 to 128 do for i := 1 to 128 do A[i][j]:=0 则每执行一次A[i][j] :=0就要产生一次缺页中断,于是总 共要产生(128×128-1)次缺页中断。如果重新编制这个 程序如下: Var A: array[1..128] of array[1..128] of integer; for j := 1 to128 do for i := 1 to 128 do A[i][j] := 0 那么,总共只产生(128-1)次缺页中断