程序首先申请一整块空闲区,其首址为0,大小为;然后,提示用户使用哪种分配算法,再提示是分配还是回收;分配时要求输入申请区的大小,回收时要求输入释放区的首址,并进行合理合并。程序需要保证以每次都能以最快的速度找到分配空间,即保证空闲空间链表始终按对应的分配算法进行合理排序存储。待释放区保存所有的被占用node节点,排序方法根据待释放结点的查找策略进行合理排序。
(四)输出
要求每执行一次,输出一次空闲区队列情况和待释放区队列,内容包括:
空闲区: 编号 首址 终址 大小
待释放区: 编号 首址
注:输出空闲区队列的排序,应符合所用分配算法的要求。待释放区也应该按释放输入要求项进行排序,偏于快速定位。
b. 综合实验
(一)实验目的
合并实验一和实验二基础实验,形成一个相对完成的进程执行过程,以理解进程执行过程中为什么会发生死锁现象。
(二)实验过程提示
1.输入:(1)进行全局设置:内存的最大容量、处理机分配算法、内存分配算法(2)修改进程控制块内存运行需求相关参数,在出现新进程创建进程控制块时一次性输入一个进程的处理机和内存需求。
2.执行:首次从就绪态进入执行态时分配内存空间,若满足则该进程进入执行态并始终占有此空间,即在pcb中记录该空间首地址,同时修改存储器空闲队列,若不满足则回到就绪态的末尾,等待下次进入执行态。当进程从执行态转为就绪态时,保持已分配空间记录,不做存储器相关参数修改。当进程进入完成状态时才释放存储器空间,修改空闲队列,其他处理器相关参数的设定不变。
3.输出:同时显示空闲队列列表信息和三个状态的进程信息
、实验目的
进程调度是处理机管理的核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制块、进程队列等概念,并体会和了解优先数算法(包括抢占式和非抢占式)和时间片轮转算法的具体实施办法。
二、实验内容和要求
1. 设计进程控制块pcb的结构,通常应包括如下信息:
进程名、进程优先数(时间片轮转算法中本次轮转需要的剩余时间片数)、进程已占用的cpU时间、进程到完成还需要的时间、进程的状态、当前队列指针等。
2. 编写两种调度算法程序:
优先数调度算法程序(包括抢占式和非抢占式)
循环轮转调度算法程序
3. 将程序源代码和运行截图写入实验报告并提交。
三、实验步骤
1. 实验准备
(1) 查阅相关资料;
(2) 初步编写程序;
(3) 准备测试数据;
2.准备知识:
分别用两种调度算法对多个进程进行调度。每个进程可有三种状态;执行状态(run)、就绪状态(ready,包括等待状态)和完成状态(finish),并假定初始状态为就绪状态。
(一)进程控制块结构如下:
name——进程标示符
prio\/round——进程优先数\/进程每次轮转的时间片数(设为常数2)
cputime——进程累计占用cpU的时间片数
needtime——进程到完成还需要的时间片数
state——进程状态