第9章 主存空间的分配与回收
? 一 实验内容:
主存是中央处理机能直接存取指令和数据的存储器。能否合理而有效地使用主存,在很大程度上将影响到整个计算机系统的性能。实现主存空间的分配和回收。
? 二 实验目的:
本实验主要让大家熟悉主存的各种分配和回收。所谓分配,就是解决多道作业或多进程如何共享主存空间的问题。所谓回收,就是当作业运行完成时,将作业或进程所占用的主存空间还给系统。主存的分配与回收的实现是与主存储器的管理方式有关的。通过本实验,帮助学生理解在不同的存储器管理方式下,如何实现主存空间的分配与回收。
? 三 实验题目:
提示:采用可变分区管理,使用适当的算法实现主存的分配和回收 要求采用分区说明表进行。 提示:
(1)可变式分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需要,并且分区个数是可以调整的。当要装入一个作业时,根据作业需要的主存量,查看是否有足够的空闲空间,若有,则按需求量分割一部分给作业;若无,则作业等待。随着作业的装入、完成,主存空间被分割成许多大大小小的分区。有的分区被作业占用,有的分区空闲。例如,某时刻主存空间占用情况如图3-1所示。
为了说明哪些分区是空闲的,可以用来装入新作业,必须要有一张空闲区说明表,如图3-2所示。
长度 32k 8k 120k 331k 起始地址 20k 72k 100k 320k 状态 未分配 未分配 未分配 未分配 空表目 空表目 图3-2 空闲区说明表 其中,起始地址指出各空闲区的主存起始地址,长度指出空闲区的大小。 状态:未分配----该栏目记录的是有效的空闲区; 空表目----没有登记信息。
由于分区数目不定,所以空闲区说明表中应有足够的空表目项。否则造成溢出,无法登记。
同样,再设一个已分配区表,记录作业或进程的主存占用情况。
(2)当有一个新作业要求装入主存时,必须查空闲区说明表,从中找出一个足够
大的空闲区。有时找到的空闲区可能大于作业需求量,这时应将空闲区一分为二。一个分给作业;另一个仍作为空闲区留在空闲区表中。为了尽量减少由于分割造成的碎片,尽可能分配低地址部分的空闲区,将较大空闲区留在高地址端,以利于大作业的装入。为此在空闲区表中,按空闲区首地址从低到高进行登记。为了便于快速查找,要不断地对表格进行紧缩,即让“空表目”项留在表的后部。
(3)当一个作业执行完成时,作业所占用的分区应归还给系统。在归还时要考虑相邻空闲区合并的问题。作业的释放区与空闲区的邻接分以下四种情况考虑:
① 释放区下邻(低地址邻接)空闲区; ② 释放区上邻(高地址邻接)空闲区 ③ 释放区上下都与空闲区邻接; ④ 释放区与空闲区不邻接。
要求:
a运行下面的代码,代码中给出的是首次适应算法还是最佳适应算法,给出运行的截图进行说明。
b 如是首次适应算法则改写成最佳适应算法,否则改写首次适应算法,并完善改正程序。
? 四 实验过程:
1、关于首次适应算法和最佳适应算法的介绍:(源于笔记总结)