操作系统实验报告
学院: 信息科学与工程学院 班级: 信息0701 姓名: 尹峥伟 学号: 0903070115
2009年11月30日1
目录
实验一: 进程的多级反馈队列调度算法 ------------------2
实验二: 在可变分区管理方式下采用最先适应算法实现主存分配和实现主存回收
实验三: 二级目录文件系统 ----------26
总结: ----------36
-----------------15
2
实验一: 进程的多级反馈队列调度算法
实验目的:
通过编写程序模拟操作系统进程的多级反馈队列调度来学习和理解操作系统进程的调度机制.
实验原理:
多级反馈队列调度算法,不必事先知道各进程所需的进程时间,而且还可以满足各种类型进程的需要,因而它是目前被公认的一种较好的进程调度算法。在采用多级反馈队列调度算法的系统中,调度算法的实施过程如下:
1. 设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先权最
高,第二个的次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。例如,第二个队列的时间片要比第一个队列的时间片长一倍,??,第I+1个队列的时间片要比第I个队列的时间片长一倍。 2. 一个新进程进入内存后,首先将它放在第一队列的末尾,按FCFS原则排队等待
调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统,如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,??,如此下去,当一个长作业(进程)从第一队列依次降到第n队列后,在第n队列中便采取按时间片轮转的方式进行。
3. 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1~(I-1)
队列均空时,才会调度第I队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(I-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第I队列的末尾,把处理机分配给新到的高优先权进程。
3
流程图:
开始 输入进程的信息量 输入第一队列的时间片 新进程进入第一队列并执行一次操作 是 任务是否完成
否 该 进 入下个队列 程入 本队 列 队 是 是否有新进程 尾 否 按FCFS 执行本队列中的进程
执行中是否 是 有新进程来
否
撤离系统 进程是否完成 是 否 否 下队列是否 为最后队列
是 入该队列且进程按时间片轮转法执行 4
否 是 时间片内是否完成 完成
相关数据结构:
由用户输入的进程结点的信息:
struct data{
int ID; int hour; int minute; int Alltime; }data[SIZE]
就绪队列中的进程结点信息:
typedef struct QNode{ int ID; int Hour; int Minute; int Alltime; struct QNode * next; }QNode,*QueuePtr;
就绪队列的数据结构:
typedef struct{ QueuePtr front; QueuePtr rear; }LinkQueue;
源码分析:
对代码中出现的变量做如下的一些说明如下:
5