示范之虚拟内存.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
示范之虚拟内存

第九章所介绍的内存管理算法都是基于一个基本要求:执行指令必须在物理内存中。执行前将整个进程放在内存中。 连续内存分配 分页 分段 覆盖是个例外,但需要程序员特别小心。 必须设计和编写覆盖结构;在许多情况下并不需要将整个程序放到内存中 处理异常错误条件的代码 数组、链表和表通常分配了比实际所需要更多的内存。 程序的某些选项或特点可能很少使用。即使需要完整程序,也并不是在某时刻同时需要 (与覆盖相似);结论: 如果只保存部分程序在内存中 可运行一个比物理内存大的多的程序 可以有更多程序同时运行 程序运行更快;虚拟内存—物理内存和用户逻辑内存的区分 只有部分运行的程序需要在内存中 因此,逻辑地址空间能够比物理地址空间大 允许若干个进程共享地址空间 允许更多有效进程创建;*; 虚拟内存能够通过以下手段来执行: 请求页面调度( Demand paging ) 用户观点是分段,而操作系统可以通过请求页面调度实现这一观点 类似于分页系统加上交换。交换程序对整个进程操作,调页程序只对进程的单个页进行操作 请求分段调度( Demand segmentation ) ;*;只有在一个页需要的时候才把它换入内存. 需要很少的I/O 需要很少的内存 快速响应 多用户 需要页?查阅此页 无效的访问?中止 不在内存?换入内存 ;在每一个页表的表项有一个有效- 无效位相关联 有效:相关的页既合法且也在内存中 无效:相关的页不在进程的逻辑地址空间内或者有效但是在磁盘上;*;如果只访问真正需要的并已在内存中的页,那么进程就可如同所有页都已调入一样正常运行。 当进程试图访问那些尚未调入到内存的页时? 页错误陷阱(缺页) OS查看页表来决定 无效引用 ? 终止 仅仅不在内存 找一个空闲帧 将需要的页调入空闲帧 重置页表,有效位为1 重启指令 ;*;;页错误的概率(缺页率)0 ? p ? 1.0 如果p = 0 ,没有缺页 如果p = 1, 每次访问都缺页 有效访问时间(Effective Access Time ,EAT) EAT = (1 – p) * 内存访问时间+ p * 页错误时间 页错误时间主要包含三个方面: 1、处理页错误中断 2、读入页 3、重新启动进程 ;内存访问时间 = 100 ns 平均页错误处理时间 = 25 ms 有效访问时间 EAT = (1 – p)*100 + p*25,000,000 = 100 + 24,999,900*p 性能与缺页率直接有关 如果需要性能降低不超过 10% - 110100 - 1025000000p - p 0.000 000 4 毫秒,符号ms(millisecond)????????? 1s =1000ms 微秒,符号μs(microsecond)???? 1ms =1000μs 纳秒,符号ns(nanosecond)????????1μs =1000ns ;一个进程可能比物理内存大 多个进程总和可能比物理内存大 过度分配 解决办法 交换 页面置换: 修改页错误处理程序以包括页置换 ;查找所需页在磁盘上的位置 查找一空闲帧: - 如果由空闲帧,那么就使用它. - 如果没有空闲帧, 那么就使用页置换算法 以选择一个牺牲帧 - 将牺牲帧的内容写道磁盘上,改变页表和帧表 将所需页读入(新)空闲帧,改变页表和帧表 重启用户进程 ;*;如果没有空闲帧,那么需要两次页传输 通过修改(脏)位来防止页面传输过多—只有被修改的页面才写回磁盘. 通过硬件实现。页内的任何字或字节被写入,硬件就会设置修改位 页面置换完善了逻辑内存和物理内存的划分—在一个较小的物理内存基础之上可以提供一个大的虚拟内存. ;;需要一个最小的缺页率 通过运行一个内存访问的特殊序列(访问序列),计算这个序列的缺页次数 引用串:只考虑页码,任何紧跟着的引用不会出错;;*;FIFO算法: 可以创建一个FIFO 队列来管理内存中的所有页 调入页时,将它加到队列的尾部 当必须置换一页时,将选择最旧的页;引用串: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 3 帧 4帧 FIFO 置换算法 – Belady异常 期望: 增加帧数 ? 降低缺页率;*;被置换的页将是最长时间不被使用的页 很难实现,因为需要引用串的未来知识 4帧的例子 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 最优页置换的作用:用来衡量你的算法的效率;*;LRU置换为每个页记录该页最后的使用时间 当必须进行页置换时,LRU选择最近最长未被使用的页。;引用串: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3,

文档评论(0)

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

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

1亿VIP精品文档

相关文档