《存储管理》实验指导书(模板).pdf
《《存储管理》实验指导书(模板).pdf》由会员分享,可在线阅读,更多相关《《存储管理》实验指导书(模板).pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验 5 存储管理-Windows xp 虚拟内存(实践估计时间:100 分钟)5.1 背景知识 在Windows xp 环境下,4GB 的虚拟址空间被划分成两个部分:低端2GB提供给进程使用,高端 2GB 提供给系统使用。这意味着用户的应用程序代码,包括 DLL 以及进程使用的各种数据等,都装在用户进程地址空间内(低端 2GB),用户过程的虚拟地址空间也被分成三个部分:1)虚拟内存的已调配区(committed):具有备用的物理内存,根据该区域设定的访问权限,用户可以进行写、读或在其中执行程序等操作。2)虚拟内存的保留区(researved):没有备用的物理内存,但有一定的访问权限。3)虚
2、拟 内 存 的 自 由 区 (free):不 限 定 其 用 途 ,有 相 应 的 PAGE_NOAC_CESS 权限。与虚拟内存区相关的访问权限告知系弘进程可在内存中进行何种类型的操作。例如:用户不能在只有 PAGE_READONLY 权限的区域上进行写操作或执行程序:也不能在只有 PAGE_EXECUTE 权限的区域里进行读、写操作。而具有 PAGE_NOACESS 权限的特殊区域,则意味着不允许进程对其地址进行任何操作。在 进 程 装 入 之 前,整 个 虚 拟 内 存 的 地 址 空 间 都 被 设 置 为只 有 PAGE_NOACESS 权限的自由区域。当系统装入进程代码和数据后,才
3、将内存地址的空间标记为已调配区或保留区,并将诸如 EXECUTE、READWRITE和 READONLY 的权限与这些区域相关联。如表 5-1 所示,给出了 MEMORY_BASIC_INFORMATION 的结构,此数据描述了进程虚拟内存空间中一组虚拟内存页面的当前状态,其中 State项表明这些区域是否为自由区、已调配区或保留区;Protect 项则包含了 Windows 系统为这些区域添加了何种访问保护;Type 项则表明这些区域是可执行图像、内存映射文件还是简单的私有内存,VirtualQueryEX()API 能让用户在指定的进程中,对虚拟内存地址的大小和属性进行检测。Windows
4、 还提供了一整套能使用户精确控制应用程序的虚拟地址空间 API,一些用于虚拟内存操作及检测的 API 如表 5-2 所示。表 5-1 MEMORY_BASIC_INFORMATION 结构的成员 成员名称 目的 PVOID BaseAddress 虚拟内存开始处的指针 PVOID AllocationBase 如果这个特定的区域为子分配区的话,则为虚拟内存外面区 域的指针;否则此值与 BaseAddress 相同 DWORD AllocationProtect 虚拟内存最初分配区域的保护属性。其可能值包括:PAGE_NOACESS,PAGE_READONLY,PAGE_READWRITTE 和
5、 PAGE_EXECUTE_READ。DWORD RegionSize 虚拟内存区域的字节数 DWORD State 区 域 的 当 前 分 配 状 态,其 可 能 值 为 MEM_COMMIT,MEM_FREE 和 MEM_RESERVE DWORD Protect 虚拟内存当前区域的保护属性,可能值与 AllocationProtect 成员相同 DWORD Type 虚拟内存区域中出现的页面类型,可能值为 MEM_IMAGE,MEM_MAPPED 和 MEM_PRIVATE 表 5-2 虚拟内存的 API API 名称 描 述 VirtualQueryEx()通过填充 MEMORY_BA
6、SIC_INFORMATION 结 构检测进程内虚拟内存的区域 VirtualAlloc()保留或调配进程的部分虚拟内存,设置分配和保 护标志 VirtualFree()释放或收回应用程序使用的部分虚拟地址 VirtualProtect()改变虚拟内存区域保护规范 VirtualLock()防止系统将虚拟内存区域通过系统交换到页面文 件中 VirtualUnlock()释放虚拟内存的锁定区域,必要时,允许系统将 其交换到页面文件中 提供虚拟内存分配功能的是 VirtualAlloc()API,该 API 支持用户向系统要 求 新 的 虚 拟 内 存 或 改 变 已 分 配 内 存 的 当 前
7、状 态,用户若想 通过 VirtualAlloc()API 函数使用虚拟内存,可以采用两种方式能知系统:1)简单地将内存内容保存在地址空间内。2)请求系统返回带有物理存储区(RAM 的空间或换页文件)的部分地址空间。用户可以用 flAllocation Type 参数(commit 和 reserve)来定义这些方式,用户可以通知 Windows 按只读、读写、不可读写、执行或特殊方式来处理新的虚拟内存。与 VirtualAlloc()函数对应的是 VirtualFree()函数,其作用是释放虚拟内存中的已调配页或保留页。用户可利用 dwFree Type 参数将已调配页修改成保留页属性。Vi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储管理 存储 管理 实验 指导书 模板
限制150内