《 操作系统原理A 》实验报告 - 5 -
{
PCB *p1 = NULL;
do { p1 = head; head = p+1;
//根据优先级调度原则,判断队列队首进程是否能运行 while((p1->need > 0) && (p1->prior >= head->prior))
{ p1->need--; p1->prior--; p1->status = 'R';
p1->used++;
print();//打印进程状态
}
//如果进程总的时间片已经用完,一律将其进程优先级置为-20,状态为完成
if(p1->need == 0)
{
p1->prior = -20; p1->status = 'F';
} else
p1->status = 'W';
sort();//再次排序为下一次的运行做好准备
head = p;
}
while(head->prior != -20); print();//显示最后各个进程的状态
printf(\
printf(\所有进程已全部完成.\
} int main()
{
inputprocess();//调用初始化进程自定义函数
runprocess();//调用调度进程的函数
《 操作系统原理A 》实验报告 - 6 -
return(1);
}
四、测试数据与实验结果(可以抓图粘贴)
五、结果分析与实验体会
虽然实验原理很简单,但是在编写代码的过程中遇到了不少的问题,在两个小时之内已经完成
的大体代码的编写,但是之中存在不少的问题,导致了用了差不多四个小时的时间去调试才把它弄好,这主要归咎于在开始设计代码的不太合理,在后期使得代码结构有些混乱,使得调试更加的麻烦,以及对编程的不熟悉。通过这个实验不仅使我对进程的调度算法有了更深的认识,使得理论知识得到的实践,也使我的编程能力得到了进一步提高。