- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Chapter9:VirtualMemory
AboutVirtualMemory关于虚存不能总玩虚的,要虚实结合虚的部分:用来吹的,需要做得大一点实的部分:可以做的小一点
虚存vs.实存虚存特点:大CPU的地址线是32根的,那就意味着进程的虚存空间可以达到2^32字节,也就是4G那么大CPU地址线到了64根,更大了物理内存特点:小(相比与虚存来说)64M=128M=256M=512M=1G,2G,4G….也是越做越大,但是应用程序对内存的需求也越来越大,但是比起虚存的进步速度,那可就是小巫见大巫了
虚实之间的衔接实际的逻辑页面并不都是虚无的代码、数据等,都被放在磁盘(外存)的某个地方在需要的时候,需要将在外存里面的内存装载到内存中来的
虚实之间的衔接实际的逻辑页面并不都是虚无的代码、数据等,都被放在磁盘(外存)的某个地方在需要的时候,需要将在外存里面的内存装载到内存中来的蓝色的不在内存望把蓝色的这个逻辑页面从外存调入到物理内存中来
虚实之间的衔接实际的逻辑页面并不都是虚无的代码、数据等,都被放在磁盘(外存)的某个地方在需要的时候,需要将在外存里面的内存装载到内存中来的紫色的已经在内存,访问没有问色的表示已经在内存里的页蓝色的表示尚未加载到内存的页外存
虚实之间的衔接实际的逻辑页面并不都是虚无的代码、数据等,都被放在磁盘(外存)的某个地方在需要的时候,需要将在外存里面的内存装载到内存中来的访问蓝色的页面,需要将其从外存中调出色的表示已经在内存里的页蓝色的表示尚未加载到内存的页外存
按需调页的硬件支持调页的硬件支持缺页异常(PageFault)怎么产生:访问一个逻辑页面(CPU发出一条指令)指令在逻辑页面2里面,但是查页表的时候,发现相应页表项为空硬件报告异常
PageFault页故障处理流程操作系统检查进程页表:是非法地址访问?终止进程只是页面未在内存=调页Getemptyframe找到一个空闲物理页Swappageintoframe将所需页面调入选中的物理页Resettables更新页表Setvalidationbit=vRestarttheinstructionthatcausedthepagefault
9.2DemandPaging
按需调页按需调页机制的实现好坏,对计算机系统整体性能有重要影响假设p为发生页错误的概率,ma为内存直接访问时间,那么 有效访问时间=(1-p)*ma+p*页错误处理时间通常页错误处理时间ma页错误处理过程中,需要启动I/O来从磁盘中将相关逻辑页面调入内存三个主要的页处理时间:(1)处理缺页中断(2)读入页(I/O)(3)重新启动进程9.2.2按需调页的性能=这个比较慢=这个也可以快=这个可以快
9.2DemandPaging
按需调页可以具体来算一下假设平均页错误处理时间为8ms,内存访问时间为200ns,那么有效内存访问时间=(1-p)*200ns+p*8ms假设希望整体性能下降不要超过5%,那么算一下p不能超过多少?p0.000001259.2.2按需调页的性能
9.3Copy-On-Write(COW)
写时复制之前,讨论进程创建时,按照按需调页的机制,可以仅调入包括第一条指令的页,从而能很快地开始执行而Linux下的fork系统调用采用的是另一种手段:在进程初始的时候采取类似于页面共享的技术,使得在创建进程的初始都不需要按需调页达到的目的:最小化新建进程时所必须分配的新页面数量
9.3Copy-On-Write(COW)
写时复制传统做法(早期做法):fork()马上为子进程创建一个父进程地址空间的副本AB进程P1进程P2
9.3Copy-On-Write(COW)
写时复制传统做法(早期做法):fork()马上为子进程创建一个父进程地址空间的副本AB进程P1进程P2子进程完全是父进程的一个复制品A的副本B的副本缺点:完全复制开销大,可能不是所有的页都需要这样被复制的
9.3Copy-On-Write(COW)
写时复制从Linux操作系统下的fork()系统调用入手,考虑这个COW策略AB进程P1进程P2fork之后,父子页面先共享
9.3Copy-On-Write(COW)
写时复制从Linux操作系统下的fork()系统调用入手,考虑这个COW策略AB进程P1进程P2子进程试图修改B的页面B的副本*
9.3Copy-On-Write(COW)
写时复制在COW机制中,重要的一点是需要在复制时确定从哪里分配空闲页空闲缓冲池(pool):是许多操作系统为此类
文档评论(0)