1、学生所在学院计算机科学与技术学院指导教师实验室名称地点计算机基础第七实验室 21B475 哈尔滨工程大学一、实验概述1. 实验名称2. 实验目的(1)通过查看物理存储器的使用情况,并练习分配和回收物理内存,从而掌握物理存储器的管理方法。(2)通过查看进程逻辑地址空间的使用情况,并练习分配和回收虚拟内存,从而掌握进程逻辑地址空间的管理方法。 3. 实验类型验证设计4. 实验内容(1)、准备实验(2)、执行控制台命令“pm”,查看物理存储器的信息(3)、分配物理页和释放物理页: a. 在pm命令函数中添加分配物理页和释放物理页的代码 b. 单步调试分配物理页和释放物理页(4)、执行控制台命令“vm
2、”,查看系统进程的虚拟地址描述符信息 执行控制台命令“vm”,查看当创建了一个应用程序进程后,系统进程和应用程序进程中虚拟地址描述符的信息 (5)、在系统进程中分配虚拟页和释放虚拟页 (6)、在应用程序进程中分配虚拟页和释放虚拟页(7)、结束实验二、实验环境Windows XP操作系统+OSlab试验平台三、实验过程1. 设计思路和流程图2. 算法实现3. 需要解决的问题及解答4. 主要数据结构、实现代码及其说明a. 调用API函数VirtualAlloc,分配一个整型变量所需的空间,并使用一个整型变量的指针指向这个空间。b. 修改整型变量的值为0xFFFFFFFF。在修改前输出整型变量的值,
3、在修改后再输出整型变量的值。c. 调用API函数Sleep,等待10秒钟。d. 调用API函数VirtualFree,释放之前分配的整型变量的空间。e. 进入死循环,这样应用程序就不会结束。5. 源程序并附上注释#include EOSApp.hint main(int argc, char* argv)#ifdef _DEBUG _asm(int $3n nop);#endif /* TODO: 在此处添加自己的代码 */ INT *d; if(d=VirtualAlloc(0,sizeof(int),MEM_RESERVE|MEM_COMMIT) /调用API函数VirtualAlloc,
4、分配一个整型变量所需的空间,并使用一个整型变量的指针指向这个空间。 printf(Allocated %d bytes virtual memory of 0x%xnn,sizeof(int),d);virtual memory original value:0x%xnn,*d);/输出原始整型变量的值 *d=0xFFFFFFFF;/修改整型变量的值为0xFFFFFFFFvirtual memory new value:/输出修改后的整型变量的值nWait for 10 secondsn Sleep(10000);/ 调用API函数Sleep,等待10秒钟。系统以毫秒为单位 if(Virtua
5、lFree(d,0,MEM_RELEASE)/ 调用API函数VirtualFree,释放之前分配的整型变量的空间 printf(nRealease virtual memory success!n else printf(realease errorn return -1; nEndless loop! for(;); /进入死循环,这样应用程序就不会结束 return 0; else errorn return -1;/若不能成功,打印error,并返回-1。Hello world!6. 程序运行时的初值和运行结果a.控制台命令“pm”执行的结果b. 分配物理页和释放物理页(1). 使用O
6、S Lab打开本实验文件夹中的pm.c文件(将文件拖动到OS Lab窗口中释放即可打开)。此文件中有一个修改后的ConsoleCmdPhysicalMemory函数,主要是在原有代码的后面增加了分配物理页和释放物理页的代码。(2). 使用pm.c文件中ConsoleCmdPhysicalMemory函数的函数体替换ke/sysproc.c文件中ConsoleCmdPhysicalMemory函数的函数体。(3). 按F7生成修改后的EOS Kernel项目。(4). 按F5启动调试。(5). 待EOS启动完毕,在EOS控制台中输入命令“pm”后按回车尝试在调用MiAllocateAnyPage
7、s函数时分配多个物理页,然后在调用MiFreePages函数时将分配的多个物理页释放,并练习调试这两个函数在分配多个物理页和释放多个物理页时执行的过程。我们把分配数量和释放数量设定为2:c.执行控制台命令“vm”,查看系统进程的虚拟地址描述符信息:d.执行控制台命令“vm”,查看当创建了一个应用程序进程后,系统进程和应用程序进程中虚拟地址描述符的信息:使用pt命令查看有应用程序运行时进程和线程的信息。创建了一个应用程序进程后,系统进程中虚拟地址描述符的信息。使用“vm”命令查看应用程序进程虚拟地址描述符的结果。分配虚拟页或者释放虚拟页后虚拟地址描述符及物理存储器的变化情况。正在启动 Virtu
8、al PC.开始调试.Total Vpn from 655360 to 657407. (0xA0000000 - 0xA07FFFFF)1# Vad Include 1 Vpn From 655360 to 655360. (0xA0000000 - 0xA0000FFF)2# Vad Include 2 Vpn From 655361 to 655362. (0xA0001000 - 0xA0002FFF)3# Vad Include 2 Vpn From 655365 to 655366. (0xA0005000 - 0xA0006FFF)4# Vad Include 2 Vpn Fro
9、m 655367 to 655368. (0xA0007000 - 0xA0008FFF)5# Vad Include 2 Vpn From 655369 to 655370. (0xA0009000 - 0xA000AFFF)6# Vad Include 2 Vpn From 655371 to 655372. (0xA000B000 - 0xA000CFFF)8# Vad Include 2 Vpn From 655375 to 655376. (0xA000F000 - 0xA0010FFF)10# Vad Include 2 Vpn From 655379 to 655380. (0x
10、A0013000 - 0xA0014FFF)5# Vad Include 2 Vpn From 655367 to 655368. (0xA0007000 - 0xA0008FFF)8# Vad Include 2 Vpn From 655373 to 655374. (0xA000D000 - 0xA000EFFF)12# Vad Include 2 Vpn From 655381 to 655382. (0xA0015000 - 0xA0016FFF)Free VMs base address: 0xA0003000. Size: 0x2000.7# Vad Include 2 Vpn From 655373 to 655374. (0xA000D000 - 0xA000EFFF)9# Vad Include 2 Vpn From 655377 to 655378. (0xA0011000 - 0xA0012FFF)11# Vad Include 2 Vpn From 655381 to 655382. (0xA0015000 - 0xA0016FFF)Zeroed Physical Page Count: 0.11# Vad Include 2 Vpn Fr
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1