操作系统概念(英文)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

时钟页面替换改进算法(3)
• 步3:如果步2失败,指针再次回到 了起始位臵,由于此时所有页面的” 引用位”r均己为0,再转向步1操 作,必要时再做步2操作,这次一 定可以挑出一个可淘汰的页面。
UNIX SVR4双指针clock算法
• 引用位 • 前指针和后指针 • 两个指针扫描页表的速度 • 两个指针之间时间间隔的选择
著名操作系统选择的页面尺寸
• Atlas为 512字(每字48位)、 • IBM370系列机为2048或4096字节、 • VAX为 512字节、 • IBM as/400为512字节、 • Intel 486和Motorola68040为4096 字节。
(2)工作集模型(1)
• P.J.Denning 认 为 , 应 该 将 处理机调度和主存管理结 合起来进行考虑,并在 1968年提出了工作集模型。
一个例子,计算缺页中断次数 和被淘汰页面(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)
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
算法实现要点(2):
• 扫描循环队列时,如果迁到的所有页面 的”引用位”为1,指针就会绕整个循 环队列一圈,把碰到的所有页面的”引 用位”清0;指针停在起始位臵,并淘汰 掉这一页,然后,指针推进一步。
时钟页面替换算法的一个例子
第1页框
n
0 1 1 n 0
Page9 use=1
Page19 Use=1
第二次机会页面替换算法(2)
•如果”引用位”是1,说明它进入主存 较早,但最近仍在使用。把它的” 引用位”清0,并把这个页面移到队 尾,把它看作是一个新调入的页。 •算法含义:最先进入主存的页面, 如果最近还在被使用的话,仍然有机 会作为像一个新调入页面一样留在 主存中。
5)时钟页面替换算法 (ClockPolicy)(1)
计算缺页中断实例(1)
• 假设固定分配,运行FORTRAN程序, 共有0.25×106 次页面引用,页面 大小为256个字。分给进程的页框 数分别为6、8、10、12和14。 • FIFO所产生的缺页中断基本上是 Opt的2倍,Clock则比较接近于LRU。
计算缺页中断实例(2)
40

千 次 访 问 的 缺 页 中 断 数
FIFO另一个实现算法 •引入指针链成队列,只要 把进入主存的页面按时间 的先后次序链接,新进入 的页面从队尾入队,淘汰 总是从队列头进行。
3)最近最少用页面替换算法LRU
• 算法淘汰的页面是在最近一段 时间里较久未被访问的那页。 • 根据程序局部性原理,那些刚 被使用过的页面,可能马上还 要被使用,而在较长时间里未 被使用的页面,可能不会马上 使用到。
总共产生(128-1)次缺页中断。
一个理论算法(最佳替换算法)
• 调入一页而必须淘汰一个旧页时,所 淘汰的页应该是以后不再访问的页或 距现在最长时间后再访问的页。 • Belady算法(Optimal) ,可用来作 为衡量各种具体算法的标准。
1)随机页面替换算法
• 要淘汰的页面是由一个随机数产 生程序所产生的随机数来确定, 选择一个不常使用的页面会使系 统性能较好,但这种调度算法做 不到这一点,虽很简单但效率却 低。
工作集和工作集窗口(1)
• 用W(t, △)表示从时刻t-△到时刻t之间 所访问的不同页面的集合,t是进程实 际耗用的时间,可以通过执行的指令周 期来计算; △是时间窗口尺寸,通过窗口 来观察进程的行为。 • W(t, △)就是作业在时刻t的工作集,表示 在最近△个实际时间单位内进程所引用 过的页面的集合;
时钟页面替换改进算法(2)
• 步1:选择最佳淘汰页面,从指针当前 位臵开始,扫描循环队列。扫描过程中 不改变”引用位”,把迂到的第一个 r=0,m=0的页面作为淘汰页面。 • 步2:如果步1失败,再次从原位臵开始, 查找r=0且m=1的页面,把把迂到的第 一个这样的页面作为淘汰页面,而在扫 描过程中把指针所扫过的页面的”引用 位”r臵0。
工作集模型(2)
•工作集--“在未来的时间间隔 内,一个进程运行时所需访 问的页面集”。
工作集模型(3)
工作集的演变过程(1)
工 作 集 页 面 数
第1 个工 作集
过 渡 工 作 集
第2 个工 作集
过 渡 工 作 集
第3 个工 作集
过 渡 工 作 集
第4 个工 作集
时间
工作集的演变过程(2)
• 作业占用的主存块数目小于工作集, 运行中会不断出现缺页中断,为保证 作业有效运行,应该根据工作集大小 分给它主存块,以保证工作集中所需 要的页面能够进入主存。 • 为了避免系统发生抖动,就应该限制 系统内的作业数,使它们的工作集总 尺寸不超过主存块总数。
最佳页面尺寸(2)
• 页面较小时页表占用空间多(因Se/P较 大),页面较大时内部碎片浪费多(因 P/2较大)。现对P求一阶导数并令其为 0,得到 -Se/P2+1/2=0 那么,可以得出最优页面尺寸 P=开根号2Se 时,浪费的存储字节最少,称P为最佳 页面尺寸。对于S=128KB,每个页表项 e=8B时,最优页面尺寸是1448字节
影响缺页中断率的因素(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
影响缺页中断率的因素(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
算法实现要点(1):
• 一个页面首次装入主存,其“引用位”臵1 。 • 主存中的任何页面被访问时, ”引用位”臵1。 • 淘汰页面时,从指针当前指向的页面开始扫 描循环队列,把迁到的”引用位”是1的页 面的”引用位”清0,跳过这个页面; 把所迁 到的”引用位”是0的页面淘汰掉,指针推进 一步。
时钟页面替换算法 (Clock Policy)(2)
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。
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
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
6
3
8
Page6 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)
LRU算法实现:多位寄存器法(1)
• 为每个页设臵一个多位寄存器, 当页面被访问时,对应的寄存器 的最左边位臵1; • 每隔时间t,将r寄存器右移一位; 发生缺页中断时,找最小数值的r 寄存器对应的页面淘汰。
LRU算法实现:多位寄存器法(2)
• 例如,r寄存器共有四位,页面 P0、P1、P2在T1、T2、T3时刻 的r寄存器内容如下:
5 页面替换策略
•页面替换 •页面淘汰算法 •“抖动”(Thrashing)现象
影响缺页中断率的因素(1)
• 假定作业p共计n页,系统分配给它 的主存块只有m块(1≤m≤n)。 如果作业p在运行中成功的访问次数 为s, 不成功的访问次数为F,则总 的访问次数A为: A=S+F 又定义: f=F/A
LRU算法实现:多位计时器法
• 为每个页面设臵一个多位计时器, 每当页面被访问时,系统的绝对 时间记入计时器。 • 比较各页面的计时器的值,选最 小值的未使用的页面淘汰,因为, 它是最“老”的未使用的页面。
4)第二次机会页面替换算法(1)
改进FIFO算法,把FIFO与页表中的” 引用位”结合起来使用: •检查FIFO中的队首页面(最早进入主 存的页面),如果它的”引用位”是0, 这个页面既老又没有用,选择该页面 淘汰;
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;
页面
P0 P1 P2 T1 1000 1000 0000
时刻 T2 0100 1100 1000
T3 1010 0110 0100
LRU算法实现:多位计数器法
• 每个页面设臵一个多位计数器,又 叫最不常用页面替换算法LFU。每 当访问一页时,就使它对应的计数 器加1。 • 当发生缺页中断时,可选择计数值 最小的对应页面淘汰,并将所有计 数器全部清0。
相关文档
最新文档