虚拟存储管理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.4.2 Linux的页表机制 地址转换:Linux虚拟内存的地址转换分为四步,如下图所示: PMD 寄存器 PGD下标 PMD下标 PT下标 页内偏移量 虚拟地址 PGD … … PT … 物理页面 … PGD 基地址 + + + + 8.4.2 Linux的页表机制 把虚拟地址中的最高位段与寄存器中的PGD基地址相加,在PGD中找到相应的表项,该表项指向相应的PMD基地址; 把虚拟地址中的第二个位段与PMD的基地址相加,在PMD中找到相应的表项,该表项指向相应的PT基地址; 把虚拟地址中的第三个位段与PT的基地址相加,在PT中找到相应的表项,该表项指向相应的物理页面; 把虚拟地址中的最低位段与物理页面的基地址相加,得到相应的物理地址。 8.4.3 Linux内存页的分配 为了提高往内存中读入页和从内存中写出页的效率,Linux采用了一种机制,即把连续的页映射到连续的物理块中。基于这个目的,它采用了一种伙伴系统。内核维护一系列大小固定的连续物理块组,一组可以包含1、2、4、8、16或32个物理块。当一页在内存中被分配或被释放时,可用的组使用伙伴算法被分割或合并。 8.4.4 Linux内存页的置换算法 Linux的页面置换算法采用最近最少使用置换算法(NRU)。在简单的最近最少使用置换算法中,内存中的每一页都有一个访问位和一个修改位。在Linux系统中,用一个8位的age变量取代了访问位。每当一页被访问时,age变量增1。在后台,Linux周期性地扫描全局页池,并将所有大于0的age变量减1。age的值为0的页在较长一段时间内未被访问过,是用于置换的最佳候选页。age的值越大,该页最近被使用的频率越高,从而越不适合于被置换。 8.5 Windows存储管理 Windows有一个非常成功的虚拟存储系统。有大量的Win32函数和六个内核线程在进行存储管理。它采用的是页式虚拟存储管理。 8.5.1 Windows的虚拟地址空间 在Windows中,每一个用户进程都有自己的虚拟地址空间。虚拟地址的长度是32位,因此每个进程有4GB(232B)的虚拟地址空间。低2GB为用户地址空间,用于进程代码和数据;高2GB为核心地址空间,它处于保护模式。其中的用户地址空间可被用户态和核心态线程存取,并且对每个进程都是不同的;而核心地址空间只能被核心态线程存取,并且对每个线程都是相同的。这两个地址空间的布局如图12.6所示。 虚拟地址空间采用分页存储管理,每一页的大小是固定的(Pentium是4KB)。 8.5.1 Windows的虚拟地址空间 2GB 0 4GB 非页池 页池 用户页表 栈、数据等 HAL+操作系统 用户地址空间 8.5.2 页面状态 虚拟页有三种状态:空闲态、保留态和提交态。每个虚拟页都处于这三种状态中的一种。空闲页是当前没有被使用的页,需要访问该页时将引起缺页中断。进程开始运行时,所有的页都处于空闲状态,直至程序和初始数据装入地址空间。一旦代码和数据被装入,该页便被提交。一个提交页可能有两种情况,一种情况是该页在内存,另一种情况是该页不在内存。如果该页不在内存,将引起缺页中断,操作系统将从磁盘上找到该页并把它装入。 8.5.3 地址转换机制 x86系统中32位虚拟地址的组件: Windows使用二级页表来实现虚拟地址向物理地址的转换。32位的虚拟地址被解释为三个独立的组件:页面目录索引、页表索引和字节索引。它们是用于描述页面映射的结构的索引。页面大小及页面表项的宽度决定了页面目录和页表索引字段的宽度。例如,在x86系统中,页面大小为4KB字节,因此字节索引为12位。下图是x86系统中32位虚拟地址组件的示意图。 8.5.3 地址转换机制 12位 10位 10位 31 22 21 12 11 0 页面目录索引 页表索引 字节索引 虚拟页面号码 8.5.3 地址转换机制 x86系统的虚拟地址变换:x86系统的虚拟地址变换 如下图所示: 页面目录 (每进程一个,1024项) KPROCESS 页面目录索引 页面表索引 字节索引 索引 PFN PDE CR3 物理地址 PFN PTE 索引 所需 页面 所需 字节 页面表 (每进程最多达512个,每表1024项) 物理地址空间 索引 PFN 8.5.3 地址转换机制 转换步骤如下: 内存管理硬件为当前进程查找页面目录。在每个进程的环境发生切换时,硬件被告知新进程页面目录的地址,一般是通过操作系统设置专用的CPU寄存器来实现。 根据页面目录索引在页面目录中查找页面目录项(page directo

文档评论(0)

153****9595 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档