ch447实例研究windows 2000xp虚存管理.pptVIP

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.7实例研究:Windows 2000/XP虚拟存储管理 4.7.1进程地址空间布局 4.7.2用户空间内存分配 4.7.3内存管理的实现 4.7.1进程地址空间布局 4.7.2用户空间内存分配 系统管理应用程序内存有两个数据结构:虚址描述符和区域对象;三种内存管理方法: 虚页内存分配 内存映射文件 内存堆分配 1 虚址描述符 对每个进程,内存管理器都维护一组VAD ,用来描述进程地址空间哪些虚拟地址已被保留,而哪些没有,这个数据结构叫“虚地址描述符”VAD。 VAD的使用 ? 线程首次访问一个地址,内存管理器为此地址的页面创建一个页表项,它找到一个包含被访问地址的VAD,并利用所得信息填充页表项。 ? 如果访问地址落在VAD覆盖的地址范围外,或所在的地址范围仅被保留而未提交,将产生一次访问违规。 2 区域对象及作用 “区域对象”(Section object)在Win32子系统中被称为“文件映射对象”,表示可被两个或多个进程所共享的内存块。其作用有: 系统利用区域对象将可执行映象装入内存; 高速缓存管理器利用区域对象访问高速缓存文件中的数据; 使用区域对象将文件映射到进程地址空间,可像访问内存中数组一样访问这个文件,而不是对文件进行读写。 区域对象的使用 一个区域对象代表可由两个或多个进程共享的内存块。 一个进程的线程可创建区域对象,为它起名字,以便其他进程的线程能打开这个区域对象的句柄。 区域对象句柄被打开后,线程就能把这个区域对象映射到自己或另一个进程的虚地址空间中。 3 区域对象和视窗 系统提供视窗AWE机制,为区域对象空间中的一部分空间(进程当前所需要的)保留虚地址,而所映射的这一部分叫该区域对象的一个视窗。 映射区域对象的视窗就是使该区域的一部分能在虚地址空间可见。 删除映射区域对象的视窗就是把它从进程的虚拟地址空间中删去。 进程通过对区域对象多次开设和删除视窗,达到在较小虚地址空间(最大232B)中处理较大区域对象(264B)的目的。 使用AWE函数来分配内存 步1分配要使用的物理内存 步2创建一个虚地址空间作为视窗来映射区域对象 步3把区域对象映射到视窗 区域对象和视窗 视窗机制作用 当基于内存映射文件的区域对象远远大于虚地址空间时, 当基于盘交换区(交换文件)的区域对象远大于交换空间时, 用于共享时。 4 应用程序内存管理方法 1)虚页内存分配(1) 系统中使用虚拟内存,分三个阶段: ?保留内存(reserved memory) ?提交内存(committed memory) ?释放内存 (release memory) 虚页内存分配(2) 保留内存 Virtual Alloc 申请保留内存 申请保留内存的方法 申请保留内存的参数 虚页内存分配(3) 提交/释放内存 ?什么是提交内存 ?提交内存的方法 ?分配内存 ? Virtual Free释放内存 2)内存映射文件(1) Memory-mapped File允许进程分配一段虚地址空间或某一个盘文件相关联,当把盘文件映射到该地址空间后,多个进程可以方便地访问。内存映射文件用于三种场合: (1)执行体使用内存映射把可执行文件.exe和动态连接库.dll文件装入内存,节省应用程序启动时间。 (2)进程使用内存映射文件存取磁盘文件信息,减少文件I/O和对文件进行缓存。(3)多个进程使用内存映射文件来共享主存中的数据和代码。 内存映射文件(2) 使用步骤 步1使用CreateFile打开文件 步2使用CreateFile Mapping建立文件映射 步3使用MapViewOfFile 读写文件视窗 步4使用OpenFileMapping 打开文件映射对象 步5使用UnmapViewOfFile解除映射 3)内存堆分配 堆(heap)是保留地址空间中一个或多个页组成的区域,并由堆管理器按更小块划分和分配内存的技术。 缺省进程堆。 HeapCreate创建私有堆,Heap Destroy 释放私有堆。 GetprocessHeap得到指向堆的句柄, HeapAlloc和HeapFree从堆中分配和回收内存块。 4.7.3.内存管理的实现 1进程页表与地址映射 ?在x86硬件平台上采用二级页表结构来实现进程的逻辑地址到物理地址的转换。 ?32位逻辑地址解释成三个分量,页目录索引(10位)页表页索引(10位)和位置索引(12位),页面大小为4KB。 2原型页表项和区域对象(1) 当两个进程共享一个物理页框时,内存管理器在进程页表中插入一个称作“原型页表项”

文档评论(0)

0520 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档