操作系统实验_首次适应算法与循环首次适应算法 下载本文

内容发布更新时间 : 2024/6/9 8:04:34星期一 下面是文章的全部内容请认真阅读。

学号 P71514032 实验日期 2017.11.16 专业 计算机科学与技术姓名

教师签字 成绩

实验报告

【实验名称】 【实验目的】

学会主存空间分配与回收的基本方法首次适应算法和循环首次适应算法。

首次适应算法和循环首次适应算法

【实验原理】

理解在连续分区动态的存储管理方式下,如何实现贮存空间的分配与回收。 采用可变式分区管理,使用最佳适应算法实现主存空间的分配与回收。 采用可变式分区管理,使用最坏适应算法实现主存空间的分配与回收。

数据结构:

1、bool ROM[N]; //定义主存信息,如果内存被占用,则标记为1,否则标记为0,设置内存单元为1024

2、pcb num[20];//定义作业数组,最大支持20个作业

3、typedef struct Pcb //定义作业结构体,包括名称,开始时间,大小,是否执行状态

{

char name[10]; int start; int size; int state=0; } pcb;

typedef struct Free_rom //空闲区结构体

{

int num; int start; int end; int space;

} Free_room;

Free_rom free_rom[100];//设置空闲区数组为100个 主要函数

void init();//初始化信息,包括初始化内存信息,和初始化作业队列

void insert_pcb1(pcb &a);插入作业函数,首次适应算法,如果有适合的就插入,无合适输出‘插入失败’

void insert_pcb1(pcb &a);插入作业函数,循环首次适应算法,如果有适合的就插入,无合适输出‘插入失败’

void Delete(pcb &a)//删除作业信息,包括修改内存状态修改作业状态并对作业进行初始化

void show();//显示信息

void find_free_rom() //寻找空闲区

算法流程图

首次适应算法

开始空闲区登记插入作业信息空闲区指针指向第一个空闲区当前空闲区是否满足是插入当前作业,修改内存信息和作业信息表信息否是否为最后一个空闲区否空闲区指针指向下一个空闲区是作业插入失败是继续插入?否整理输出结束