《存储管》实验指导书(模板).pdf

上传人:ylj18****70940 文档编号:73115506 上传时间:2023-02-15 格式:PDF 页数:7 大小:219.91KB
返回 下载 相关 举报
《存储管》实验指导书(模板).pdf_第1页
第1页 / 共7页
《存储管》实验指导书(模板).pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《《存储管》实验指导书(模板).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

8、rtualProtect()是 VirtualAlloc()的一个辅助函数,利用它可以改变虚拟内存的保护规范。5.2 实践目的 1)通过实践了解 Windows xp 内存的使用,学习如何在应用程序中管理内存、体会 Windows 应用程序内存的简单性和自我防护能力。2)学习检查虚拟内存空间或对其进行操作 3)了解 Windows xp 内存结构和虚拟内存的管理,进而了解进程堆和 Windows 为使用内存而提供的一些扩展功能。5.3 工具/准备工作 在开始本实践之前,请回顾教科书的相关内容。您需要做以下准备:1)一台运行 Windows xp Professional 操作系统的计算机。2)

9、计算机中需安装 Visual C+6.0 专业版或企业版。5.4 实践内容与步骤 1.虚拟内存的检测 使用 VirtualQueryEX()函数来检查虚拟内存空间。步骤 1:登录进入 Windows xp Professional。步骤 2:在“开始”菜单中单击“程序”、“Microsoft Visual Studio 6.0”“Microsoft Visual C+6.0”,进 入 Visual C+窗口。步骤 3:在工具栏单击“新建”按钮,编写代码保存为 5-1.cpp。功能:检测进程的虚拟地址空间 参考头文件与函数:windows.h、iostream、shlwapi.h、iomanip

10、、WalkVM()、ZeroMemory()、GetSystemInfo(&si)、StrFormatByteSize()、VirtualQueryEx()API 步骤 4:单击“Build”菜单中的“Compile 5-1.cpp”命令,单击“是”按钮确认,系统对 5-1.cpp 进行编译。步骤 5:编译完成后,单击“Build”菜单中的“Build 5-1.exe”命令,建立 5-1.exe 可执行文件。操作能否正常进行,如果不行,原因是什么?步骤 6:在工具栏单击“Execute program”按钮,执行 5-1.exe 程序。运行结果(如果运行不成功,原因是什么?):按 commit

11、ted、reserved、free 等三种虚拟地址空间分别记录实践数据,其中“描述”是指对该组数据的简单描述,例如:对下列一组数据:00010000-0001xpCommitted,READWRITE,Private 可描述为:具有 READWRITE 权限的已调配私有内存区。将系统当前的自由区(free)虚拟地址空间填入表 5-3 中。表 5-3 实践记录 地址 大小 虚拟地址空 间 访问权限 描述 free free free free free free free free free free free free free free free free free free free fr

12、ee free free free free free 将系统当前的已调配区(committed)虚拟地址空间填入表 5-4 中 表 5-4 实践记录 地址 大小 虚拟地址空间 访问权限 描述 committed committed committed committed committed committed committed committed committed committed committed committed committed committed committed committed committed committed committed committed com

13、mitted committed committed committed committed committed 将系统当前的保留区(reserved)虚拟地址空间填入表 5-8 中 表 5-5 实践记录 地址 大小 虚拟地址空 间 访问权限 描述 reserved reserved 地址 大小 虚拟地址空 间 访问权限 描述 reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved

14、reserved reserved reserved reserved reserved reserved reserved reserved reserved 2.虚拟内存操作 如何分配一个大容量空间,将物理存储委托给其中的很小一部分(千分之一)并加以使用。步骤 1:在工具栏单击“新建”按钮,编写代码并保存为 5-2.cpp。功能:分配和使用大块内存 参考头文件与函数:windows.h、iostream、FillZero()、malloc()、FillZero()、free()、VirtualAlloc()、VirtualFree()、;步骤 2:单击“Build”菜单中的“Compile5-2.cpp”命令,单击“是”按钮确认,系统对 5-2.cpp 进行编译。步骤 5:编译完成后,单击“Build”菜单中的“Build 5-2.exe”命令,建立 5-2.exe 可执行文件。操作能否正常进行,如果不行,原因是什么?步骤 6:在工具栏单击“Execute program”按钮,执行 5-2.exe 程序。运行结果(如果运行不成功,原因是什么?):5.5 撰写实验报告

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com