计算机操作系统——进程控制和调度
一、 实验目的
用高级语言编写和调试进程调度的模拟程序,以加深对进程调度算法的理解。
二、实验仪器设备
CodeBlock
三、实验内容
1、 自定义进程相关的数据结构; 2、 模拟进程控制块队列、进程控制块优先级队列、统计信息链表及其指令集合; 3、 编程实现常见的进程控制和调度策略(先来先服务算法(FCFS调度法)、短作业(进程)优先调度算法(SJ调度算法)、最高优先权优先调度算法(优先调度算法)、时间片轮转算法(RR调度算法)); 4、 测试以上进程调度策略的周转时间、带权周转时间、平均周转时间和平均带权周转时间,并定性评价它们的性能。
四、实验步骤
创建和显示进程状态算法:PCB *CreatPCB(int n)
-
FCFS调度算法
功能:根据进程到达的顺序进行调度,先到达的进程先执行。在就绪队列中排的越靠前越先执行 算法:void FCFS(PCB *head,PCB *over)
-
SJ调度算法
功能:从就绪队列中选出剩余执行时间最短的就绪进程进行执行。执行结束后继续从就绪队列中选出剩余执行时间最短的。直到所有进程都被执行完。 算法:void SJF(PCB *head,PCB *over)//sjf算法
-
优先调度算法(Prio):
功能:从就绪队列中选出优先级别最高的进程进行执行。重复进行。直到所有的所有的进程执行完毕。 算法:void Prio(PCB *head,PCB *over)
-
RR调度算法:
功能:根据时间片的大小,对每个进程依次执行。时间片用完之后进程进入阻塞的状态,重新得到时间片后接着执行。直到完成。 算法:void RR(PCB *head,PCB *over,int t,int k)//时间片轮转法 FCFS调度算法: SJF调度算法: 优先调度算法: RR调度算法:
五、实验总结;
该实验利用进程调度中的优先级算法调度进程,开始给每一个进程设定一个优先级数,对于优先级高的进程先调度,优先级低的进程后调度,在调度一个进程时,其他进程将处于就绪态,而正在被调度的进程应处于运行态。优先级调度算法只是进程调度算法的一种,我们还应依照书本去学习进程调度的其它算法,以便更好地了解进程调度。