- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)查找页目录首地址
这里依然以
您可能关注的文档
- word长文档操作步骤..docx
- Word页眉页脚使用技巧..doc
- Word:公式编辑器亲密接触..doc
- world文档改页码方法..doc
- WorldClassPerformance..doc
- WorkWin管理专家白皮书..doc
- wosaxfs翻译版本..doc
- wouldrather的用法..doc
- WOW世界稀有怪名称..doc
- WOW60~90级历代副本评论..doc
- 道路安全分析软件:Vistro二次开发_(10).常见问题与故障排除.docx
- 道路材料设计软件:ANSYS二次开发_(14).道路材料设计软件的集成与测试.docx
- 道路材料设计软件:Midas二次开发_(13).Midas二次开发中的常见问题与解决方法.docx
- 道路材料设计软件:PLAXIS二次开发_(11).PLAXIS二次开发基础:Python和API介绍.docx
- 道路材料设计软件:PLAXIS二次开发_(4).PLAXIS中的材料模型介绍.docx
- 道路设计软件:Bentley OpenRoads二次开发_(6).Python脚本在OpenRoads中的使用.docx
- 道路设计软件:Autodesk Roadway二次开发_(6).道路设计元素的自定义创建.docx
- 道路设计软件:Bentley OpenRoads二次开发_(11).地下管线设计.docx
- 能源电力项目安全风险评价报告.docx
- SNAPIV量介绍及评分细则.pptx
文档评论(0)