模拟设计页式存储管理分配和回收.doc

模拟设计页式存储管理分配和回收.doc

ID:59245463

大小:305.50 KB

页数:18页

时间:2020-09-08

模拟设计页式存储管理分配和回收.doc_第1页
模拟设计页式存储管理分配和回收.doc_第2页
模拟设计页式存储管理分配和回收.doc_第3页
模拟设计页式存储管理分配和回收.doc_第4页
模拟设计页式存储管理分配和回收.doc_第5页
资源描述:

《模拟设计页式存储管理分配和回收.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、题目:模拟设计页式存储管理的分配与回收1需求分析页式管理是一种内存空间存储管理的技术,页式管理分为静态页式管理和动态页式管理。基本原理是将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(pageframe),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。图1页的划分图2基本页表示例静态分页管理的第一步是为要求内存的作业或进程分配足够的页面。系统通过存储页面表、请求表以及页表来完

2、成内存的分配工作。页表指的是内存中的一块固定存储区。页式管理时每个进程至少有一个页表。请求表指的是用来确定作业或进程的虚拟空间的各页在内存中的实际对应位置;另外整个系统有一个存储页面表,其描述了物理内存空间的分配使用状况。图3请求表的示例存储页面表有两种构成方法:1、位示图法 2、空闲页面链表法模拟设计页式存储管理的分配与回收要求能够满足如下的要求:(1)输入给定的内存页面数,页面大小,进程的个数及每个进程的页数。(2)要求当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后内存空间的使用情况(被进程占用的页面,空闲的页面

3、)。2功能设计2.1算法分析首先,请求表给出进程或作业要求的页面数。然后,由存储页面表检查是否有足够的空闲页面,如果没有,则本次无法分配。如果有则首先分配设置页表,并请求表中的相应表项后,按一定的查找算法搜索出所要求的空闲页面,并将对应的页好填入页表中。图4分配页面的算法流程2.2数据结构页式管理把内存空间按页的大小划分成片或者页面,再按照一定的规律建立起页表,并通过请求表将分配内容显示出来.将页表和请求表的内容使用结构体来定义是比较方便的.//页表项结构typedefstruct_pagetableitem{pageidpagenum;/

4、/页号blockidblocknum;//块号}pgtabitem;//页表typedefpgtabitem*pagetable;//请求表结构typedefstruct_reqtable{unsignedpid;//进程号unsignedreqpagenum;//请求页面数pagetablepgtabadr;//页表始址boolstate;//状态}reqtabitem;请求表还引入了支持快速插入和删除的list顺序容器来进行相关操作.listreqtable因为模拟设计的关系,页面的起始地址均应该为随机的数值,所

5、以程序在设计过程中加入了随机数类的编写.classRandomNumber{private:unsignedlongrandseed;public:RandomNumber(unsignedlongs=0);unsignedshortRandom(unsignedlongn);doublefRandom(void);};采用当前系统的时间值来生成伪随机数分配地址.定义随机数产生器:RandomNumberrandom定义内存页面数:intpagenum定义页面大小:intpagesize定义进程个数:intpnum用整数数组模拟分配的内存页

6、面数int*mempage=newint[pagenum]2.3模块说明2.3.1主函数主函数依次运行了程序中所实现的关键函数.intmain(){InitSys();//初始化系统MainChoice();//输出系统菜单Destroy();//释放申请的动态内存return0;}2.3.2各个功能函数初始化内存页面:voidInit_Mempage(void)获取内存使用情况:intGet_Mempagenum(void)初始化默认的请求表:voidInit_Reqtable(void)为默认的进程分配内存:voidInit_DistM

7、em(void)手动创建进程,并分配内存:voidDist_Mem(void)释放申请的动态内存:voidDestroy(void)结束指定进程:voidKill(void)2.3.3打印函数 打印出进程请求表:voidPrintReqtable(void)打印出页表:voidPrintPageTable(void)打印出内存使用情况:voidPrintMem(void)打印出物理块的大小:voidPrintBlockSize(void)2.3.4其他函数初始化系统:voidInitSys(void)输出主菜单:voidMainMenu(v

8、oid)选择运行分支:voidMainChoice()3开发平台3.1开发平台(1)使用系统:Windows7(2)使用语言:C++(3)开发工具:VisualC++20084测

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。