1、. .师学院计算机系实验报告20212021 学年第二学期课程名称 操作系统 实验名称实验四 存储管理专 业计算机科学与技术非师年 级 2021级 学号 B2021102147 XX 秋指导教师 远帆 实验日期 2021 -05-20实验目的与要求:(1)通过对Windows 7“任务管理器、“计算机管理、“我的电脑属性、“系统信息、“系统监视器等程序的应用,学习如观察和调整Windows的存性能,加深对操作系统存储管理、虚拟存储管理等理论知识的理解。(2)了解Windows 7的存构造和虚拟存的管理,理解进程的虚拟存空间和物理存的映射关系。实验设备环境:1一台安装有Cygwin Termin
2、al的计算机2 Windows 7操作系统3VC+6.0实验容:1观察和调整Windows的存性能。2了解和检测进程的虚拟存空间。实验步骤、实验结果及分析:1观察和调整Windows的存性能。1:阅读“背景知识,请答复:1) 什么是“分页过程?分页过程就是将信息从主存移动到磁盘进展临时存储的过程。2什么是“存共享?允访问某些存空间而不危及它和其他应用程序的平安性和完整性。3什么是“未分页合并存和“分页合并存?Windows 2000中,未分页合并存的最大限制是多少?未分页合并存:分页合并存是存储迟早需要的可分页代码或数据的存局部。 分页合并存:未分页合并存包含必须驻留在存中的占用代码或数据。
3、在Windows7中为分业合并存的最大限制是256MB。1) Windows 分页文件默认设置的最小容量和最大容量是多少?存数量的1.5倍作为分页文件的最小容量,这个最小容量的两倍作为最大容量。2:登录进入Windows Professional。3:查看包含多个实例的应用程序的存需求。1) 启动想要监视的应用程序,例如Word。2) 右键单击任务栏以启动“任务管理器。3) 在“Windows任务管理器对话框中选定“进程选项卡。4) 向下滚动在系统上运行的进程列表,查找想要监视的应用程序。请在表4-3中记录:表4-3 实验记录映像名称PIDCPUCPU时间存使用 WINWORD.EXE 516
4、0 00 0:00:10 22772k图1 word运行情况“存使用列显示了该应用程序的一个实例正在使用的存数量。5) 启动应用程序的另一个实例并观察它的存需求。请描述使用第二个实例占用的存与使用第一个实例时的存比照情况:第二个实例占用存22772K,比第一个实例占用的存大很多4:未分页合并存。估算未分页合并存大小的最简单法是使用“任务管理器。未分页合并存的估计值显示在“任务管理器的“性能选项卡的“核心存局部。总数 (K) :_220_分页数:_未分页 (K) :_34_图2核心存还可以使用“任务管理器查看一个独立进程正在使用的未分页合并存数量和分页合并存数量。操作步骤如下:1) 单击“Win
5、dows任务管理器的“进程选项卡,然后从“查看菜单中选择“选择列命令,显示“进程选项卡的可查看选项。2) 在“选择列对话框中,选定“页面缓冲池选项和“非页面缓冲池选项旁边的复选框,然后单击“确定按钮。返回Windows “任务管理器的“进程选项卡时,将看到其中增加显示了各个进程占用的分页合并存数量和未分页合并存数量。仍以刚刚翻开观察的应用程序 (例如Word) 为例,请在表4-4中记录:表4-4 实验记录映像名称PID存使用页面缓冲池非页面缓冲池 WINWORD.EXE 2964 37488 951 42从性能的角度来看,未分页合并存越多,可以加载到这个空间的数据就越多。拥有的物理存越多,未分
6、页合并存就越多。但未分页合并存被限制为256MB,因此添加超出这个限制的存对未分页合并存没有影响。5:提高分页性能。在Windows 2000的安装过程中,将使用连续的磁盘空间自动创立分页文件(pagefile.sys) 。用户可以事先监视变化的存需求并正确配置分页文件,使得当系统必须借助于分页时的性能到达最高。虽然分页文件一般都放在系统分区的根目录下面,但这并不总是该文件的最正确位置。要想从分页获得最正确性能,应该首先检查系统的磁盘子系统的配置,以了解它是否有多个物理硬盘驱动器。1) 在“开场菜单中单击“设置 “控制面板命令,双击“管理工具图标,再双击“计算机管理图标。2) 在“计算机管理窗
7、口的左格选择“磁盘管理管理单元来查看系统的磁盘配置。如果系统只有一个硬盘,那么建议应该尽可能为系统配置额外的驱动器。这是因为:Windows 2000最多可以支持在多个驱动器上分布的16个独立的分页文件。为系统配置多个分页文件可以实现对不同磁盘I/O请求的并行处理,这将大大提高I/O请求的分页文件性能。请在表4-5中记录:表4-5 实验记录卷布局类型文件系统容量状态 C 简单 根本 NTFS 30G 良好系统 D 简单 根本 NTFS 90G 良好 E 简单 根本 NTFS 90G 良好 F 简单 根本 NTFS 88G 良好图3磁盘情况6:计算分页文件的大小。要想更改分页文件的位置或大小配置
8、参数,可按以下步骤进展:1) 右键单击桌面上的“我的电脑图标并选定“属性。2) 在“高级选项卡上单击“性能选项按钮。3) 单击对话框中的“虚拟存区域中的“更改按钮。请记录:所选驱动器的页面文件大小:驱动器:_F_可用空间:_9825_ MB初始大小 (MB) :_ 2048_最大值 (MB) :_4092_所有驱动器页面文件大小的总数:允的最小值:_16_ MB推荐:_4590_ MB当前已分配:_2048_ MB4) 要想将另一个分页文件添加到现有配置,在“虚拟存对话框中选定一个还没有分页文件的驱动器,然后指定分页文件的初始值和最大值 (以兆字节表示) ,单击“设置,然后单击“确定。5) 要
9、想更改现有分页文件的最大值和最小值,可选定分页文件所在的驱动器。然后指定分页文件的初始值和最大值,单击“设置按钮,然后单击“确定按钮。6) 在“性能选项对话框中单击“确定按钮。7) 单击“确定按钮以关闭“系统特性对话框。7:使用任务管理器。可以使用“任务管理器来简单地检查分页文件是否配置了正确容量。这样可以实时提供系统正在使用分页文件的式以及其他重要系统信息的准确描述。通过右键单击任务栏运行“任务管理器,选定“性能选项卡查看实时的系统统计数据。与分页文件大小最有关的信息位于“认可用量区域。这一区域显示了认可“峰值是否到达或超过了认可“限制,以及它是否超过了系统上的物理存数量。认可“峰值是指系统
10、迄今为止向进程分配的最大物理存和虚拟存数量。请记录:物理存 (K)总数:_2022224_可用数:_1249540_系统缓存:_806992_认可用量 (K)总数:_930388_限制:_3960780_峰值:_1024464_当系统遇到分页活动增加的情况时,提交的存数量 (“认可总数) 就会增加。一旦它到达了“认可限制值,系统就需要扩展分页文件。“认可限制值指出在不必扩展分页文件的情况下可以向存提交的虚拟存数量。因为目标是防止扩展分页文件,所以必须保持“认可总数和“认可限制值相差较大。如果这两个值接近了,那么系统必须动态增加分页文件的大小。“任务管理器的“认可用量区域显示的信息还说明了系统的
11、主存是否足以满足系统执行的任务。如果认可“总数值经常超过系统中的存数量,那么系统的物理存可能缺乏。2了解和检测进程的虚拟存空间。1:创立一个“Win32 Consol Application工程,然后拷贝清单4-1中的程序,编译成可执行文件。2:在VC的工具栏单击“Execute Program(执行程序) 按钮,或者按Ctrl + F5键,或者在“命令提示符窗口运行步骤1中生成的可执行文件。排版要整理,要层次清楚,合理,内容清晰。3:根据运行结果,答复以下问题虚拟存每页容量为:_4.00KB_最小应用地址:_0x00010000_最大应用地址:_0x7ffeffff_当前可供应用程序使用的存
12、空间为:_1.99GB_当前计算机的实际存大小为:_3GB_理论上每个Windows应用程序可以独占的最大存储空间是:_3GB_按mitted、reserved、free等三种虚拟地址空间分别记录实验数据。其中“描述是指对该组数据的简单描述,例如,对以下一组数据:00010000 00017 mitted, READWRITE, Private可描述为:具有READWRITE权限的已调配私有存区。将系统当前的自由区 (free) 虚拟地址空间填入表4-6中。表4-6 实验记录地址大小虚拟地址空间类型访问权限描述00134048.0KBfreeNOACCESS 有任权限的已调配的共有存区0014
13、1060 KBfreeNOACCESS 有任权限的已调配的共有存区001b7000-001c000036 KBfreeNOACCESS没有任权限的已调配的共有存区00288032 KBfeeNOACCESS没有任权限的已调配的共有存区00391000-003a000060 KBfreeNOACCESS没有任权限的已调配的共有存区003b1000-003c000060 KBfreeNOACCESS没有任权限的已调配的共有存区003c1000-003d000060 KBfreeNOACCESS没有任权限的已调配的共有存区003d1000-003e000060KBfreeNOACCESS没有任权限的
14、已调配的共有存区003e1000-003f000060KBfreeNOACCESS没有任权限的已调配的共有存区003f1060 KBfreeNOACCESS没有任权限的已调配的共有存区00485044 KBfreeNOACCESS没有任权限的已调配的共有存区00491000-004a000060 KBfreeNOACCESS没有任权限的已调配的共有存区004a7-004b000056 KBfreeNOACCESS没有任权限的已调配的共有存区004b1000-004c00060KBfreeNOACCESS没有任权限的已调配的共有存区004c1000-004d000060KBfreeNOACCES
15、S没有任权限的已调配的共有存区004d7000-004e000036KBfreeNOACCESS没有任权限的已调配的共有存区004e7-00570000568KBfeeNOACCESS没有任权限的已调配的共有存区005900768KBfreeNOACCESS没有任权限的已调配的共有存区00185b01.72GBfreeNOACCESS没有任权限的已调配的共有存区70001055.3MBfreeNOACCESS没有任权限的已调配的共有存区73845000-74f5000023MBfreeNOACCESS没有任权限的已调配的共有存区74f59000-74f6000028KBfreeNOACCESS
16、没有任权限的已调配的共有存区74f9d01.94MBfreeNOACCESS没有任权限的已调配的共有存区751db02.33MBfreeNOACCESS没有任权限的已调配的共有存区75487036 KBfreeNOACCESS没有任权限的已调配的共有存区将系统当前的已调配区 (mitted) 虚拟地址空间填入表4-7中表4-7 实验记录地址大小虚拟地址空间类型访问权限描述00010000-0007064KBmittedREADWRITE具有READWRITE权限的已调配私有存区。00064KBmittedREADWRITE具有READWRITE权限的已调配私有存区。0012d000-0012e
17、0004KBmittedGUARD,READWRITE具有GUARD,READWRITE权限的已调配私有存区。0012e08KBmittedREADWRITE具有READWRITE权限的已调配私有存区。00130016 KBmittedREADONLY具有READONLY权限的已调配私有存区。0014004KBmittedREADWRITE具有READWRITE权限的已调配私有存区。00150000-001b7000412KBmittedREADONLY具有READONLY权限的已调配私有存区。001c0000-001c500020 KBmittedREADONLY具有READONLY权限的已
18、调配私有存区。00280012KBmittedREADONLY具有READONLY权限的已调配私有存区。0029001MBmittedREADONLY具有READONLY权限的已调配私有存区。003a0000-003a10004KBmittedREADWRITE具有READWRITE权限的已调配私有存区。003b0000-003b10004KBmittedREADWRITE具有READWRITE权限的已调配私有存区。003c0000-003c10004 KBmittedEX-READWRITE具有EX-READWRITE权限的已调配私有存区。003d0000-003d10004KBmitted
19、EX-READWRITE具有READWRITE权限的已调配私有存区。003e0000-003e10004KBmittedEX-READWRITE具有EX-READWRITE权限的已调配私有存区。003f0000-003f10004KBmittedEX-READWRITE具有EX-READWRITE权限的已调配私有存区。0040004KBmittedRX-READWRITE具有EX-READWRITE权限的已调配私有存区。004010444KBmittedEX-READ具有EX-READ权限的已调配私有存区。00470032KBmittedREADONLY具有READONLY权限的已调配私有存区
20、。00478000-0047b00012KBmittedREADWRITE具有READWRITE权限的已调配私有存区。0047b000-0047d0008KBmittedWRITECOPY具有WRITECOPY权限的已调配私有存区。0047d016KBmittedREADWRITE具有READWRITE权限的已调配私有存区。00481016KBmittedREADONLY具有READONLY权限的已调配私有存区。00490000-004sf000124KBmittedREADWRITE具有READWRITE权限的已调配私有存区。00590000-005978 KBmittedREADONLY具
21、有READONLY权限的已调配私有存区。将系统当前的保存区 (reserved) 虚拟地址空间填入表4-8中。表4-8 实验记录地址大小虚拟地址空间类型访问权限描述00030000-0012D0000.98MBreservedREADONLY具有READONLY权限的已调配私有存区001C50748KBreservedREADONLY具有READONLY权限的已调配私有存区00283020KBreservedREADONLY具有READONLY权限的已调配私有存区004AF0900KBreservedREADONLY具有READONLY权限的已调配私有存区00607036KBreservedR
22、EADONLY具有READONLY权限的已调配私有存区00613000-0067052KBreservedREADONLY具有READONLY权限的已调配私有存区0069d0844KBreservedREADONLY具有READONLY权限的已调配私有存区007c6011.6MBreservedREADONLY具有READONLY权限的已调配私有存区01370000-0146d0000.98MBreservedREADONLY具有READONLY权限的已调配私有存区014f3052KBreservedREADONLY具有READONLY权限的已调配私有存区实验结论:简单描述windows进程的
23、虚拟存管理案:通过对文件的操作权限,有只读,读写,不允访问等等和不同的调度式实现对虚拟存的管理。程序代码清单程序4-1代码:#include #include #include #include #pragma ment(lib, Shlwapi.lib)inline bool TestSet(DWORD dwTarget, DWORD dwMask) return (dwTarget &dwMask) = dwMask) ;# define SHOWMASK(dwTarget, type) if (TestSet(dwTarget, PAGE_#type) ) std : cout , #t
24、ype; void ShowProtection(DWORD dwTarget) SHOWMASK(dwTarget, READONLY) ; SHOWMASK(dwTarget, GUARD) ; SHOWMASK(dwTarget, NOCACHE) ; SHOWMASK(dwTarget, READWRITE) ; SHOWMASK(dwTarget, WRITECOPY) ; SHOWMASK(dwTarget, EXECUTE) ; SHOWMASK(dwTarget, EXECUTE_READ) ; SHOWMASK(dwTarget, EXECUTE_READWRITE) ; S
25、HOWMASK(dwTarget, EXECUTE_WRITECOPY) ; SHOWMASK(dwTarget, NOACCESS) ;void WalkVM(HANDLE hProcess) SYSTEM_INFO si; : ZeroMemory(&si, sizeof(si) ) ; : GetSystemInfo(&si) ; MEMORY_BASIC_INFORMATION mbi; : ZeroMemory(&mbi, sizeof(mbi) ) ; LPCVOID pBlock = (LPVOID) si.lpMinimumApplicationAddress; while (
26、pBlock si.lpMaximumApplicationAddress) if (: VirtualQueryEx( hProcess, pBlock, &mbi, sizeof(mbi)=sizeof(mbi) ) LPCVOID pEnd = (PBYTE) pBlock + mbi.RegionSize;TCHAR szSizeMAX_PATH; : StrFormatByteSize(mbi.RegionSize, szSize, MAX_PATH) ; std : cout.fill (0) ; std : cout std : hex std : setw(8) (DWORD)
27、 pBlock - std : hex std : setw(8) (DWORD) pEnd (: strlen(szSize)=7? ( : () szSize ) ; switch(mbi.State) case MEM_MIT :std : cout mitted ;break; case MEM_FREE :std : cout Free ;break; case MEM_RESERVE :std : cout Reserved ;break; if(mbi.Protect=0 & mbi.State!=MEM_FREE) mbi.Protect=PAGE_READONLY; Show
28、Protection(mbi.Protect); switch(mbi.Type) case MEM_IMAGE :std : cout , Image ;break;case MEM_MAPPED:std : cout , Mapped;break; case MEM_PRIVATE :std : cout 0) : PathStripPath(szFilename) ; std : cout , Module: szFilename; std : cout std : endl; pBlock = pEnd; void ShowVirtualMemory() SYSTEM_INFO si;
29、 : ZeroMemory(&si, sizeof(si) ) ; : GetSystemInfo(&si) ; TCHAR szPageSizeMAX_PATH; :StrFormatByteSize(si.dwPageSize, szPageSize, MAX_PATH) ; DWORD dwMemSize = (DWORD)si.lpMaximumApplicationAddress - (DWORD) si.lpMinimumApplicationAddress; TCHAR szMemSize MAX_PATH ; : StrFormatByteSize(dwMemSize, szM
30、emSize, MAX_PATH) ; std : cout Virtual memory page size: szPageSize std : endl; std : cout.fill (0) ; std : cout Minimum application address: 0x std : hex std : setw(8) (DWORD) si.lpMinimumApplicationAddress std : endl; std : cout Maximum application address: 0x std : hex std : setw(8) (DWORD) si.lp
31、MaximumApplicationAddress std : endl; std : cout Total available virtual memory: szMemSize std : endl ;void main()ShowVirtualMemory();:WalkVM(:GetCurrentProcess();实验分析:应用程序将物理存和虚拟存视为一个独立的实体,当主存缺乏时,系统会使用硬盘获取虚拟存,分页就是将信息从主存移动到磁盘进展临时存储的过程。但是使用分页会减低计算机的访问速度。实验总结包括过程总结、心得体会及实验改进意见等:1. 在命令提示符中运行应用程序时要先转到应用
32、程序所在的盘符下,要把应用程序所在目录位置输入正确,才能找到相应的程序运行。2. 存分为未分页合并存和分页合并存;分页合并存是存储迟早需要的可分页代码或数据的存局部;未分页合并存包含必须驻留在存中的占用代码或数据。3. 通过本次实验了解到了当物理存耗尽时可以采取的解决法,一个是加大物理存,一个是使用分页。虽然分页解决了存缺乏的问题,但是使用分页会降低系统的访问速度,而且只有一个物理硬盘驱动器的系统限制了优化分页性能的能力。所以可以使用多个物理驱动器的效劳器来使用多个分页文件来提高分页性能。分页文件最重要的配置参数是大小,太小或太大都不适合,并且应该尽量防止系统增加分页文件的大小。指导教师评语:完成所有规定的实验容,实验步骤正确,结果正确;以后需要进一步改进或注意的是:1实验目的与要求、实验设备、实验容格式要对齐。2源代码要进展命名以便区分。3标题文字首行缩进。4实验总结要分点讲述,并与分析、心得体会分开。成绩评定A优秀 教师签字 远帆 2021 年5月25日备注:注:1、报告的工程或设置,可根据实际情况加以补充和调整 2、教师批改学生实验报告应在学生提交实验报告10日. .word.zl.