操作系统课程设计-模拟设计页式存储管理的分配与回收.pdf
《操作系统课程设计-模拟设计页式存储管理的分配与回收.pdf》由会员分享,可在线阅读,更多相关《操作系统课程设计-模拟设计页式存储管理的分配与回收.pdf(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品.学 号:0120910340228 课 程 设 计 题 目 模拟设计页式存储管理的分配与回收 学 院 计算机科学与技术 专 业 计算机科学与技术 班 级 XX 姓 名 XX 指导教师 XXX 2011 年 01 月 09 日 精品.课程设计任务书 学生姓名:XX 专业班级:计算机 0902 班 指导教师:XXX 工作单位:计算机科学与技术学院 题 目:模拟设计页式存储管理的分配与回收 初始条件:1预备内容:阅读操作系统的内存管理章节内容,了解有关虚拟存储器、页式存储管理等概念,并体会页式管理内存的分配和回收过程。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务:(包括课程设计
2、工作量及其技术要求,以及说明书撰写等具体要求)1采用页式管理方案实施内存分配和回收。能够处理以下的情形 能够输入给定的内存页面数,页面大小,进程的个数及每个进程的页数。要求当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后内存空间的使用情况(被进程占用的页面,空闲的页面)。2设计报告内容应说明:课程设计目的与功能;需求分析,数据结构或模块说明(功能与框图);源程序的主要部分;测试用例,运行结果与运行情况分析;自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和
3、教训);iv)完成本题是否有其他的其他方法(如果有,简要说明该方法);v)对实验题的评价和改进意见,请你推荐设计题目。时间安排:设计安排一周:周 1、周 2:完成程序分析及设计。周 2、周 3:完成程序调试及测试。周 4、周 5:验收,撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按 0 分记)指导教师签名:年 月 日 系主任(或责任教师)签名:年 月 日 精品.模拟设计页式存储管理 的分配与回收 1 需求分析 页式管理是一种内存空间存储管理的技术,页式管理分为静态页式管理和动态页式管理。基本原理是将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页
4、的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。图 1 页的划分 图 2 基本页表示例 精品.静态分页管理的第一步是为要求内存的作业或进程分配足够的页面。系统通过 存储页面表、请求表以及页表来完成内存的分配工作。页表指的是内存中的一块固定存储区。页式管理时每个进程至少有一个页表。请求表指的是用来确定作业或进程的虚拟空间的各页在内存中的实际对应位置;另外整个系统有一个存储页面表,其描述了物理内存空间的分配使用状况。图 3 请求表的示例 存
5、储页面表有两种构成方法:1、位示图法 2、空闲页面链表法 模拟设计页式存储管理的分配与回收要求能够满足如下的要求:(1)输入给定的内存页面数,页面大小,进程的个数及每个进程的页数。(2)要求当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后内存空间的使用情况(被进程占用的页面,空闲的页面)。精品.2 功能设计 2.1 算法分析 首先,请求表给出进程或作业要求的页面数。然后,由存储页面表检查是否有足够的空闲页面,如果没有,则本次无法分配。如果有则首先分配设置页表,并请求表中的相应表项后,按一定的查找算法搜索出所要求的空闲页面,并将对应的页好填入页表中。图 4 分配页面的算法流
6、程 精品.2.2 数据结构 页式管理把内存空间按页的大小划分成片或者页面,再按照一定的规律建立起页表,并通过请求表将分配内容显示出来.将页表和请求表的内容使用结构体来定义是比较方便的./页表项结构 typedef struct _pagetableitem pageid pagenum;/页号 blockid blocknum;/块号 pgtabitem;/页表 typedef pgtabitem*pagetable;/请求表结构 typedef struct _reqtable unsigned pid;/进程号 unsigned reqpagenum;/请求页面数 pagetable pg
7、tabadr;/页表始址 bool state;/状态 reqtabitem;请求表还引入了支持快速插入和删除的 list 顺序容器来进行相关操作.list reqtable 精品.因为模拟设计的关系,页面的起始地址均应该为随机的数值,所以程序在 设计过程中加入了随机数类的编写.class RandomNumber private:unsigned long randseed;public:RandomNumber(unsigned long s=0);unsigned short Random(unsigned long n);double fRandom(void);采用当前系统的时间值来
8、生成伪随机数分配地址.定义随机数产生器:RandomNumber random 定义内存页面数:int pagenum 定义页面大小:int pagesize 定义进程个数:int pnum 用整数数组模拟分配的内存页面数 int*mempage=new intpagenum 2.3 模块说明 2.3.1 主函数 主函数依次运行了程序中所实现的关键函数.int main()InitSys();/初始化系统 MainChoice();/输出系统菜单 Destroy();/释放申请的动态内存 return 0;精品.2.3.2 各个功能函数 初始化内存页面:void Init_Mempage(vo
9、id)获取内存使用情况:int Get_Mempagenum(void)初始化默认的请求表:void Init_Reqtable(void)为默认的进程分配内存:void Init_DistMem(void)手动创建进程,并分配内存:void Dist_Mem(void)释放申请的动态内存:void Destroy(void)结束指定进程:void Kill(void)2.3.3 打印函数 打印出进程请求表:void PrintReqtable(void)打印出页表:void PrintPageTable(void)打印出内存使用情况:void PrintMem(void)打印出物理块的大小:
10、void PrintBlockSize(void)2.3.4 其他函数 初始化系统:void InitSys(void)输出主菜单:void MainMenu(void)选择运行分支:void MainChoice()精品.3 开发平台 3.1 开发平台(1)使用系统:Windows 7(2)使用语言:C+(3)开发工具:Visual C+2008 4 测试用例,运行结果与运行情况分析 4.1 测试方法 通过输入正常数据以及非正常数据对程序进行全方位测试 4.2 测试结果(1)程序主界面 精品.(2)输入进程号和页面数:(3)显示进程页表:精品.(4)显示请求表 (5)显示内存使用情况以及物理
11、块大小 精品.(6)错误检验 精品.精品.5 源程序的主要部分#include#include#include#include#include page.h#include Random.h using namespace std;list reqtable;RandomNumber random;/随机数产生器 unsigned pagenum=random.Random(80)+21;/内存页面数 21-100 unsigned pagesize=random.Random(16)+5;/页面大小 5-20 unsigned pnum=random.Random(4)+5;/进程的个数 5
12、-8 int*mempage=new intpagenum;/用整数数组模拟内存页面数 /*初始化内存页面*/void Init_Mempage(void)int i=0;for(i=0;iint(pagenum);i+)mempagei=0;/数组全部赋初值 /*获取内存的使用情况*/int Get_Mempagenum(void)int sum=0;for(int i=0;iint(pagenum);i+)if(mempagei=0)sum+;return sum;/判断有多少内存页面已经被使用 /*初始化默认的请求表*/void Init_Reqtable(void)int i;for(
13、i=1;i=int(pnum);i+)reqtabitem preq;preq.pid=i;preq.reqpagenum=random.Random(4)+2;/进程请求的页面大小-5 preq.state=false;preq.pgtabadr=NULL;reqtable.push_back(preq);/依次压入容器 精品./*为默认的进程分配内存*/void Init_DistMem(void)int reqpnum;/进程请求页面数 int i;list:iterator pos=reqtable.begin();for(;pos!=reqtable.end();pos+)reqpn
14、um=(*pos).reqpagenum;if(reqpnumint(Get_Mempagenum()/判断请求的内存页面数目是否大于剩余的 cout没有足够的内存!endl;coutendl;else (*pos).state=true;pagetable temp=new pgtabitemreqpnum;/新建临时页表项数组 if(temp=NULL)cout内存分配失败!endl;exit(0);(*pos).pgtabadr=temp;for(i=0;ireqpnum;i+)tempi.pagenum=i;/页表的页号 int randnum=random.Random(pagenu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 模拟 设计 存储 管理 分配 回收
限制150内