欢迎来到天天文库
浏览记录
ID:27341851
大小:238.15 KB
页数:9页
时间:2018-12-02
《(第四讲物理存储器与进程逻辑地址空间的管理)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程名称操作系统实验课程编号0906553实验项目名称物理存储器与进程逻辑地址空间的管理学号年级2011姓名专业计算科学与技术学生所在学院计算科学与技术指导教师实验室名称地点21B276哈尔滨工程大学计算机科学与技术学院第四讲物理存储器与进程逻辑地址空间的管理一、实验概述1.实验名称物理存储器与进程逻辑地址空间的管理2.实验目的•通过查看物理存储器的使用情况,并练习分配和回收物理内存,从而掌握物理存储器的管理方法。•通过査看进程逻辑地址空间的使用情况,并练习分配和回收虚拟内存,从而掌握进程逻辑地址空间的管理方
2、法。3.实验类型验证+设计4.实验内容1准备实验2阅读控制台命令“pm”相关的源代码,并查看其执行的结果3分配物理页和释放物理页5在系统进程中分配虚拟页和释放虚拟页4阅读控制台命令“vm”相关的源代码,并查看其执行的结果6在应用程序进程中分配虚拟贞和释放虚拟贞二、实验环境EOS操作系统和OSLab集成实验环境。三、实验过程3.1阅读控制台命令“pm”相关的源代码,并查看其执行的结果阅读ke/sysproc.c文件中第1059行的ConsoleCmdPhysicalMemory函数,学习“pm”命令是如何统计并
3、输出物理存储器信息的。在阅读的过程中需要注意下面几点:•在统计输出物理存储器信息之前要关闭中断,之后要打开中断,这样可以防止在命令执行的过程中有其它线程分配或者释放物理页。•全局变量MiTotalPageFrameCount保存了物理页的总数。甸个物理页的大小是4KB,巾宏PAGESIZE定义。•全局变量MiZeroedPageCount和MiFreePageCount分别保存了零页和空闲页的数量。•计算已用物理页数量的方法是:物理页总数减去零页数呈,W减去空闲页数呈。按照下酣的步骤执行控制台命令“pm”,查
4、看物理存储器的信息:1.按F7生成在本实验3.1中创建的EOSKernel项目。2.按F5启动调试。3.待EOS启动完毕,在EOS控制台中输入命令“pm”后按回车。结果如下图1:IActionEditCDFloppyHelpCONSOLE-1(PressCtrl+F1^F8tosuitchconsoleuindou...)UeleonetoEOSshell>pnPageCount:8176.MemoryCount:8176*4096=33488896Byte.ZeroedPageCount:0.FreePag
5、eCount:7126.UsedPageCount:1050.>3.2分配物理页和释放物理页接下来,在pm命令函数屮添加分配物理贞和释放物理贞的代码,单步调试管理物理页的方法。按照下面的步骤修改pm命令的源代码:1.使用OSLab打开本实验文件夹中的pm.c文件(将文件拖动到OSLab窗口中释放即可打开)。此文件屮有一个修改后的ConsoleCmdPhysicalMemory函数,主要是在原有代码的后而增加了分配物理页和释放物理页的代码。2.使用pm.c文件中ConsoleCmdPhysicalMemory函
6、数的函数体替换ke/sysproc.c文件中ConsoleCmdPhysicalMemory函数的函数体。3.按F7生成修改后的EOSKernel项目。4.按F5启动调试。5.待EOS启动完毕,在EOS控制台中输入命令“pm”后按冋车。结果如下截图2:ActionEditCDFloppyHelpCONSOLE-1(PressCtrl+F1~F8tosuitchconsoUeleonetoEOSshell>pnPageCount:8176.MemoryCount:8176*4096=33488896Byte.Z
7、eroedPageCount:0.FreePageCount:7126.UsedPageCount:1050.******AfterAllocateOnePage******ZeroedPageCount:0.FreePageCount:7125.UsedPageCount:1051.mxxxmxAfterFreeOnePage******ZeroedPageCount:0.FreePageCount:7126.UsedPageCount:1050.3.3阅读控制台命令“vnT相关的源代码,并查看其执行的结果
8、阅读ke/sysproc.c文件中第959行的ConsoleCmdVM函数,学习“vm”命令是如何统计并输出进程的虚拟地址描述符信息的。在阅读的过程中需要注意下而儿点:•与“pm”命令输出的是整个系统的物理存储器的使用情况不同,“vm”命令输出的是某个进程的虚拟地址描述符信息,所以“vm”命令使用了一个参数一一进程ID,用来指定一个进程。这个进程既可以是系统进程,也可以是用户进程。•在统计输出指定进
此文档下载收益归作者所有