计算机操作系统原理白金版教程第10章 虚拟内存.ppt

计算机操作系统原理白金版教程第10章 虚拟内存.ppt

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

韩都衣舍官方旗舰店 韩都衣舍女装您值得拥有 / 好狗友 / 广东韩都衣舍批发 / 韩都衣舍旗舰店 / * 第10章 虚拟内存 主要内容 背景 请求页面调度 进程创建 页面置换 帧分配 系统颠簸 其他考虑 * 10.1 背景 虚拟内存(virtual memory):允许进程的执行不必完全在内存中,程序可以比物理内存大 在许多情况下不需要将整个程序放到内存中,例: 处理异常错误条件的代码(几乎不执行) 数组、链表和表通常分配了比实际所需更多的内存 程序的某些选项或特点可能很少使用 能够执行只有部分在内存中的程序的好处 程序不再受现有的物理内存空间限制 更多程序可同时执行,CPU利用率相应增加 用户程序会运行的更快 虚拟内存的实现-请求页面调度(demand paging) * 10.2 请求页面调度 请求页面调度~分页+交换 基本概念 有效-无效位:区分哪些页在内存中,哪些页在磁盘上 页错误陷阱(fault trap):访问标记为无效的页引起,处理程序: 检查进程的页表,确定应用是否合法 非法,终止进程。否则,表示引用有效但尚未调入页面,转3) 找到一个空闲帧 调度一个磁盘操作,将所需页调入刚分配的帧 修改进程的内部表和页表,表示该页已在内存中 重新开始因页错误陷阱中断的指令 * 纯粹请求页面调度(pure demand paging):只有在需要时才将页调入内存 引用的局部性(locality of reference) 支持请求页面调度的硬件 页表(有效-无效位) 次级存储器(保存不在内存中的页) 说明:为保证在页错误后能够重新运行指令,还需要相当的软件和额外的体系结构限制 * 2、请求页面调度的性能 有效访问时间=(1-p)x ma + p x 页错误时间 p:页错误概率 ma:内存访问时间 页错误时间有很多,三个主要的如下 处理页错误中断 读入页 重新启动进程 有效访问时间与页错误率直接有关 对于请求页面调度,降低页错误率很重要 交换空间的处理和使用 进程开始时将整个文件映象复制到交换空间,从交换空间调页 开始时从文件系统调页,出现置换时将页写入交换空间 直接从文件系统中调页 * 10.3 进程创建 由虚拟内存带来两种用于提高进程创建和运行性能的技术 1、写时拷贝(写时复制copy-on-write) 减少不必要的内存复制 父进程与子进程开始时共享同一页面,页面标记为写时复制 如果任何一个进程需要对页进行写操作,创建一个共享页的拷贝 Windows 2000、Linux、Solaris 2 Vfork(virtual memory fork) 父进程挂起,子进程使用父进程的地址空间 * 2、内存映射(memory mapping)文件 允许一部分虚拟内存与文件逻辑相关联,可将一磁盘块映射成内存的一页(或多页) 开始的文件访问按普通请求页面调度来进行 以后文件的读、写按通常的内存访问来处理,不使用系统调用 read和write,简化了文件访问和使用 * 10.4 页面置换 问题由来:出现页错误后找不到空闲帧可用——页置换(page replacement) 基本方法:如果没有空闲帧,就查找当前不在使用的帧,并使之空闲(释放) 包含置换的页错误处理程序 查找所需页在磁盘上的位置 查找一空闲帧 如果有,使用 如果没有,使用页置换算法选择一个“牺牲”帧(victim frame) 将牺牲帧的内容写到磁盘上,改变页表和帧表 将所需页读入空闲帧,改变页表和帧表 重启用户进程 * 修改位(modify bit)(脏位(dirty bit)) 设置:从磁盘读入后发生修改,置换时要写到磁盘上 未设置:从磁盘读入后未发生修改,不用写回磁盘 降低用于处理页错误所需要的时间 页置换算法:如何选择要置换的帧(最小页错误率) 帧分配算法:决定为进程分配多少内存 引用串(reference string):内存的引用序列 人工生成 跟踪一个给定系统并记录每个内存引用地址。为降低数据量: 对给定页大小,只考虑页码,不需要完整地址 若有一个对页p的引用,则任何紧跟着的对页p的引用决不会产生页错误 引用串通常格式:1,4,1,6,1,6,1,2,3,5 * 1、FIFO页置换 思想:为每个页记录该页调入内存的时间,置换时选择最旧的页 实现:创建一个FIFO队列,管理内存中的所有页,置换队列的首页(并不需要记录确切时间) 分析:容易理解和实现,性能并不总是很好 例(可用帧数量3)引用串如下: 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 R 1 0 7 R 2 0 7 R 2 1 7 2 1 0 2 1 0 R 2 1 0 R 3 1 0 3 2 0 3

文档评论(0)

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

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

1亿VIP精品文档

相关文档