- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二 windows 内存管理实验
一. 问题描述
内存管理是操作系统的主要任务之一,地址转换是其中的重要内
容,本实验主要研究 windows 的地址转译过程。
通过这次实验了解 windows 内存管理策略及基本的数据结构, 理
解 windows 的地址过程。通过任意给出一个虚拟地址, 可以从 windbg
观察相关数据并找到其物理地址。
二. Windows 地址转译过程原理
1. Windows 内存管理器:
Windows 的内存管理器主要由 Windows 执行体中的虚存管理程序
负责,并由环境子系统负责与具体 API相关的一些用户态特征的实现。
有两个任务:地主转换;变换。
2. Windows 内存管理策略:
Windows 采用页式虚拟存储管理技术管理内存,页面是硬件级别
上的最小保护单位。
根据硬件体系结构的不同,页面尺寸被分为两种
大页面: 4KB
小页面: 4MB
通常的 PC 机,一般都为小页面。
3、Windows 虚拟地址空间布局
Windows 系统的虚拟地址空间布局, 默认情况下,32 位的 windows
系统中每个用户进程可以占有 2GB 的私有地址空间,操作系统占有
另外的 2GB。如下:
4、X86 虚拟地址转译
X86 虚拟地址转译是指进程的虚拟地址空间映射到实际物理页面
的过程, Windows 系统中地址转译过程如下:
关键的数据结构如下:
页目录:每个进程都有一个页目录, 进程页目录的地址被保存
在内核地址块( KPROCESS)中。在 windows 中,它被映射到虚拟地
址 0xC0300000。由 cr3 可以知道该进程页目录的位置。
页目录由页表项构成。
页表 :进程的页目录指向页表。每个页表只占一个页面,含有
1024 个 PTE,一个 PTE为 4 字节,包含两个主域: PFN,即为数据所
在的物理页面的页面帧编号。
虚拟地址结构: x86 系统上,一个 32 位虚拟地址结构被解释
成三个独立的部分:页目录索引,页表索引和字节索引,如下:
由于页目录项有 1024个,因此页目录索引为 10 位,一个页表
中含有 1024 个 PTE,因此页表索引也为 10 位;字节索引为 12 位,
正好表示一页内容。
三、 地址转译过程观测及分析
1、 查找页目录首地址
启动 WinDbg 到内核调试模式,以 try.exe 作为对象运行,中断目标
机运行,输入命令: !process
输入命令: dt_kprocess 813a9d88
可以看到 KPROCESS其中有一个域 DirectoryTableBase,对应值为
0x9e1f000,这就是 try.exe 进程页目录的基址(物理地址) 。
查看 cr3 寄存器的内容,输入命令: r cr3
得到的值和上述相同,这是因为 CPU 切换执行任务时,其内容要更
新为当前进程的页目录基址。
2、 地址转译过程
下面实验的是虚拟地址到物理地址的转译过程。
假设给定的虚拟地址为 0x101401。
首先将其变换为 32 位的地址结构,如下:
页目录索引 页表索引 页内索引
二进制值 0
原创力文档


文档评论(0)