- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)