简单循环轮转调度算法原理
当CPU空闲时,选取就绪队列队首元素,赋予时间片。当该进程时间片用完时,则释放CPU控制权,进入就绪队列的队尾,CPU控制权给下一个处于就绪队列首元素,原理如下图。
实现流程图
进程控制块PCB 的结构如下:
模拟实现
①时间片定义为:总相应时间/进程数;
②在屏幕上输出以下进程状态表(表中每一行代表一个进程对一个时间片的占用):
③可以通过键盘命令动态地增加作业(即增加一个 PCB 数 3 据结构项),增加进程后,进程状态表内容可更新查看。
算法代码
#include "stdafx.h" #include<queue> #include<math.h> #include<vector> #include<iostream> #include <iomanip> using namespace std; /*进程的数据结构*/ struct PCB { int ID;//进程ID double in_time;//进程的进入时间 double res_time;//进程的响应时间 double l_time;//进程的剩余时间 }; /*进程调度函数 */ /*输入:进程队列prs,时间片timeslice */ /*输出:进程状态表 */ void ProcessScheduling(queue<PCB>