《2022年操作系统实验二windows内存管理实验》由会员分享,可在线阅读,更多相关《2022年操作系统实验二windows内存管理实验(8页珍藏版)》请在金锄头文库上搜索。
1、实验二windows内存管理实验一 问题描述内存管理是操作系统的主要任务之一,地址转换是其中的重要内容,本实验主要研究windows 的地址转译过程。通过这次实验了解windows 内存管理策略及基本的数据结构, 理解 windows 的地址过程。通过任意给出一个虚拟地址, 可以从 windbg观察相关数据并找到其物理地址。二 Windows 地址转译过程原理1. Windows内存管理器:Windows 的内存管理器主要由Windows 执行体中的虚存管理程序负责, 并由环境子系统负责与具体API相关的一些用户态特征的实现。有两个任务:地主转换;变换。2. Windows内存管理策略:Win
2、dows 采用页式虚拟存储管理技术管理内存,页面是硬件级别上的最小保护单位。根据硬件体系结构的不同,页面尺寸被分为两种大页面: 4KB 小页面: 4MB 通常的 PC 机,一般都为小页面。3、Windows虚拟地址空间布局Windows 系统的虚拟地址空间布局, 默认情况下,32 位的 windows系统中每个用户进程可以占有2GB 的私有地址空间,操作系统占有名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 另外的 2GB。如下
3、:4、X86虚拟地址转译X86 虚拟地址转译是指进程的虚拟地址空间映射到实际物理页面的过程, Windows 系统中地址转译过程如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 关键的数据结构如下:页目录:每个进程都有一个页目录, 进程页目录的地址被保存在内核地址块( KPROCESS)中。在 windows 中,它被映射到虚拟地址 0xC0300000 。由 cr3 可以知道该进程页目录的位置。页目录由页表项构成。页表:进
4、程的页目录指向页表。每个页表只占一个页面,含有1024 个 PTE ,一个 PTE为 4 字节,包含两个主域: PFN ,即为数据所在的物理页面的页面帧编号。虚拟地址结构: x86 系统上,一个32 位虚拟地址结构被解释成三个独立的部分:页目录索引,页表索引和字节索引,如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 由于页目录项有 1024个,因此页目录索引为10 位,一个页表中含有 1024 个 PTE ,因此页表索引也
5、为10 位;字节索引为12 位,正好表示一页内容。三、 地址转译过程观测及分析1、查找页目录首地址启动 WinDbg 到内核调试模式,以try.exe作为对象运行,中断目标机运行,输入命令:!process 输入命令: dt_kprocess 813a9d88 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 可以看到KPROCESS 其中有一个域DirectoryTableBase ,对应值为0x9e1f000,这就是 try.
6、exe进程页目录的基址(物理地址) 。查看 cr3 寄存器的内容,输入命令:r cr3 得到的值和上述相同,这是因为CPU 切换执行任务时,其内容要更新为当前进程的页目录基址。2、地址转译过程下面实验的是虚拟地址到物理地址的转译过程。假设给定的虚拟地址为0x101401。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 首先将其变换为 32 位的地址结构,如下:页目录索引页表索引页内索引二进制值0 0100000001 01000
7、0000001 十六进制值0x0 0x101 0x401 输入命令:kd !pte 0x101401 可以查看给定的虚拟地址的PTE信息:可以看到:PDE的虚拟地址为 C0300000 。 这是因为每个进程页目录的基址 (虚拟地址)均为C300000 ,而每个进程页目录项长度为4 字节,给定虚址的页目录索引为0x0,故其对应的 PTE为 C0300000 。PTE为 C0000404 。因为进程的页表虚拟地址从C0000000开始。页面大小为 4096(0x1000)字节,每个 PTE长度为 4 字节,由页目录索引值(0x0)可知虚址处于第 1 个页表上,页表索引为 0x101,故对应的 PT
8、E为(C0000000+4*0x101= C0000404 )最后一行信息“pfn b9ef -DA-UWEV ”表示 PDE的具体内容,b9ef是给定虚址所在页表在内存中对应的物理页号;“-DA-UWEV ”是标志信息。不知道为什么自己的电脑上无法出现数据页装入内存的物理页号, 如 pfn XXXX -A-XXXX,因此无法得到虚址的物理名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 地址。因此, 0x101401 的物理地址
9、应该为物理页号XXXX加上页内索引( 0x401) ,具体数值由于电脑问题没有办法确切得到。3、观察系统页表验证不同的进程目录页会指向相同的系统页表。观察虚址 0x80001001,转换为 32 位地址结构,如下:页目录索引页表索引页内索引二进制值10000000000000000001 000000000001 十六进制值0x200 0x1 0x1 十进制值512 1 1 输入命令: kd !process 当前正在执行: try.exe。输入命令: kd !pte 0x80001001 得到 PDE为 C0300800,其对应的物理页号为3b。继续让目标机运行,启动另一个的程序dog.ex
10、e,然后中断目标机运行。输入命令: kd !process 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 当前执行的进程为svchost.exe 。输入命令: kd !pte 0x80001001 发现 PDE信息和对应的物理页号与前面观测的相同,证明不同的进程页目录的确指向了相同的系统页表。实验顺利完成名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -