WRK内存管理实验..doc

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

实验二 WRK 内存管理实验 1、实验内容描述 任意给出一个虚拟地址,通过 WinDbg 观察相关数据并找到其物理地址 2、理论分析 1)Windows 内存管理器 Windows 的内存管理主要由 Windows 执行体中的虚存管理程序(virtual memory manager,VM manager)负责,并由环境子系统负责与具体 API 相关的一些用户态特性的实现。虚存管理程序是 Windows 中负责内存管理的那些子程序和数据结构的集合。 内存管理器的主要任务有两个: a地址变换:将一个进程的虚拟地址空间转译为物理内存地址; b交换:当内存不足时,将内存中的有些内容转移到磁盘上;并且以后还要再次将这些内容读回。 除了提供虚拟内存管理外, 内存管理器还提供一组核心服务, Windows 的各个子环境系统也是在这组核心服务的基础上建立起来的。这些服务包括内存映射文件、写时复制内存,以及为应用程序使用大的、稀疏的地址空间提供支持。 2)Windows 内存管理策略 Windows 采用页式虚拟存储管理技术管理内存,页面是硬件级别上的最小保护单位。根据硬件体系结构的不同,页面尺寸被分为两种:大页面和小页面。x86 系统下小页面为4KB,大页面为 4MB。大页面的优点是:当引用同一页面内其它数据时,地址转移的速度会很快。不过使用大页面通常需要较大的内存空间,而且必须用一个单独的保护项来映射,因此可能会造成出现错误而不引发内存访问违例的情况。通常的 PC 机,一般都为小页面。 3)Windows 虚拟地址空间布局 这里主要讲述 x86 结构下的布局方式,如图 3.1 所示。 默认情况下,32 位 Windows 系统中每个用户进程可以占有 2GB 的私有地址空间。操作系统占有另外的 2GB。2GB 的用户进程地址空间布局如表 3.1。 地址范围 大小 功能 0x0~0xffff 64KB 拒绝访问区域,帮助程序员避免不正确的指针引用,试图访问该区域的地址将导致访问违规 0x10000~0x7FFEFFFF 2GB减去至少 192KB 进程私有地址空间 0x7FFDE000~0x7FFDEFFF 4KB 第一个线程的线程环境块(TEB) 0x7FFDF000~0x7FFDFFFF 4KB 进程环境块(PEB) 0x7FFE0000~0x7FFE0FFF 4KB 共享的用户数据页面 0x7FFE1000~0x7FFEFFFF 60KB 拒绝访问区域 0x7FFF0000~0x7FFFFFFF 60KB 拒绝访问区域, 阻止线程跨过用户/系统边界传送缓冲区 4)x86 虚拟地址转译 地址转译是指将进程的虚拟地址空间映射到实际物理页面的过程。x86 系统中地址转译过程如图 3.3 所示。 关键的数据结构如下: l a页目录(Page directoty) 每个进程都有一个页目录, 它是内存管理器为了映射进程中所有的页表位置而创建的一个页面。进程页目录的地址被保存在内核进程块(KPROCESS)中,在 x86 系统上,它被映射至虚拟地址 0xC0300000。当一个进程正在执行时,CPU 可以通过寄存器 CR3 知道该进程页目录的位置。 页目录由页目录项(PDE, page directory entries)构成,每个 PDE 长 4 字节,描述了进程中所有可能的页表的状态和位置。其格式和 PTE(Page Table Entries)类似。 x86 系统上,要描述完整的 4GB 虚拟地址空间,需要 1024 个页表(每个页面 4KB)。因此映射这些页表的进程页目录需包含 1024 个 PDE,恰好占用一个页面。 l b页表(Page table) 进程的页目录项指向页表。每个页表占用一个页面,由 1024 项 PTE 组成。一个有效的PTE 大小为 4 字节,包含两个主域:数据所在的物理页面的页面帧编号(PFN)或者内存中一个页面的物理地址的 PFN;一些描述该页面状态和保护属性的标志。 l c虚拟地址结构 x86 系统上,一个 32 位虚拟地址被解释成三个单独的部分:页目录索引、页表索引和字节索引,如图 3.4。 由于页目录项有 1024 个,因此页目录索引为 10 位;一个页表中含有 1024 个 PTE,因此页表索引也为 10 位;字节索引为 12 位,正好表示一页(4KB)内容。 3.实验步骤及结果 1)查找页目录首地址 这里依然以

文档评论(0)

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

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

1亿VIP精品文档

相关文档