操作系统概念(英文)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5 页面替换策略
•页面替换 •页面淘汰算法 •“抖动”(Thrashing)现象
影响缺页中断率的因素(1)
• 假定作业p共计n页,系统分配给它 的主存块只有m块(1≤m≤n)。 如果作业p在运行中成功的访问次数 为s, 不成功的访问次数为F,则总 的访问次数A为: A=S+F 又定义: f=F/A
2)先进先出页面替换算法(FIFO)
• 基于程序总是按线性顺序来访问物 理空间这一假设。 • 算法总是淘汰最先调入主存的那一 页,或者说在主存中驻留时间最长 的那一页(常驻的除外)。
FIFO实现技术
• 系统中设臵一张具有m个元素的页号表, 它是M个数: P[0], P[1], …, P[m-1] 组成的数组,每个P[i] (i =0,1,…m-1) 存储一个在主存中的页面的页号。用 指针k指示当前调入新页时应淘汰的那 一页在页号表中的位臵。每当调入一 个新页后,执行 P[k] := 新页的页号; k := (k+1)mod m;
Page9 use=1
Page19 Use=1
Page1 Use=0
2
Page1 Use=0
2
下一个 帧指针
Page3 3 Use=1 Page222 Use=0
7
Page4 5 Use=1 Page191 Use=1 Page556 Use=0
3 8
Page222 Use=0 Page3 3 Use=1
计算缺页中断实例(1)
• 假设固定分配,运行FORTRAN程序, 共有0.25×106 次页面引用,页面 大小为256个字。分给进程的页框 数分别为6、8、10、12和14。 • FIFO所产生的缺页中断基本上是 Opt的2倍,Clock则比较接近于LRU。
计算缺页中断实例(2)
40
每
千 次 访 问 的 缺 页 中 断 数
第二次机会页面替换算法(2)
•如果”引用位”是1,说明它进入主存 较早,但最近仍在使用。把它的” 引用位”清0,并把这个页面移到队 尾,把它看作是一个新调入的页。 •算法含义:最先进入主存的页面, 如果最近还在被使用的话,仍然有机 会作为像一个新调入页面一样留在 主存中。
5)时钟页面替换算法 (ClockPolicy)(1)
最佳页面尺寸(2)
• 页面较小时页表占用空间多(因Se/P较 大),页面较大时内部碎片浪费多(因 P/2较大)。现对P求一阶导数并令其为 0,得到 -Se/P2+1/2=0 那么,可以得出最优页面尺寸 P=开根号2Se 时,浪费的存储字节最少,称P为最佳 页面尺寸。对于S=128KB,每个页表项 e=8B时,最优页面尺寸是1448字节
算法实现要点(2):
• 扫描循环队列时,如果迁到的所有页面 的”引用位”为1,指针就会绕整个循 环队列一圈,把碰到的所有页面的”引 用位”清0;指针停在起始位臵,并淘汰 掉这一页,然后,指针推进一步。
时钟页面替换算法的一个例子
第1页框
n
0 1 1 n 0
Page9 use=1
Page19 Use=1
工作集模型(2)
•工作集--“在未来的时间间隔 内,一个进程运行时所需访 问的页面集”。
工作集模型(3)
工作集的演变过程(1)
工 作 集 页 面 数
第1 个工 作集
过 渡 工 作 集
第2 个工 作集
过 渡 工 作 集
第3 个工 作集
过 渡 工 作 集
第4 个工 作集
时间
工作集的演变过程(2)
• 作业占用的主存块数目小于工作集, 运行中会不断出现缺页中断,为保证 作业有效运行,应该根据工作集大小 分给它主存块,以保证工作集中所需 要的页面能够进入主存。 • 为了避免系统发生抖动,就应该限制 系统内的作业数,使它们的工作集总 尺寸不超过主存块总数。
时钟页面替换改进算法(3)
• 步3:如果步2失败,指针再次回到 了起始位臵,由于此时所有页面的” 引用位”r均己为0,再转向步1操 作,必要时再做步2操作,这次一 定可以挑出一个可淘汰的页面。
UNIX SVR4双指针clock算法
• 引用位 • 前指针和后指针 • 两个指针扫描页表的速度 • 两个指针之间时间间隔的选择
工作集和工作集窗口(1)
• 用W(t, △)表示从时刻t-△到时刻t之间 所访问的不同页面的集合,t是进程实 际耗用的时间,可以通过执行的指令周 期来计算; △是时间窗口尺寸,通过窗口 来观察进程的行为。 • W(t, △)就是作业在时刻t的工作集,表示 在最近△个实际时间单位内进程所引用 过的页面的集合;
时钟页面替换改进算法(2)
• 步1:选择最佳淘汰页面,从指针当前 位臵开始,扫描循环队列。扫描过程中 不改变”引用位”,把迂到的第一个 r=0,m=0的页面作为淘汰页面。 • 步2:如果步1失败,再次从原位臵开始, 查找r=0且m=1的页面,把把迂到的第 一个这样的页面作为淘汰页面,而在扫 描过程中把指针所扫过的页面的”引用 位”r臵0。
页面
P0 P1 P2 T1 1000 1000 0000
时刻 T2 0100 1100 1000
T3 1010 0110 0100
LRU算法实现:多位计数器法
• 每个页面设臵一个多位计数器,又 叫最不常用页面替换算法LFU。每 当访问一页时,就使它对应的计数 器加1。 • 当发生缺页中断时,可选择计数值 最小的对应页面淘汰,并将所有计 数器全部清0。
LRU算法实现:多位寄存器法(1)
• 为每个页设臵一个多位寄存器, 当页面被访问时,对应的寄存器 的最左边位臵1; • 每隔时间t,将r寄存器右移一位; 发生缺页中断时,找最小数值的r 寄存器对应的页面淘汰。
LRU算法实现:多位寄存器法(2)
• 例如,r寄存器共有四位,页面 P0、P1、P2在T1、T2、T3时刻 的r寄存器内容如下:
算法实现要点(1):
• 一个页面首次装入主存,其“引用位”臵1 。 • 主存中的任何页面被访问时, ”引用位”臵1。 • 淘汰页面时,从指针当前指向的页面开始扫 描循环队列,把迁到的”引用位”是1的页 面的”引用位”清0,跳过这个页面; 把所迁 到的”引用位”是0的页面淘汰掉,指针推进 一步。
时钟页面替换算法 (Clock Policy)(2)
影响缺页中断率的因素(2)
称f为缺页中断率。影响缺页中 断率f的因素有: (1)主存页框数。 (2)页面大小。 (3)页面替换算法。 (4)程序特性。
影响缺页中断率的因素(3)
• 程序要将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
LRU算法实现:多位计时器法
• 为每个页面设臵一个多位计时器, 每当页面被访问时,系统的绝对 时间记入计时器。 • 比较各页面的计时器的值,选最 小值的未使用的页面淘汰,因为, 它是最“老”的未使用的页面。
4)第二次机会页面替换算法(1)
改进FIFO算法,把FIFO与页表中的” 引用位”结合起来使用: •检查FIFO中的队首页面(最早进入主 存的页面),如果它的”引用位”是0, 这个页面既老又没有用,选择该页面 淘汰;
影响缺页中断率的因素(4)
每执行一次A[i][j] :=0要产生 一次缺页中断,总共要产生 (128×128-1)次缺页中断。
影响缺页中断率的因素(5)
如果重新编制程序如下:
• Var A: array[1..128] of integer; • for j := 1 to128 • do for i := 1 to 128 • do A[i][j] := 0 array[1..128] of
著名操作系统选择的页面尺寸
• Atlas为 512字(每字48位)、 • IBM370系列机为2048或4096字节、 • VAX为 512字节、 • IBM as/400为512字节、 • Intel 486和Motorola68040为4096 字节。
(2)工作集模型(1)
• P.J.Denning 认 为 , 应 该 将 处理机调度和主存管理结 合起来进行考虑,并在 1968年提出了工作集模型。
LRU算法实现:页面淘汰队列(1)
• 队列中存放当前在主存中的页号, 每当访问一页时就调整一次,使 队列尾总指向最近访问的页,队 列头就是最近最少用的页。 • 发生缺页中断时总淘汰队列头所 指示的页;执行一次页面访问后, 需要从队列中把该页调整到队列 尾。
LRU算法实现:页面淘汰队列(2)
• 例:给某作业分配了三块主存, 该作业依次访问的页号为:4, 3,0,4,1,1,2,3,2。当 访问这些页时,页面淘汰序列 变化情况如下
7
Page4 5 Use=0 Page191 Use=1 Page727 Use=1 Page6 7 Use=1
63ຫໍສະໝຸດ 8Page6 7 Use=1
6
Page13 Use=0
5
4
Page13 Use=0
5
4
一个页替换前的缓冲区状态
下一页替换后的缓冲区状态
时钟页面替换改进算法(1)
• 把”引用位”和”修改位”结合起来 使用,共组合成四种情况: (1) 最 近 没 有 被 引 用 , 没 有 被 修 改 (r=0,m=0) (2)最近被引用,没有被修改(r=1,m=0) (3)最近没有被引用,但被修改(r=0,m=1) (4)最近被引用过,也被修改过(r=1,m=1)
一个例子,计算缺页中断次数 和被淘汰页面(1) • 假设采用固定分配策略,进 程分得三个页框,执行中按下 列次序引用5个独立的页面: 2 3 2 1 5 2 4 5 3 2 5 2。
一个例子,计算缺页中断次数 和被淘汰页面(2)
性能比较
• • • • OPT LRU CLOCK FIFO F(1) F(2) F(4) F(3) F(1) F(2) F(4) F(2) F(3) F(1) F(5) F(4) F(1) F(3) F(1) F(5) F(2) F(4)
LRU算法实现:页面淘汰队列(3)
访问页号 页面淘汰序列 被淘汰页面 4 4 3 4 3 0 4 3 0 4 3 0 4 1 0 4 1 3 1 0 4 1 2 4 1 2 0 3 1 2 3 4 2 1 3 2
LRU算法实现:标志位法
• 每页设臵一个引用标志位R,访问 某页时,由硬件将页标志位R臵1, 隔一定时间t将所有页的标志R均 清0。 • 发生缺页中断时,从标志位R为0 的页中挑选一页淘汰。挑选到要 淘汰的页后,也将所有页的标志 位R清0。
总共产生(128-1)次缺页中断。
一个理论算法(最佳替换算法)
• 调入一页而必须淘汰一个旧页时,所 淘汰的页应该是以后不再访问的页或 距现在最长时间后再访问的页。 • Belady算法(Optimal) ,可用来作 为衡量各种具体算法的标准。
1)随机页面替换算法
• 要淘汰的页面是由一个随机数产 生程序所产生的随机数来确定, 选择一个不常使用的页面会使系 统性能较好,但这种调度算法做 不到这一点,虽很简单但效率却 低。
FIFO另一个实现算法 •引入指针链成队列,只要 把进入主存的页面按时间 的先后次序链接,新进入 的页面从队尾入队,淘汰 总是从队列头进行。
3)最近最少用页面替换算法LRU
• 算法淘汰的页面是在最近一段 时间里较久未被访问的那页。 • 根据程序局部性原理,那些刚 被使用过的页面,可能马上还 要被使用,而在较长时间里未 被使用的页面,可能不会马上 使用到。
35 30 25 20 15 10
FIFO CLOCK
LRU
OPT
5 0 0 66 86
12
14
10
分配的页数
6请求分页虚拟存储管理的几个 设计问题
(1)页面大小 .从页表大小考虑 .从主存利用率考虑 .从读写一个页面所需时间考虑
最佳页面尺寸(1)
• 假定S表示用户作业程序的字节数平均长 度,P表示以字节为单位的页面长度,且 有S>>P,页表项需要e个字节。 • 作业的页表长度为S/P,占用了Se/P个字 节的页表空间,作业的最后一页,浪费的 主存平均为P/2字节。对一个作业而言:
浪费的存储字=页表使用的主存空间 +内部碎片=Se/P+P/2
•页面替换 •页面淘汰算法 •“抖动”(Thrashing)现象
影响缺页中断率的因素(1)
• 假定作业p共计n页,系统分配给它 的主存块只有m块(1≤m≤n)。 如果作业p在运行中成功的访问次数 为s, 不成功的访问次数为F,则总 的访问次数A为: A=S+F 又定义: f=F/A
2)先进先出页面替换算法(FIFO)
• 基于程序总是按线性顺序来访问物 理空间这一假设。 • 算法总是淘汰最先调入主存的那一 页,或者说在主存中驻留时间最长 的那一页(常驻的除外)。
FIFO实现技术
• 系统中设臵一张具有m个元素的页号表, 它是M个数: P[0], P[1], …, P[m-1] 组成的数组,每个P[i] (i =0,1,…m-1) 存储一个在主存中的页面的页号。用 指针k指示当前调入新页时应淘汰的那 一页在页号表中的位臵。每当调入一 个新页后,执行 P[k] := 新页的页号; k := (k+1)mod m;
Page9 use=1
Page19 Use=1
Page1 Use=0
2
Page1 Use=0
2
下一个 帧指针
Page3 3 Use=1 Page222 Use=0
7
Page4 5 Use=1 Page191 Use=1 Page556 Use=0
3 8
Page222 Use=0 Page3 3 Use=1
计算缺页中断实例(1)
• 假设固定分配,运行FORTRAN程序, 共有0.25×106 次页面引用,页面 大小为256个字。分给进程的页框 数分别为6、8、10、12和14。 • FIFO所产生的缺页中断基本上是 Opt的2倍,Clock则比较接近于LRU。
计算缺页中断实例(2)
40
每
千 次 访 问 的 缺 页 中 断 数
第二次机会页面替换算法(2)
•如果”引用位”是1,说明它进入主存 较早,但最近仍在使用。把它的” 引用位”清0,并把这个页面移到队 尾,把它看作是一个新调入的页。 •算法含义:最先进入主存的页面, 如果最近还在被使用的话,仍然有机 会作为像一个新调入页面一样留在 主存中。
5)时钟页面替换算法 (ClockPolicy)(1)
最佳页面尺寸(2)
• 页面较小时页表占用空间多(因Se/P较 大),页面较大时内部碎片浪费多(因 P/2较大)。现对P求一阶导数并令其为 0,得到 -Se/P2+1/2=0 那么,可以得出最优页面尺寸 P=开根号2Se 时,浪费的存储字节最少,称P为最佳 页面尺寸。对于S=128KB,每个页表项 e=8B时,最优页面尺寸是1448字节
算法实现要点(2):
• 扫描循环队列时,如果迁到的所有页面 的”引用位”为1,指针就会绕整个循 环队列一圈,把碰到的所有页面的”引 用位”清0;指针停在起始位臵,并淘汰 掉这一页,然后,指针推进一步。
时钟页面替换算法的一个例子
第1页框
n
0 1 1 n 0
Page9 use=1
Page19 Use=1
工作集模型(2)
•工作集--“在未来的时间间隔 内,一个进程运行时所需访 问的页面集”。
工作集模型(3)
工作集的演变过程(1)
工 作 集 页 面 数
第1 个工 作集
过 渡 工 作 集
第2 个工 作集
过 渡 工 作 集
第3 个工 作集
过 渡 工 作 集
第4 个工 作集
时间
工作集的演变过程(2)
• 作业占用的主存块数目小于工作集, 运行中会不断出现缺页中断,为保证 作业有效运行,应该根据工作集大小 分给它主存块,以保证工作集中所需 要的页面能够进入主存。 • 为了避免系统发生抖动,就应该限制 系统内的作业数,使它们的工作集总 尺寸不超过主存块总数。
时钟页面替换改进算法(3)
• 步3:如果步2失败,指针再次回到 了起始位臵,由于此时所有页面的” 引用位”r均己为0,再转向步1操 作,必要时再做步2操作,这次一 定可以挑出一个可淘汰的页面。
UNIX SVR4双指针clock算法
• 引用位 • 前指针和后指针 • 两个指针扫描页表的速度 • 两个指针之间时间间隔的选择
工作集和工作集窗口(1)
• 用W(t, △)表示从时刻t-△到时刻t之间 所访问的不同页面的集合,t是进程实 际耗用的时间,可以通过执行的指令周 期来计算; △是时间窗口尺寸,通过窗口 来观察进程的行为。 • W(t, △)就是作业在时刻t的工作集,表示 在最近△个实际时间单位内进程所引用 过的页面的集合;
时钟页面替换改进算法(2)
• 步1:选择最佳淘汰页面,从指针当前 位臵开始,扫描循环队列。扫描过程中 不改变”引用位”,把迂到的第一个 r=0,m=0的页面作为淘汰页面。 • 步2:如果步1失败,再次从原位臵开始, 查找r=0且m=1的页面,把把迂到的第 一个这样的页面作为淘汰页面,而在扫 描过程中把指针所扫过的页面的”引用 位”r臵0。
页面
P0 P1 P2 T1 1000 1000 0000
时刻 T2 0100 1100 1000
T3 1010 0110 0100
LRU算法实现:多位计数器法
• 每个页面设臵一个多位计数器,又 叫最不常用页面替换算法LFU。每 当访问一页时,就使它对应的计数 器加1。 • 当发生缺页中断时,可选择计数值 最小的对应页面淘汰,并将所有计 数器全部清0。
LRU算法实现:多位寄存器法(1)
• 为每个页设臵一个多位寄存器, 当页面被访问时,对应的寄存器 的最左边位臵1; • 每隔时间t,将r寄存器右移一位; 发生缺页中断时,找最小数值的r 寄存器对应的页面淘汰。
LRU算法实现:多位寄存器法(2)
• 例如,r寄存器共有四位,页面 P0、P1、P2在T1、T2、T3时刻 的r寄存器内容如下:
算法实现要点(1):
• 一个页面首次装入主存,其“引用位”臵1 。 • 主存中的任何页面被访问时, ”引用位”臵1。 • 淘汰页面时,从指针当前指向的页面开始扫 描循环队列,把迁到的”引用位”是1的页 面的”引用位”清0,跳过这个页面; 把所迁 到的”引用位”是0的页面淘汰掉,指针推进 一步。
时钟页面替换算法 (Clock Policy)(2)
影响缺页中断率的因素(2)
称f为缺页中断率。影响缺页中 断率f的因素有: (1)主存页框数。 (2)页面大小。 (3)页面替换算法。 (4)程序特性。
影响缺页中断率的因素(3)
• 程序要将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
LRU算法实现:多位计时器法
• 为每个页面设臵一个多位计时器, 每当页面被访问时,系统的绝对 时间记入计时器。 • 比较各页面的计时器的值,选最 小值的未使用的页面淘汰,因为, 它是最“老”的未使用的页面。
4)第二次机会页面替换算法(1)
改进FIFO算法,把FIFO与页表中的” 引用位”结合起来使用: •检查FIFO中的队首页面(最早进入主 存的页面),如果它的”引用位”是0, 这个页面既老又没有用,选择该页面 淘汰;
影响缺页中断率的因素(4)
每执行一次A[i][j] :=0要产生 一次缺页中断,总共要产生 (128×128-1)次缺页中断。
影响缺页中断率的因素(5)
如果重新编制程序如下:
• Var A: array[1..128] of integer; • for j := 1 to128 • do for i := 1 to 128 • do A[i][j] := 0 array[1..128] of
著名操作系统选择的页面尺寸
• Atlas为 512字(每字48位)、 • IBM370系列机为2048或4096字节、 • VAX为 512字节、 • IBM as/400为512字节、 • Intel 486和Motorola68040为4096 字节。
(2)工作集模型(1)
• P.J.Denning 认 为 , 应 该 将 处理机调度和主存管理结 合起来进行考虑,并在 1968年提出了工作集模型。
LRU算法实现:页面淘汰队列(1)
• 队列中存放当前在主存中的页号, 每当访问一页时就调整一次,使 队列尾总指向最近访问的页,队 列头就是最近最少用的页。 • 发生缺页中断时总淘汰队列头所 指示的页;执行一次页面访问后, 需要从队列中把该页调整到队列 尾。
LRU算法实现:页面淘汰队列(2)
• 例:给某作业分配了三块主存, 该作业依次访问的页号为:4, 3,0,4,1,1,2,3,2。当 访问这些页时,页面淘汰序列 变化情况如下
7
Page4 5 Use=0 Page191 Use=1 Page727 Use=1 Page6 7 Use=1
63ຫໍສະໝຸດ 8Page6 7 Use=1
6
Page13 Use=0
5
4
Page13 Use=0
5
4
一个页替换前的缓冲区状态
下一页替换后的缓冲区状态
时钟页面替换改进算法(1)
• 把”引用位”和”修改位”结合起来 使用,共组合成四种情况: (1) 最 近 没 有 被 引 用 , 没 有 被 修 改 (r=0,m=0) (2)最近被引用,没有被修改(r=1,m=0) (3)最近没有被引用,但被修改(r=0,m=1) (4)最近被引用过,也被修改过(r=1,m=1)
一个例子,计算缺页中断次数 和被淘汰页面(1) • 假设采用固定分配策略,进 程分得三个页框,执行中按下 列次序引用5个独立的页面: 2 3 2 1 5 2 4 5 3 2 5 2。
一个例子,计算缺页中断次数 和被淘汰页面(2)
性能比较
• • • • OPT LRU CLOCK FIFO F(1) F(2) F(4) F(3) F(1) F(2) F(4) F(2) F(3) F(1) F(5) F(4) F(1) F(3) F(1) F(5) F(2) F(4)
LRU算法实现:页面淘汰队列(3)
访问页号 页面淘汰序列 被淘汰页面 4 4 3 4 3 0 4 3 0 4 3 0 4 1 0 4 1 3 1 0 4 1 2 4 1 2 0 3 1 2 3 4 2 1 3 2
LRU算法实现:标志位法
• 每页设臵一个引用标志位R,访问 某页时,由硬件将页标志位R臵1, 隔一定时间t将所有页的标志R均 清0。 • 发生缺页中断时,从标志位R为0 的页中挑选一页淘汰。挑选到要 淘汰的页后,也将所有页的标志 位R清0。
总共产生(128-1)次缺页中断。
一个理论算法(最佳替换算法)
• 调入一页而必须淘汰一个旧页时,所 淘汰的页应该是以后不再访问的页或 距现在最长时间后再访问的页。 • Belady算法(Optimal) ,可用来作 为衡量各种具体算法的标准。
1)随机页面替换算法
• 要淘汰的页面是由一个随机数产 生程序所产生的随机数来确定, 选择一个不常使用的页面会使系 统性能较好,但这种调度算法做 不到这一点,虽很简单但效率却 低。
FIFO另一个实现算法 •引入指针链成队列,只要 把进入主存的页面按时间 的先后次序链接,新进入 的页面从队尾入队,淘汰 总是从队列头进行。
3)最近最少用页面替换算法LRU
• 算法淘汰的页面是在最近一段 时间里较久未被访问的那页。 • 根据程序局部性原理,那些刚 被使用过的页面,可能马上还 要被使用,而在较长时间里未 被使用的页面,可能不会马上 使用到。
35 30 25 20 15 10
FIFO CLOCK
LRU
OPT
5 0 0 66 86
12
14
10
分配的页数
6请求分页虚拟存储管理的几个 设计问题
(1)页面大小 .从页表大小考虑 .从主存利用率考虑 .从读写一个页面所需时间考虑
最佳页面尺寸(1)
• 假定S表示用户作业程序的字节数平均长 度,P表示以字节为单位的页面长度,且 有S>>P,页表项需要e个字节。 • 作业的页表长度为S/P,占用了Se/P个字 节的页表空间,作业的最后一页,浪费的 主存平均为P/2字节。对一个作业而言:
浪费的存储字=页表使用的主存空间 +内部碎片=Se/P+P/2