可变分区存储管理实验报告程序设计思路和感悟.doc

可变分区存储管理实验报告程序设计思路和感悟.doc

ID:50388981

大小:59.00 KB

页数:13页

时间:2020-03-05

可变分区存储管理实验报告程序设计思路和感悟.doc_第1页
可变分区存储管理实验报告程序设计思路和感悟.doc_第2页
可变分区存储管理实验报告程序设计思路和感悟.doc_第3页
可变分区存储管理实验报告程序设计思路和感悟.doc_第4页
可变分区存储管理实验报告程序设计思路和感悟.doc_第5页
资源描述:

《可变分区存储管理实验报告程序设计思路和感悟.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验题目:可变分区存储管理一、实验目的可变分区存储管理方式是操作系统中存储管理的重要方式,其主要思想是用户作业进行连续存储,每次按照用户的请求,如果内存中有能满足用户作业大小的空闲区,就采用不同的算法分配给用户,否则,不分配,可变分区容易产生外零头。分区分配算法包括最佳适应算法、最坏适应算法、首次适应算法等。通过本实验可加深学生对存储器管理方式的把握以及分配算法的理解,并提高程序设计的能力。二、实验环境个人PC机WindowsXP操作系统I5-2400CPU3.10Ghz2GB内存C-FreeC语言程序设计软件三、实验的重点和难点可变分区的的收回四、实验内容利用C语言或C+

2、+语言或Java语言实现可变分区存储管理,具体要求如下:1.以一个一维数组模拟内存,数组类型为整型,共计1000个元素;2.用一个单链表表示可变分区空闲表,链表每个结点表示一个空闲区,每个结点信息包括起始地址、大小。3.分区分配算法采用最佳适应算法、首次适应算法,并将算法用函数实现。4.自己假设几个作业,包括作业的名称、大小,进入系统的顺序。5.初始内存中没有任何作业,随着用户输入的每一个作业的到来,动态为其分配内存。6.使用的算法用户要能够随时更换。五、实验结果或实验代码(1)可变式分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需要,并且分区个数可以调整。

3、当要装入一个作业时,根据作业需要的内存量,查看是否有足够的空闲空间,若有,则按需求量分割一部分给作业;若没有,则作业等待。随着作业的装入、完成,内存空间被分割成许多大大小小的分区。有的分区被作业占用,有的分区空闲。例如,某时刻内存空间占用情况如图1所示。操作系统(10KB)作业1(10KB)空闲区2(146KB)作业4(25KB)空闲区1(20KB)作业2(45KB)图1内存空间占用情况65K110K256K020K45K10K为了说明那些分区是空闲的,可以用来装入新作业,必须要有一张空闲区说明表,如表1所示。表1空闲区说明表起始地址长度状态45K20K未分配110K146

4、K未分配空表目空表目空表目………………其中,起始地址指出个空闲区的内存起始地址,长度指出空闲区的大小。状态(未分配:该栏目记录的是有效空闲区)状态(空表目:没有登记信息)由于分区个数不定,所以空闲区说明表中应该有足够的空表目项。否则造成溢出,无法登记。同样,再设一个已分配表,记录作业或进程的内存占用情况。(2)当有一个新作业要求装入内存时,必须查空闲区说明表,从中找出一个足够大的空闲区。有时找到的空闲区可能大于作业需求量,这时应将空闲区一分为二。一个分给作业,另外一个作为空闲区留在空闲区表中。为了尽量减少由于分割造成的碎片,尽可能分配低地址部分的空闲区,将较大空闲区留在高地

5、址端,以利于大作业的装入。为此在空闲区表中,按空闲区首地址从低到高进行登记。为了便于快速查找,要不断地对表格进行紧缩,即让“空表目”项留在表的后部。其分配框图如图2所示。开始申请XK内存J=0J=J+1查看第J个表目的登记项状态为“未分配”吗长度〉=XK?J为空闲区说明表的最后一个表目?置状态为“空表目”将空表目向后移长度=长度-XK始址=始址+XK登记已分配区表和空闲区表,输出系统中各数据结构的值。返回分配给作业的内存始址作业等待返回图2首次适应算法分配框图YYNN小于大于等于(3)当一个作业执行完成时,作业所占用的分区应归还给系统。在归还时要考虑相邻空闲区合并的问题。作

6、业的释放区与空闲区的邻接分以下4种情况考虑:l释放区下邻(低地址邻接)空闲区;l释放区上邻(高地址邻接)空闲区;l释放区上下都与空闲区邻接;l释放区与空闲区不邻接。首次适应算法回收框图如图3所示。图3首次适应算法回收框图有等待装入的作业吗?有与释放区下邻的空闲区吗?L=L+上邻空闲区长度有与释放区下邻的空闲区吗?开始S=释放区始址L=释放区长度查空闲区说明表有与释放区的高地址邻接(上邻)的空闲区吗?在空闲区说明表中找一空表目登记:地址=S长度=L状态=未分配按地址顺序调整和紧缩空闲区说明表把上邻空闲区登记栏中的状态置为“空表目”,且将空表目向后调整唤醒等待的作业并返回把上邻

7、空闲区登记栏中的始址改为S,长度改为L把下邻空闲区登记栏中的长度改为:长度=长度+L返回YYYYNNNN(4)请按首次适应算法设计内存分配和回收程序。以表2当前使用的基础,初始化空闲区和已分配区说明表值。设计一个作业申请队列以及作业完成后的释放顺序,实现内存的分配与回收。把空闲区说明表的变化情况以及各作业的申请、释放情况显示或打印出来。表2空闲区说明表起始地址长度状态20K20KB180K50KB1150K100KB1300K30KB0(空表目)600K100KB1…………空表目………………程序代码#include

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

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

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