实验三 可变分区存储管理

实验三 可变分区存储管理

ID:38675353

大小:130.19 KB

页数:6页

时间:2019-06-17

实验三   可变分区存储管理_第1页
实验三   可变分区存储管理_第2页
实验三   可变分区存储管理_第3页
实验三   可变分区存储管理_第4页
实验三   可变分区存储管理_第5页
资源描述:

《实验三 可变分区存储管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验三可变分区存储管理1.目的和要求通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。2.实验内容阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和原理。编写程序模拟实现内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时假定不做与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用64K。在t1时间之后,有作业A、B、C、D分别请求8K、16K、64K、124K的内存空间;在t2时间之后,作业C完成;在t3时

2、间之后,作业E请求50K的内存空间;在t4时间之后,作业D完成。要求编程序分别输出t1、t2、t3、t4时刻内存的空闲区的状态。3.实验环境Windows操作系统、VC++6.0C语言4.实验要求:1)上机前认真使用C语言编写好程序,采用VisualC++6.0作为编译环境;2)上机时独立调试程序3)根据具体实验要求,填写好实验报告(包括目的和要求、实验内容、实验环境、设计思想、源程序、实例运行结果、总结)。5.设计思想:本次实验编写的程序主要涉及四个函数start(),requireMemo(),freeMemo

3、()和past()。1.start()这个函数主要用来建立自由链队列和占用区队列,这两个队列用来分别存放自由节点和占用节点。在初始状态下,操作系统本身占用64k,它存放在占用区队列里,因此自由链队列里只有640-64=576k的空间,且起始地址为64。2.requireMemo()函数是该程序的核心算法,用来分配内存空间,该函数带两个参数,用来表示作业或进程名的name和表示作业或者进程名所申请空间的大小的require。由于此算法采用的是最坏适应算法,所以自由链队列中的空闲分区是按其容量从大到小的顺序排列的。因此

4、在这里需要分三种情况:①自由链队列的第一个空闲分区的容量大于require;②自由链队列的第一个空闲分区的容量等于require;③自由链队列的第一个空闲分区的容量小于require。在①情况下分配完后还需把剩余的部分重新按照容量大小给它在自由链队列里找到新位置。在②情况下只需分配,分配即把符合要求的空闲分区从自由链队列删除,并且插入到占用区队列的尾部。在删除需注意把原来处于分配分区的前后链接起来,否则队列将断掉。在③情况下,只需提示用户无法分配即可。3.freeMemo()函数也是该程序的核心算法,是用来回收作业

5、完成后不需使用的内存空间,它根据从main()函数中传递过来的参数name,遍寻占用区队列,找到与name匹配的作业,把他从占用区队列删除,插入到自由链队列里。在插入时,由于涉及到邻接区的合并问题,所以必须先遍寻整个自由链队列,找到是否有从占用区队列回收回来的空间邻接区,如果有,就将他们合并。做完邻接区的合并之后,再根据内存空间的大小,将整个自由链队列排序。6.源程序:1)程序中所定义的数据结构和全局变量//程序中自由链队列的结点类型可描述如下structfreelink{intlen,address;//len为

6、分区长度//address为分区起始地址structfreelink*next;};//内存占用区用链表描述,其结点类型描述如下structbusylink{charname;//作业或进程名name='S'表示OS占用intlen,address;structbusylink*next;};//并设全程量structfreelink*free_head=NULL;//自由链队列(带头结点)队首指针structbusylink*busy_head=NULL,//占用区队列队(带头结点)首指针*busy_tail=N

7、ULL;//占用区队列队队尾指针2)requireMemo()函数的具体实现://模拟内存分配函数voidrequireMemo(charname,intrequire){structbusylink*p;structfreelink*w,*u,*v;if(free_head->next->len>=require){if(free_head->next->len>require){p=(structbusylink*)malloc(sizeof(structbusylink));p->name=name;p->a

8、ddress=free_head->next->address;p->len=require;p->next=NULL;busy_tail->next=p;busy_tail=p;w=free_head->next;free_head->next=w->next;w->len=w->len-require;w->address=w->address+requ

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

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

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