logo资料库

浙江理工大学操作系统实验3+主存空间的分配与回收实验报告.doc

第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
资料共23页,剩余部分请下载后查看
实验 3 主存空间的分配与回收 2017329600034 蒋甜甜 17 计算机科学与技术 1 班 1、 实验题目 采用可变式分区管理,使用首次或最佳适应算法实现主存的分配与回收 2、 实验内容 主存是中央处理机能直接存取指令和数据的存储器。能否合理而有效地使用主存,在很 大程度上将影响到整个计算机系统的性能。本实验采用可变式分区管理,使用首次或最 佳适应算法实现主存空间的分配与回收。要求采用分区说明表进行。 3、 实验目的 通过本次实验,帮助学生理解在可变式分区管理方式下,如何实现主存空间的分配与回 收。 提示: (1) 可变式分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需要, 并且分区个数是可以调整的。当要装入一个作业时,根据作业需要的主存量,查看 是否有足够的空闲空间,若有,则按需求量分割一部分给作业;若无,则作业等待。 随着作业的装入、完成,主存空间被分割成许多大大小小的分区。有的分区被作业 占用,有的分区空闲。例如,某时刻主存空间占用情况如图 1 所示。 0 10K 20K 45K 65K 110K 256K 操作系统(10KB) 作业 1(10KB) 作业 4(25KB) 空闲区 1(20KB) 作业 2(45KB) 空闲区 2(146KB) 图 1 主存空间占用情况 表 1 空闲区说明表 起始地址 45K 110K 长度 20KB 146KB … … 状态 未分配 未分配 空表目 空表目 空表目 … 为了说明哪些分区是空闲的,可以用来装入新的作业,必须要有一张空闲区说明表,如 表 1 所示。 其中,起始地址指出各空闲区的主存起始地址,长度指出空闲区大小。 状态栏未分配指该栏目是记录的有效空闲区,空表目指没有登记信息。 由于分区个数不定,所以空闲区说明表中应有足够的空表目项,否则造成溢出,无法登记。 同样,再设一个已分配区表,记录作业或进城的主存占用情况。
表 2 已分配区说明表 起始地址 0 10K 20K 65K 长度 10KB 10KB 25K 45K … … 状态 已分配 已分配 已分配 已分配 空表目 … (2) 当有一个新作业要求装入主存时,必须查空闲区说明表,从中找出一个足够大的空 闲区。有时找到的空闲区可能大于作业需求量,这时应该将空闲区一分为二。一个 分给作业,另一个仍作为空闲区留在空闲区表中。为了尽量减少由于分割造成的碎 片,尽可能分配低地址部分的空闲区,将较大空闲区留在高地址端,以利于大作业 的装入。为此在空闲区表中,按空闲区首地址从低到高进行登记。为了便于快速查 找,要不断地对表格进行紧缩,即让“空表目”项留在表的后部。其分配框图如图 2 所示。 (3)当一个作业执行完时,作业所占用的分区应归还给系统。在归还时要考虑相邻空闲区 合并的问题。作业的释放区与空闲区的邻接分一下 4 种情况考虑:
A.释放区下邻(低地址邻接)空闲区; B.释放区上邻(高地址邻接)空闲区; C.释放区上下都与空闲区邻接; D.释放区与空闲区不邻接。 首次适应算法回收框图如图 3 所示。 若采用最佳适应算法,则空闲区说明表中的空闲区按其大小排序。有关最佳适应算法 的分配和回收框图由学生自己给出。
图 4 最佳适应算法分配框图
图 5 最佳适应算法回收框图 (4)请按最佳适应算法设计主存分配和回收程序。以图 1 作为主存当前使用的基础,初始 化空闲区和已分配区说明表的值。学生自己设计一个作业申请队列以及作业完成后的释放顺 序,实现主存的分配与回收。把空闲区说明表的变化情况以及各作业的申请、释放情况显示 或打印出来。 为了说明哪些分区是空闲的,必须要有一张空闲区说明表,格式如下表所示: 起始地址 20K 80K 150K 300K 600K … … 长度 20K 50K 100K 30K 100K … … 状态 1 1 1 0(空表目) 1 空表目 …
代码: #include #include #include using namespace std; typedef struct{ int start_address; int size; bool flag;//false 未占用,true 已占用 }AreaStruct; const int len=10; AreaStruct freearea[len]; bool cmp(AreaStruct x,AreaStruct y){ return x.size=work[pos].size){ cout<<"为序号为"<
="<
="<
分享到:
收藏