网站大量收购独家精品文档,联系QQ:2885784924

第十章 虚拟内存.ppt

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

第十章 虚拟内存 10.1 背景 第九章所介绍的内存管理算法都是基于一个基本要求:执行指令必须在物理内存中。执行前将整个进程放在内存中。 连续内存分配 分页 分段 覆盖是个例外,但需要程序员特别小心。 必须设计和编写覆盖结构 背景 在许多情况下并不需要将整个程序放到内存中 处理异常错误条件的代码 数组、链表和表通常分配了比实际所需要更多的内存。 程序的某些选项或特点可能很少使用。即使需要完整程序,也并不是在某时刻同时需要 (与覆盖相似) 背景 结论: 如果只保存部分程序在内存中 可运行一个比物理内存大的多的程序 可以有更多程序同时运行 程序运行更快 背景 虚拟内存—物理内存和用户逻辑内存的区分 只有部分运行的程序需要在内存中 因此,逻辑地址空间能够比物理地址空间大 允许若干个进程共享地址空间 允许更多有效进程创建 虚拟内存大于物理内存的示意图 背景 虚拟内存能够通过以下手段来执行: 请求页面调度( 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 页面置换 一个进程可能比物理内存大 多个进程总和可能比物理内存大 过度分配 解决办法 交换 页面置换: 修改页错误处理程序以包括页置换 基本方法 查找所需页在磁盘上的位置 查找一空闲帧: - 如果由空闲帧,那么就使用它. - 如果没有空闲帧, 那么就使用页置换算法 以选择一个牺牲帧 - 将牺牲帧的内容写道磁盘上,改变页表和帧表 将所需页读入(新)空闲帧,改变页表和帧表 重启用户进程 页置换 页面置换 如果没有空闲帧,那么需要两次页传输 通过修改(脏)位来防止页面传输过多—只有被修改的页面才写回磁盘. 通过硬件实现。页内的任何字或字节被写入,硬件就会设置修改位 页面置换完善了逻辑内存和物理内存的划分—在一个较小的物理内存基础之上可以提供一个大的虚拟内存. 为实现请求页面调度必须解决两个主要问题 帧分配算法: 给每个进程分配多少帧 页置换算法: 怎样选择要置换的帧 磁盘 I/O 非常费时-降低缺页率 页置换算法 需要一个最小的缺页率 通过运行一个内存访问的特殊序列(访问序列),计算这个序列的缺页次数 引用串:只考虑页码,任何紧跟着的引用不会出错 内存访问地址顺序: 0100, 0432, 0101, 0612, 0102, 0103, 010

文档评论(0)

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

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

1亿VIP精品文档

相关文档