第08讲 虚拟内存.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 8.2.3 替换策略 之 替换算法 最佳替换算法(OPT) 选择替换下次访问距当前时间最长的那些页 必须准确知道将来的事件 不可能实现 用来衡量其它算法的标准 F F F * 8.2.3 替换策略 之 替换算法 最近最少使用 (LRU) 替换主存中上次使用距当前最远的页 根据局部性原理,该页也是最近最不可能访问到的页 每个页添加一个最后一次访问的时间标签 开销大 维护一个访问页的栈 开销也大 F F F * 8.2.3 替换策略 之 替换算法 先进先出 (FIFO) 把分配给进程的页帧看做是一个循环缓冲区, 按循环方式移动页 最简单的页替换策略 替换驻留在内存中时间最长的页 这些页可能马上就会再次使用到 F F F * 8.2.3 替换策略 之 替换算法 时钟(Clock) 增加一个使用位 当一页首次加载入内存时,该位为1 当该页被访问时,使用位设成1 当需要进行页替换时,第一个使用位为0的帧被替换 循环扫描 遇到使用位为1的,变成0 当一页被置换时,指针指向缓冲区的下一帧 F F F * 8.2.3 替换策略 之 替换算法 时钟(Clock)例子 * 8.2.3 替换策略 之 替换算法 更有效的时钟替换算法 帧被修改,要写回辅存 增加一位(修改位) 使用位+修改位 u=0;m=0; u=0;m=1; u=1;m=0; u=1;m=1; 替换算法 从指针位置开始扫描,查找第一个u=0;m=0的帧 没找到,找u=0;m=1的帧 对于跳过的帧,使用位设成0 没找到,使用位均位0,转① u=0 m=1 u=1 m=0 u=1 m=0 u=0 m=1 u=0 m=0 * 8.2.3 替换策略 之 算法比较 图8.17 固定分配、局部页替换算法的比较 图8.11(b) 分配给进程帧的数量与缺页率的关系 * 8.2.3 替换策略 之 替换算法 替换未被修改过的页比替换修改过的页代价小 复杂算法 vs. 简单算法 方法:使用简单算法实现复杂算法效率 页缓冲 被替换的页加入两个列表之一 如果页没有被修改,则加入自由页表(未修改页表) 如果页被修改了,则加入修改页表 被替换的页还在内存中 页的高速缓冲功能 被修改的页以簇的方式回写,而非一次一页 * 8.2.4 驻留集管理 研究的是给特定的进程分配多大的主存空间 固定分配策略 可变分配策略 窗口的大小=分配给进程的帧的总数量 窗口的大小对页错误率是有影响的 窗口越大、页错误率越小 W(t, △) 表示该进程在过去的△个虚拟时间单位中被访问到的页的集合。 * 8.2.5 清除策略 用于确定何时将一个被修改过的页写回辅存 请求式清除 当页被替换时回写 预约式请求 成批、预先回写 回顾页缓冲(两个表)--效率高 * 8.2.6 加载控制 研究确定驻留在内存中进程的数目 道数(进程数) 处理器利用率 作业 复习题:8.2、8.3、8.5、8.9 习题:8.1、8.4、8.5、8.11、8.17、8.18 练习 设一个逻辑地址空间有8页,每页1024字节,映射到32块的物理内存上,试问: (1)逻辑地址空间需要多少位来表示? (2)物理地址空间需要多少为来表示? 练习 某虚拟存储器中的用户空间共有32个页面,每页1KB,内存容量为16KB。假定某时刻系统为用户作业的第0、1、2、3页分别分配物理块为5、10、4、7。 试问:虚拟地址0A6F对应的物理地址是多少? 练习 一台机器有48位虚地址和32位物理地址,页面是8K。 试问: 在页表中需要多少个页表项? 一个倒置的页表需要多少页表项? 练习 在某页式虚存储系统中,假定访问内存的时间是10ms,平均缺页中断处理时间按为25ms,平均缺页中断率为5%。 (1)试计算在该虚存储系统中,平均有效访问时间是多少? (2)使用TLB,TLB访问时间忽略不计,TLB的命中率为70%,试计算该系统中平均有效访问时间是多少? 练习 有一个程序要把100*100的数组初始化为“0”,现在假定有两个内存块可以用来存放数组信息,每个内存块的大小为可以存放200个数组元素,数组中的元素按行编址。两个内存块的初始状态都是空,若程序编制如下: (1)Var A:Array[1..100]of Array[1..100] of integer For i:=1 to 100 do For j:=1 to 100 do A[i,j]:=0 (2)Var A:Array[1..100]of Array[1..100] of integer For j:=1 to 100 do For i:=1 to 100 do A[i,j]:=0 当采用LRU页面调度算法时,(1)和(2)两个程序各会产生多少次缺页? 练习 考虑一个进程的访问地址序列

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档