《2022年Windows操作系统实验六实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年Windows操作系统实验六实验报告 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 Windows 操作系统C/C+ 程序实验姓名: _ _ 学号: _ 班级: _ 院系: _信息工程学院 _ 年_月_日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 2 实验六 Windows 2000/xp虚拟内存一、背景知识二、实验目的三、工具 / 准备工作四、实验内容与步骤 1. 虚拟内存的检测清单 6-1 所示程序使用VirtualQueryEX() 函数来检查虚拟内存空间。步骤 1:登录进入Windows 20
2、00/xp Professional 。步骤 2:在 “开始” 菜单中单击 “程序 -Microsoft Visual Studio 6.0 Microsoft Visual C+ 6.0 ”命令,进入Visual C+ 窗口。步骤 3:在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序6-1.cpp。步骤 4:单击“ Build ”菜单中的“ Compile 6-1.cpp”命令,并单击“是”按钮确认。系统对 6-1.cpp 进行编译。步骤 5:编译完成后,单击“Build ”菜单中的“ Build 6-1.exe ”命令,建立6-1.exe 可执行文件。操作能否正常进行?如果
3、不行,则可能的原因是什么?_名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 3 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - 4 _名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理
4、 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - 5 _ _ 步骤 6:在工具栏单击“Execute Program”按钮,执行6-1.exe 程序。1) 分析运行结果(如果运行不成功,则可能的原因是什么?) 。按 committed 、reserved、free 等三种虚拟地址空间分别记录实验数据。其中“描述”是指对该组数据的简单描述,例如,对下列一组数据:00010000 00012000/xp Committed, READWRITE, Private 可描述为:具有READWRITE权限的已调配私有内存区。将系统当前的自由区(free) 虚拟地
5、址空间填入表6-3 中。表 6-3 实验记录地址大小虚拟地址空间类型访问权限描述 00010000-00012000 8.00KB free READWRITE 具有 READWRITE权限的已调配私有内存区 00012000-00020000 56.0KB free NOACCESS 没有任何权限的已调配的共有内存区 00020000-00021000 4.00KB free READWRITE 具有 READWRITE权限的已调配私有内存区 00021000-00030000 60.0KB free NOACCESS 没有任何权限的已调配的共有内存区名师资料总结 - - -精品资料欢迎下载
6、 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - 6 00030000-0012c000 0.98MB free READONLY 只具有 READ 权限的已调配私有内存区 0012c000-0012d000 4.00KB free READWRITE 具有 READWRITE权限的已调配私有内存区 0012d000-00130000 12.0KB free READWRITE 具有 READWRITE权限的已调配私有内存区 00130000-00133000 12.
7、0KB free READONLY 只具有 READ 权限的已调配内存区提示 : 详细记录实验数据在实验活动中是必要的,但想想是否可以简化记录的办法?将系统当前的已调配区(committed) 虚拟地址空间填入表6-4 中。表 6-4 实验记录地址大小虚拟地址空间类型访问权限描述00010000-00020000 (64.0 KB) Committed, READWRITE, Mapped 00020000-00030000 (64.0 KB) Committed, READWRITE, Mapped 0012d000-0012e000 (4.00 KB) Committed, GUARD,
8、READWRITE, Private 0012e000-00130000 (8.00 KB) Committed, READWRITE, Private 00130000-00134000 (16.0 KB) Committed, READONLY, Mapped 00140000-001a7000 (412 KB) Committed, READONLY, Mapped 001b0000-001b1000 (4.00 KB) Committed, READWRITE, Private 001c0000-001c1000 (4.00 KB) Committed, READWRITE, Priv
9、ate 001d0000-001d7000 (28.0 KB) Committed, READONLY, Mapped 001e0000-001e2000 (8.00 KB) Committed, READWRITE, Mapped 将系统当前的保留区(reserved) 虚拟地址空间填入表6-5 中。表 6-5 实验记录地址大小虚拟地址空间类型访问权限描述0022d000-00300000 (844 KB) Reserved, READONLY, Private 00306000-003c0000 (744 KB) Reserved, READONLY, Mapped 名师资料总结 - -
10、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - 7 003c3000-003c8000 (20.0 KB) Reserved, READONLY, Mapped 00673000-00680000 (52.0 KB) Reserved, READONLY, Private 006f4000-01280000 (11.5 MB) Reserved, READONLY, Mapped 01288000-01380000 (992 KB) Reserve
11、d, READONLY, Private 01406000-01410000 (40.0 KB) Reserved, READONLY, Private 2) 从上述输出结果,对照分析5-2 程序,请简单描述程序运行的流程:_ _ _ _ 2. 虚拟内存操作清单 6-2 的示例显示了如何分配一个大容量空间,将物理存储委托给其中的很小一部分(千分之一 ) 并加以使用。步骤 7:在 Visual C+ 窗口的工具栏中单击“打开”按钮,在“打开”对话框中找到并打开实验源程序6-2.cpp。步骤 8:单击“ Build ”菜单中的“ Compile 6-2.cpp”命令,并单击“是”按钮确认。系统对
12、6-2.cpp 进行编译。步骤 9:编译完成后,单击“Build ”菜单中的“ Build 6-2.exe ”命令,建立6-2.exe 可执行文件。操作能否正常进行?如果不行,则可能的原因是什么?_名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - 8 _ _ 步骤 10:在工具栏单击“Execute Program”按钮,执行6-2.exe程序。运行结果(如果运行不成功,则可能的原因是什么?) :1) _标点 _ 2) _ 3)
13、 _ 对照运行结果,分析程序6-2。为了给数据库保留1GB 的段地址空间,清单6-2 给出了内存分配的四种方法。 第一种技术即程序中说明为 _ LPVOID pBlock = : malloc(c_dwGigabyte) ; : FillZero (pBlock, c_dwMegabyte) ; : free(pBlock) ; _ 的程序段,该段程序试图利用标准C 中的 malloc() 函数,从已经已调配的小内存区获得内存。从运行结果看,这种技术成功了吗?_成功 _。 第二种技术即程序中说明为 _ LPVOID pBlock = : VirtualAlloc( NULL, / 不指定起始地
14、址c_dwGigabyte, / 要求 1GB MEM_COMMIT, / 调配物理存储名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - 9 PAGE_READWRITE) ; / 对此的读写操作: FillZero(pBlock, c_dwMegabyte) ; : VirtualFree(pBlock, 0, MEM_RELEASE) ; 的程序段, 该段程序试图通过VirtualAlloc() ,然后利用物理备用内存将整个
15、块分配到虚拟内存空间的任何位置。这种技术只对拥有1GB 以上的 RAM 且都有换页文件的计算机可行。从运行结果看,这种技术成功了吗?_成功 _。 第三种技术即程序中说明为LPVOID pBlock = : VirtualAlloc( NULL, / 不指定起始地址c_dwGigabyte, / MEM_RESERVE, / 不调配物理存储PAGE_READWRITE) ; / 对此的读写操作: FillZero(pBlock, c_dwMegabyte) ; : VirtualFree(pBlock, 0, MEM_RELEASE) ; 要求 1GB 的程序段,该段程序利用VirtualAll
16、oc() ,如果函数成功,则获得大块内存,但不将任何物理内存调配到此块中。从运行结果看,这种技术成功了吗?_不成功 _。 第四种技术即程序中说明为LPVOID pBlock = : VirtualAlloc( NULL, / 不指定起始地址c_dwGigabyte, / 要求 1GB MEM_RESERVE, / 不调配物理存储PAGE_READWRITE) ; / 对此的读写操作: VirtualAlloc( pBlock, c_dwMegabyte, MEM_COMMIT, PAGE_READWRITE) ; : FillZero(pBlock, c_dwMegabyte) ; : Vir
17、tualFree(pBlock, 0, MEM_RELEASE) ; 的程序段,该段程序保留1GB 的内存区,然后将物理内存调配给其中的很小一部分(1MB) 。这就是清单6-2 介绍的处理一个假想的数据库应用程序的方法:保留整个块,然后按要求在其一小部分内进行读操作,让系统将用过的区域换页到磁盘中。利用 VirtualLock() API ,Windows 可用来在自己的进程空间中控制虚拟内存的行为。这个函数与其成对的VirtualUnlock() 阻止或允许一块内存从物理RAM中换页和换页到页面文件中。这样就会通知系统有一段特定的内存区要求对用户作出强烈的响应,所以系统不应将其移出 RAM 。当然,如果要将整个虚拟内存空间锁定,系统就会停留于试图将系统中工作内存的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - 10 每一小块换页到磁盘。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -
限制150内