版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本文格式为Word版,下载可任意编辑 计算机操作系统内存分配实验报告 一、试验目的 熟悉主存的分派与回收。理解在不同的存储管理方式下,如何实现主存空间的分派与回收。把握动态分区分派方式中的数据结构和分派算法及动态分区存储管理方式及其实现过程。 二、试验内容和要求 主存的分派和回收的实现是与主存储器的管理方式有关的。所谓分派,就是解决多道作业或多进程如何共享主存空间的问题。所谓回收,就是当作业运行完成时将作业或进程所占的主存空间归还给系统。 可变分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需求,并且分区个数是可以调整的。当要装入一个作业时,根据作业需要的主存量查看是否有足够的空
2、闲空间,若有,则按需要量分割一个分区分派给该作业;若无,则作业不能装入,作业等待。随着作业的装入、完成,主存空间被分成大量大大小小的分区,有的分区被作业占用,而有的分区是空闲的。 试验要求使用可变分区存储管理方式,分区分派中所用的数据结构采用空闲分区表和空闲分区链来进行,分区分派中所用的算法采用首次适应算法、最正确适应算法、最差适应算法三种算法来实现主存的分派与回收。同时,要求设计一个实用友好的用户界面,并显示分派与回收的过程。同时要求设计一个实用友好的用户界面,并显示分派与回收的过程。 三、试验主要仪器设备和材料 试验环境 硬件环境:PC或兼容机 软件环境:VC+ 6.0 四、试验原理及设计
3、分析 某系统采用可变分区存储管理,在系统运行当然开始,假设初始状态下,可用的内存空间为640KB,存储器区被分为操作系统分区(40KB)和可给用户的空间区(600KB)。 (作业1 申请130KB、作业2 申请60KB、作业3 申请100KB 、作业2 释放 60KB 、作业4 申请 200KB、作业3释放100KB、作业1 释放130KB 、作业5申请140KB 、作业6申请60KB 、作业7申请50KB) 当作业1进入内存后,分给作业1(130KB),随着作业1、2、3的进入,分别分派60KB、100KB,经过一段时间的运行后,作业2运行完毕,释放所占内存。此时,作业4进入系统,要求分派2
4、00KB内存。作业3、1运行完毕,释放所占内存。此时又有作业5申请140KB,作业6申请60KB,作业7申请50KB。为它们进行主存分派和回收。 1、采用可变分区存储管理,使用空闲分区链实现主存分派和回收。 空闲分区链:使用链指针把所有的空闲分区链成一条链,为了实现对空闲分区的分派和链接,在每个分区的起始部分设置状态位、分区的大小和链接各个分区的前向指针,由状态位指示该分区是否分派出去了;同时,在分区尾部还设置有一后向指针,用来链接后面的分区;分区中间部分是用来存放作业的空闲内存空间,当该分区分派出去后,状态位就由“0置为“1。 设置一个内存空闲分区链,内存空间分区通过空闲分区链来管理,在进行
5、内存分派时,系统优先使用空闲低端的空间。 设计一个空闲分区说明链,设计一个某时刻主存空间占用状况表,作为主存当前使用基础。初始化空间区和已分派区说明链的值,设计作业申请队列以及作业完成后释放顺序,实现主存的分派和回收。要求每次分派和回收后显示出空闲内存分区链的状况。把空闲区说明链的变化状况以及各作业的申请、释放状况显示打印出来。 2.采用可变分区存储管理,分别采用首次适应算法、最正确适应算法和最坏适应算法实现 主存分派和回收。 3、主存空间分派 (1)首次适应算法 在该算法中,把主存中所有空闲区按其起始地址递增的次序排列。在为作业分派存储空间时,从上次找到的空闲分区的下一个空闲分区开始查找,直
6、到找到第一个能满足要求的空闲区,从中划出与请求的大小相等的存储空间分派给作业,余下的空闲区仍留在空闲区链中。 (2)最正确适应算法 在该算法中,把主存中所有空闲区按其起始地址递增的次序排列。在为作业分派存储空间时,从上次找到的空闲分区的下一个空闲分区开始查找,直到找到一个能满足要求的空闲区且该空闲区的大小比其他满足要求的空闲区都小,从中划出与请求的大小相等的存储空间分派给作业,余下的空闲区仍留在空闲区链中 (3)最坏适应算法 在该算法中,把主存中所有空闲区按其起始地址递增的次序排列。在为作业分派存储空间时,从上次找到的空闲分区的下一个空闲分区开始查找,直到找到一个能满足要求的空闲区且该空闲区的
7、大小比其他满足要求的空闲区都大,从中划出与请求的大小相等的存储空间分派给作业,余下的空闲区仍留在空闲区链中。 4、主存空间回收 当一个作业执行完成撤离时,作业所占的分区应当归还给系统。归还的分区假如与其它空闲区相邻,则应合成一个较大的空闲区,登记在空闲区说明链中,此时,相邻空闲区的合并问题,要求考虑四种状况: (1)释放区下邻空闲区(低地址邻接) (2)释放区上邻空闲区(高地址邻接) (3)释放区上下都与空闲区邻接 (4)释放区上下邻都与空闲区不邻接 五、程序流程图 main函数里的流程图 分派空间里的流程图 回收空间里的流程图 六、相关数据结构及关键函数说明 本程序采用了一个struct f
8、ree_table数据结构,里面包含分区序号(num)、起始地址(address)、分区长度(length)和分区状态(state)。还用了线性表的双性链表存储结构(struct Node),里面包含前区指针(prior)和后继指针(next)。一开始定义一条(含有first和end)的链,用开始指针和尾指针开创空间链表。然后分别按三种算法进行分派和回收。 在该程序中关键函数有,sort()、allocation()、recovery()、和First_fit()、Best_fit()、Worst_fit();其中sort()函数是用来整理分区序号的,如在删序号3时,她与前面序号2相连在一起了
9、,然后序号2中的长度总满足申请的内存大小,就会在序号2中分派,然后序号在2的基础上加1,一直加,加到与原本序号3的下一个序号也就是4相等,这时sort()就开始有明显的工作了;allocation()是分派空间的,也是过渡到三个算法中的,当三个算法中满足或者不满足分派请求,都会又返回值给allocation();recovery()是用来回收内存的,里面包含了四种状况相连结果,即释放区上与空闲区邻接、释放区下与空闲区邻接、释放区上下都与空闲区邻接、释放区上下都与空闲区不邻接这四种状况的结果。 七、源代码 #include #include #define OK 1 /完成 #define ER
10、ROR 0 /出错 typedef int Status; typedef struct free_table/定义一个空闲区说明表结构 int num; /分区序号 long address; /起始地址 long length; /分区大小 int state; /分区状态 ElemType; typedef struct Node/ 线性表的双向链表存储结构 ElemType data; struct Node *prior; /前趋指针 struct Node *next; /后继指针 Node,*LinkList; LinkList first; /头结点 LinkList end;
11、 /尾结点 int flag;/记录要删除的分区序号 Status Initblock()/开创带头结点的内存空间链表 first=(LinkList)malloc(sizeof(Node); end=(LinkList)malloc(sizeof(Node); first-prior=NULL; first-next=end; end-prior=first; end-next=NULL; end-data.num=1; end-data.address=40; end-data.length=600; end-data.state=0; return OK; void sort()/分区序
12、号重新排序 Node *p=first-next,*q; q=p-next; for(;p!=NULL;p=p-next) for(q=p-next;q;q=q-next) if(p-data.num=q-data.num) q-data.num+=1; /显示主存分派状况 void show() int flag=0;/用来记录分区序号 Node *p=first; p-data.num=0; p-data.address=0; p-data.length=40; p-data.state=1; sort(); printf(ntt主存空间分派状况n); printf(*nn); print
13、f(分区序号t起始地址t分区大小t分区状态nn); while(p) printf(%dtt%dtt%d,p-data.num,p-data.address,p-data.length); if(p-data.state=0) printf(tt空闲nn); else printf(tt已分派nn); p=p-next; printf(*nn); /首次适应算法 Status First_fit(int request) /为申请作业开拓新空间且初始化 Node *p=first-next; LinkList temp=(LinkList)malloc(sizeof(Node); temp-data.length=request; temp-data.state=1; p-data.num=1; while(p) if(p-data.state=0) return OK; break; else if(p-data.state=0) temp-next=p; temp-data.address=p-data.address; temp-data.num=p-data.num; p-pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学考试管理制度
- 买卖合同(供进口成套设备用)5篇
- 二零二五年度驾校应急处理与安全保障合同3篇
- 第17章-第1节-总需求曲线教材课程
- 《科幻小说赏析与写作》 课件 第3、4章 “太空歌剧”的探索与开拓-《2001太空漫游》;“生命奇迹”的重述与复魅-《弗兰肯斯坦》
- 二零二五年度网络安全风险评估与维保服务合同3篇
- 2024年陇南市精神病康复医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 二零二五年度高端制造项目反担保协议3篇
- 2024年阳江市人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 2024年河南机电职业学院高职单招语文历年参考题库含答案解析
- DB21∕T 3240-2020 芹菜农药安全使用生产技术规程
- 科研办公楼施工组织设计
- 2024年江西水利职业学院单招职业技能测试题库及答案解析
- 《交换机基本原理》课件
- 向电网申请光伏容量的申请书
- 1-27届希望杯数学竞赛初一试题及答案
- 2024-2030年中国硫磺行业供需形势及投资可行性分析报告版
- 新人教版八年级上册数学知识点归纳及常考题型
- 传统与现代结合:《剪窗花》2024年教学课件
- 冷冻设备租赁合同
- DB41T 2199-2021 固定污染源废气 氨排放连续监测技术规范
评论
0/150
提交评论