算法思想:
采用可变式分区管理,使用空闲区链实现主存的分配与回收
要求采用首次适应法管理空闲区链来进行。
- 可变式分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需要。而且分区个数是可以调整的。当要装入一个作业时,根据作业需要的主存量,查看是否有足够的空闲空间。若有,则按需求量分割一部分给作业,若无则作业等待,随着作业的装入、完成,主存空间被分割成许多大大小小的分区,有些分区被作业占用,有的分区空闲。
- 空闲区链,记录主存空间使用情况的一种较好方法是将表格信息,附加在每个已分配区和未分配区空闲区表中。
- 当有进程要求分配主存时,首先根据首次适应算法从链头开始,沿链查找一个足够容纳该进程的空闲区,若这个空闲分区比较大,则一分为二,一部分分配给进程,另一部分作为空闲区链仍在链中当前位置,但修改它的上一个空闲区的前向指针加上分配作业的大小,下一个空闲区的后向指针加上分配作业的大小,使链保持完整。若这个分区的大小正好等于作业大小,则该空闲分区全部分配给作业,并将该空闲分区从链中摘除。
代码:
#include<iostream>
#include<string>
#include<list>
using namespace std;
typedef struct freeArea {
int startingAddress;
int length;
}freeArea;
typedef struct alreadyAssignedArea {
int startingAddress;
int length;
stri