实验二——动态高优先权优先调度算法-王子瑜

loading 分享 2026-9-6 下载文档

. .

. 《操作系统》课程实验报告

实验名称:动态分区存储管理

姓 名: 王子瑜 学 号: 5

地 点: 四教楼 指导老师: 放美

专业班级: 软件工程(测试技术14-02)实验成绩:

. .

. .

一、 实验要求:

熟悉并掌握动态分区分配的各种算法。

熟悉并掌握动态分区中分区回收的各种情况,并能够实现分区合并。

二、实验容:

用高级语言模拟实现动态分区存储管理,要求:

1、 分区分配算法至少实现首次适应算法、最佳适应算法和最坏适应算法中的至

少一种。熟悉并掌握各种算法的空闲区组织方式。 2、 分区的初始化——可以由用户输入初始分区的大小。(初始化后只有一个空

闲分区,起始地址为0,大小是用户输入的大小)

3、 分区的动态分配过程:由用户输入作业号和作业的大小,实现分区过程。 4、 分区的回收:用户输入作业号,实现分区回收,同时,分区的合并要体现出

来。(注意:不存在的作业号要给出错误提示!)

5、 分区的显示:任何时刻,可以查看当前存的情况(起始地址是什么,大小多

大的分区时空闲的,或者占用的,能够显示出来)

要求考虑:(1)存空间不足的情况,要有相应的显示;

(2)作业不能同名,但是删除后可以再用这个名字;

(3)作业空间回收是输入作业名,回收相应的空间,如果这个作业名不存在,也

要有相应的提示。

三、实验代码

#include

#include

#define SIZE 640 // 存初始大小

#define MINSIZE 5 // 碎片最小值

enum STATE { Free, Busy };

struct subAreaNode {

int addr; // 起始地址

int size; // 分区大小

int taskId; // 作业号

. . .

. .

STATE state; // 分区状态

subAreaNode *pre; // 分区前向指针

subAreaNode *nxt; // 分区后向指针

}subHead;

// 初始化空闲分区链

void intSubArea() {

// 分配初始分区存

subAreaNode *fir = (subAreaNode *)malloc(sizeof(subAreaNode));

// 给首个分区赋值

fir->addr = 0;

fir->size = SIZE;

fir->state = Free;

fir->taskId = -1;

fir->pre = &subHead;

fir->nxt = NULL;

// 初始化分区头部信息

subHead.pre = NULL;

subHead.nxt = fir; }

. . .


实验二——动态高优先权优先调度算法-王子瑜.doc 将本文的Word文档下载到电脑
搜索更多关于: 实验二——动态高优先权优先调度算法-王子瑜 的文档
相关推荐
相关阅读