操作系统内存管理实验指导书.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:6 大小:57KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

操作系统内存管理实验指导书.doc

操作系统内存管理实验指导书.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验二内存管理实验一、实验目的掌握基本的主存分配和回收算法,了解Windows2000/XP的虚拟内存机制。学习使用Windows2000/XP的与内存相关的API函数。掌握请求分页存储管理方式。二、实验内容及要求实验内容使用Windows2000/XP的API函数,创建两个线程,一个用于模拟内存的分配活动,一个用于跟踪并记录内存分配过程中的内存变化情况,要求这两个线程使用信号量进行同步。每次内存分配按照相应的测试数据的要求进行操作。每个测试数据单元描述一次内存分配操作,测试数据有程序随机自动产生,并把产生的测试数据保存在一个文件中。模拟内存分配活动的线程可以从测试数据文件中读出要进行的内存操作。每个内存操作包括以下内容:时间:操作等待时间,即等待相应时间后执行内存分配操作(要求随机产生);块数:操作的内存页数(要求随机产生);操作类型:可以是保留(reserve)、提交(commit)、释放(release)、回收(decommit)、加锁(lock)、解锁(unlock);保留:在虚拟地址空间分配,不分配物理空间提交:在物理地址空间分配回收:释放物理空间,但保留虚拟空间释放:释放物理空间和虚拟空间加锁:常驻内存,即防止操作系统把对应的内存空间换出到外存可以将这些操作编号,存放于文件中。大小:指块的大小;访问权限:共五种PAGE_READONLY、PAGE_READWRITE、PAGE_EXCUTE、PAGE_EXECUTE_READ和PAGE_EXECUTE_READWRITE。可以将这些权限编号,存放于文件中。运行结果显示要求:每次内存分配操作给出一组此次分配的相关信息,包括操作类型、权限类型、分配的起始地址和大小等;每次内存分配操作之后给出一组关于系统和内存的当前状态的信息。实验要求学习并理解请求分页存储管理方式;学习了解虚拟存储技术的技术特点;熟悉实验环境,掌握相关API的使用方法;设计程序,实现以页为单位的虚拟内存分配方法;不限制所使用的程序设计语言;查阅有关资料;提交实验报告。三、相关知识介绍内存管理内存管理是Windows2000/XP执行体的一部分,是整个操作系统的重要组成部分。默认情况下,32位Windows2000/XP上每个用户进程可以占有2GB的私有地址空间,操作系统占有剩下的2GB。Windows2000/XP在x86体系结构上利用二级页表结构来实现虚拟地址向物理地址的变换。一个32位虚拟地址被解释为三个独立的分量——页目录索引、页表索引和字节索引——它们用于找出描述页面映射结构的索引。页面大小及页表项的宽度决定了页目录和页表索引的宽度。相关API的功能及使用下面给出的是本实验使用到的API的功能和使用方法简单介绍。可以通过GetSystemInfo,GlobalMemoryStatus和VirtualQuery来查询进程虚空间的状态。1)VOIDGetSystemInfo(LPSYSTEM_INFOlpSystemInfo);数据结构SYSTEMINFO定义如下:typedefstruct_SYSTEM_INFO{DWORDdwOemld;DWORDdwPageSize;LPVOIDlpMinimumApplicationAddress;LPVOIDlpMaximumApplicationAddress;DWORDdwActiveProcessorMask;DWORDdwNumberOfProcessors;DWORDdwProcessorType;DWORDdwAllocationGranularity;DWORDdwReserved;}SYSTEM_INFO,*LPSYSTEM_INFO;2)VOIDGlobalMemoryStatus(LPMEMORYSTATUSlpBuffer);数据结构MEMORYSTATUS定义如下:typedefstruct_MEMORYSTATUS{DWORDdwLength;DWORDdwMemoryLoad;DWORDdwTotalPhys;DWORDdwAvailPhys;DWORDdwTotalPageFile;DWORDdwAvailPageFile;DWORDdwTotalVirtual;DWORDdwAvailVirtual;}MEMORYSTATUS,*LPMEMORYSTATUS;3)DWORDVirtualQuery(LPCVOLDlpAddress,PMEMORY_BASIC_INFORMATIONlpBuffer,DWORDdwLength);数据结构MEMORY_BASIC_INFORMATION定义如下:ty