操作系统实验之调度算法
char name[10];
int All_Time;
int Runtime;
char state;
}* Proc;
int ProcNum;
主函数main()调用各个子函数实现本程序的功能如:数据初始化InitPCB(H),输出此刻的进程状态DispInfo(H),时间片轮转法,SJP_Simulator(H)
void InitPCB(Proc &H)
函数从键盘输入读取进程需要运行的时间和初始化队列及进程控制块PCB,调用时间片轮转函数
void SJP_Simulatovoid
SJP_Simulatovoid
SJP_Simulatovoid
SJP_Simulator(Proc r(Proc r(Proc r(Proc &H)&H)&H)&H)
本程序主要是实现对时间片轮转法调度算法的模拟,假定系统有五个进程 将五个进程按顺序拍成循环队列,处理器按顺序选择进程执行,当执行后若没有结束则进程的优先级变为最低下论循环时再运行,若结束则退出队列。 程序先用
void InitPCB(Proc &H)
void InitPCB(Proc &H)
void InitPCB(Proc &H)
<<ProcNum<<" 个,请依次输入相应信息\n\n";
while(Num--) {
p=p->next=(Proc)malloc(sizeof(PNode));
cout<<"进程总运行时间已运行时间:"; cin>>p->name>>p->All_Time>>p->Runed_Time;
p->state=R';
p->next=NULL; }
p->next=H->next; }
//---------------------------------------------------------
void DispInfo(Proc H)
{ Proc p=H->next;
do { if (p->state != 'E')
1.实验目的
理解基于时间片轮转的处理机调度算法,更好的掌握算法的思想,结合实验理解算法更直观,深刻具体。通过对时间片轮转法处理机的调度算法的模拟实验可以清楚的了解处理机是如何调度的,以及加深对进程的执行的过程的了。
2.实验原理
实现对时间片轮转法处理机调度算法的模拟,本程序只对进程的运行模拟不实际启动,而是将其运行时间加一,判断要求运行时间与已运行时间是否相等,若相等则表示进程结束,进程退出调度,释放资源。因只需了解其算法故,本实验只模拟进程的时间片轮转算法不实际运行进程。
(2)每次运行所设计的处理器调度程序前,为每个进程任意确定它的“要求运行时间”。
(3)把五个进程按顺序排成循环队列,用指针指出队列连接情况。另用一标志单元记录轮到运行的进程。例如,当前轮到P2执行,则有:
(4) 处理器调度总是选择标志单元指示的进程运行。由于本实习是模拟处理器调度的功能,所以,对被选中的进程并不实际的启动运行,而是执行: 已运行时间+1 来模拟进程的一次运行,表示进程已经运行过一个单位的时间。当一个进程被选中运行时,必须置上该进程可以运行的时间片值,以及恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行满一个时间片 (5) 进程运行一次后,应把该进程的进程控制块中的指针值送到标志单元,以指示下一个轮到运行的进程。同时,应判断该进程的要求运行时间与已运行时间,若该进程的要求运行时间≠已运行时间,则表示它尚未执行结束,应待到下一轮时再运行。若该进程的要求运行时间=已运行时间,则表示它已经执行结束,应指导它的状态修改成“结束”(E)且退出队列。此时,应把该进程的进程控制块中的指针值送到前面一个进程的指针位置。 (6) 若“就绪”状态的进程队列不为空,则重复上面的(4)和(5)的步骤,直到所有的进程都成为“结束”状态。 (7) 在所设计的程序中应有显示或打印语句,能显示或打印每次选中进程的进程名以及运行一次后进程队列的变化。 (8) 为五个进程任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中的进程名以及进程控制块的动态变化过程。
子函数的说明如下: 初始化就绪队列
void InitPCB(Proc &H) { cout<<"请输入总进程个数: ";
cin>>ProcNum;
int Num=ProcNum;
H=(Proc)malloc(sizeof(PNode));
H->next=NULL;
Proc p=H;
cout<<"总进程个数为 "
师大学
数计 学院实验报告
专业名称软件工程
实 验 室2号201
实验课程操作系统实验
实验名称调度算法
姓 名周**
学 号110*******
同组人员无
实验日期2013.4.6
注:实验报告应包含(实验目的,实验原理,主要仪器设备和材料,实验过程和步骤,实验原始数据记录和处理,实验结果和分析,成绩评定)等七项容。具体容可根据专业特点和实验性质略作调整,页面不够可附页。
3.实验过程和步骤
(1)假定系统有五个进程,每一个进程用一个进程控制块PCB来代表。进程控制块的格式为: 进程名 指针 要求运行时间 已运行时间 状态 其中,进程名——作为进程的标识,假设五个进程的进程名分别为Q1,Q2,Q3,Q4,Q5。 指针——进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程的指针指出第一个进程的进程控制块首地址。 要求运行时间——假设进程需要运行的单位时间数。 已运行时间——假设进程已经运行的单位时间数,初始值为“0”。 状态——有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用“R”表示。当一个进程运行结束后,它的状态为“结束”,用“E”表示。
模拟执行时间片处理机对进程的调度,然后调用
void DispInfo(Proc H)
void DispInfo(Proc H)
void DispInfo(Proc H)void DispInfo(Proc H)函数输出每次执行的结果。
进程的数据结构如下: typedef struct PNode
{ struct PNode *next;