主存储器空间的分配和回收实验报告.docx
《主存储器空间的分配和回收实验报告.docx》由会员分享,可在线阅读,更多相关《主存储器空间的分配和回收实验报告.docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、主存储器空间的安排和回收一、试验题目:(1) 在可变分区管理方式下采纳最先适应算法实现主存安排和实现主存回收在分页式管理方式下采纳位示图来表示主存安排状况,实现主存空间的安排和 回收二、试验目的:通过本实习关心理解在不同的存储管理方式下应怎样实现主存空间的安排和回收。三、试验原理:第一题:在可变分区管理方式下采纳最先适应算法实现主存安排和实现主存回收(1)可变分区方式是按作业需要的主存空间大小来分割分区的。当要装入一个作 业时,依据作业需要的主存量查看是否有足够的空闲空间,假设有,那么按需要 量分割一个分区安排给该作业;假设无,那么作业不能装入。随着作业的装入、 撤离,主存空间被分成很多个分区
2、,有的分区被作业占用,而有的分区是空 闲的。例如:操作系统05k10k14k26k32k作业2 作业3。 空闲区小 作业作128k为了说明哪些区是空闲的,可以用来装入新作业,必需要有一张空闲区说明 表,格式如下:占用的空间a=b;)bitmapa-kuaihao/8a-kuaihao%8=0;free(a);)void outputyebiao(YEBIAO *a)/输出页表的内容coutMMendl;docoutyehaosetw(4)kuaihaosetw(4)next;while(a!=NULL);遍历页表链表逐行输出页表项 coutendl;)void outputbit()输出主存安
3、排位视图cout”主存安排位视图如下:endl;coutnendl;for(int i=0;i8;i+)(for(int j=0;j8;j+) 一coutbitmapi jsetw(4);双重循环输出标识位图的内容)coutendl;)coutnnext=NULL;)else的队尾将要插入的进程插入到队尾(tem=head;while(tem-next!=NULL) (tem=tem-next;)tem-next=b;)return head;)PROGRESS *getprosess(PROGRESS *head)程安排空间PROGRESS *a;char na30;int size;cou
4、ix。请输入进程名:cinna;coutsize;输入进程的名称和所用内存空间大小if(sizefreecount)程cout”进程所需内存的大小大于空闲的内存, name na);a-size=size;进程的基本信息freecount-=size;用的页块数减去进程要用的页块数a-yb=allocation(size);/定位到链表/输入进程为进上面是假如进无法添加进程。开拓初始化/将可/为进程创立页表couty进程创立胜利! endl; a-next=NULL;/将进输出进程信息/推断进程队列是否/进程队列不为空,先return insert(head,a);程插入进程链表中) void
5、 outputprosess(PROGRESS *head)if(head=NULL)为空(cout 当前没有进程! endl; return;)do输出进程的名称和所占内存的大小。再输出进程的页表队列cout进程名为:,name进程所占内存的大小 为:size页”endl;cout”进程的页表如下:yb);head=head-next;while(head!=NULL);)PROGRESS * delecteprosess(PROGRESS *head)删除进程(char na30;PROGRESS *a,*b;couk”请输入要删除的进程名:使用进程的 名字来删除进程cinna;if (h
6、ead=NULL)/ / 假如进程为空,退出函数(cout”进程链表为空,没有进程可删除。“nameJ na)=0)/假如找到要删除的进程/先删除进/先删除进recovery(head-yb);程的页表并释放所占的页f reecount+=head-size;将可用的内存数加上进程所占的内孙a=head-next;free(head);/释放进程信息所占得内存空间cout“进程na删除胜利! next;b=head;while(a !=NULL)/遍历链表找到要删除的进程(if(strcmp(a-nameJ na)=0)recovery(a-yb);freecount+=a-size;b-ne
7、xt=a-next;free(a);cout“进程na删除胜利! next;)couf”您输入的进程名不对,删除进程失败。,,endl;return head;)void outbiaoti()cout,ttt主存空间的安排与回收模拟“endl;cout您可进行如下操作:工.查看内存安排状况;2 .查看进程;3.添加进程 4.删除进程“ endl;couttt 可用内存为“ reecountn;switch(n)case 1: outputbit();outbiaoti();break;system(,cls); output proses s( head); out biaoti(); br
8、eak;system(Hcis);head=getprosess(head);outbiaoti();break;case 2: system(cis);head=delecteprosess(head); outbiaoti();break;default: break;)六、运行结果:第一题:Problems Javadoc 匾 Declaration 里 Console 区terminatedJob Java Application C:Program FilesJa最初的内存南始士置大小工号025false0电注位量大小工号021false044true1nl.Z-3r r 2,匚-运
9、出士置大小工号011false044true11410true.一J一/K-v2过支士置大小状褥工号01false044true11410true22410true3-3强吃业2舌-三始土量大小工号01false044true11410false02410true3中Zt作u+E运为上置大小状旃工4号01false044true1145false02410true3295true4其次题:主存分配位视图如下:七、 试验心得:这次的试验相对来说较难,之前对内存那块学问也不是很清晰,但通过试验,也参考 了很多资料解释,但是还是对内存安排与回收有了更深化更清晰的了解,以后的程序编 写不管是试验还是工
10、程开发,无论大小,都应当把程序的整体框架构建好,提高重用性, 再进行一步步实现。起 址一长 度。状态Q第一栏14 KQ12未分配第二栏Q32 K296未分配一Irp空表目3甲PP空表目P(2)当有一个新作业要求装入主存时,必需查空闲区说明表,从中找出一个足够大 的空闲区。有时找到的空闲区可能大于作业需要量,这时应把原来的空闲区变成两部 分:一局部分给作业占用;另一局部又成为一个较小的空闲区。为了尽量削减由于分 割造成的空闲区,而尽量保存高地址局部有较大的连续空闲区域,以利于大型作业的 装入。为此,在空闲区说明表中,把每个空闲区按其地址挨次登记,即每个后继的空 闲区其起始地址总是比前者大。为了便
11、利查找还可使表格“紧缩”,总是让“空表目” 栏集中在表格的后部。(3)采纳最先适应算法(挨次安排算法)安排主存空间。依据作业的需要量,查空 闲区说明表,挨次查看登记栏,找到第一个能满意要求的空闲区。当空闲区大于需要 量时,一局部用来装入作业,另一局部仍为空闲区登记在空闲区说明表中。最先适应 安排算法如图:申请立主存区A否否出作不传入的第,个谈松出分配情改(4)当一个作业执行结束撤离时,作业所占的区域应当归还,归还的区域假如与其它 空闲区相邻,那么应合成一个较大的空闲区,登记在空闲区说明表中。例如,在提示 中列举的状况下,假如作业2撤离,归还所占主存区域时,应与上、下相邻的空闲区一 起合成一个大
12、的空闲区登记在空闲区说明表中。归还主存时的回收算法如图:(5)请按最先适应算法设计主存安排和回收的程序。然后按(1)中假设主存中已装入 三个作业,且形成两个空闲区,确定空闲区说明表的初值。现有一个需要主存量为6K的 作业4申请装入主存;然后作业3撤离;再作业2撤离。为它们进行主存安排和回收,把 空闲区说明表的初值以及每次安排或回收后的变化显示出来或打印出来:其次题:在分页式管理方式下采纳位示图来表示主存安排状况,实现主存空间的安排和 回收。(1)分页式存储器把主存分成大小相等的假设干块,作业的信息也按块的大小分页,作 业装入主存时可把作业的信息按页分散存放在主存的空闲块中,为了说明主存中哪些块
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 主存储器 空间 分配 回收 实验 报告
限制150内