arrive &&q)
{t=q;
q=q->next;}
改为:while(q&&q->arrivearrive)
{t=q;
q=q->next;}
2、 进程运行时间大于时间片时,程序进入死循环:
当进程所需时间等于时间片时,运行结果正确:
进程运行时间大于时间片时,程序进入死循环:
错误分析:
进程所需剩余时间计算错误;
错误修改:
将while(p!=NULL)
{t=head;
p->rest=p->run-slice;
p->state="running";
修改为:while(p!=NULL)
{t=head;
p->rest=p->rest-slice;
p->state="running";
错误3:
测试数据:
1 2 1
3 1 3
Slice=2
结果为:
即进入死循环。
当进程所需时间小于时间片时,应立即跳出进程就绪对列。
错误修改:
在output()子函数中p->rest=p->rest-slice;
后面加上一个语句:
if(p->rest<0)
p->rest=0;
实验运行结果为:
实验的体会及收获:
通过这次试验,我对处理机的调度算法---基于时间片轮转调度算法思想有了更深的理解;另外使我对链表的知识有了更深的理解,而且锻炼了我的思维能力,使我能更全面地思考问题,以后还需要多做些这方面的练习。
实验还需改进之处:
为考虑进程所需时间小于时间片大小的情况,如:进程运行完一次时间片时间中断后,但下一个进程的提交时间要迟很多,这时候就会浪费很多时间等待,这是该程序还需改进的地方。
另外,本实验中的RR算法的时间片大小固定,所以实际是属于基本轮转法,还有种是时间片长短是变化的,即改进轮转法。在基本轮转法中,时间片大小的设置是关键。时间片设得太短会导致过多的进程切换,降低了CPU效率;而设得太长又可能引起对短的交互请求的响应变差。据悉,通常,时间片的长度为几十毫秒到几百毫秒,而将时间片设为100毫秒通常是一个比较合理的折衷。
指导教师评语及成绩:
评语:
成绩: 指导教师签名:
批阅日期:
实验报告说明
1.实验项目名称:要用最简练的语言反映实验的内容。要求与实验指导书中相一致。
2.实验类型:一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。
3.实验目的与要求:目的要明确,要抓住重点,符合实验指导书中的要求。
4.实验原理:简要说明本实验项目所涉及的理论知识。
5.实验环境:实验用的软硬件环境(配置)。
6.实验方案设计(思路、步骤和方法等):这是实验报告极其重要的内容。概括整个实验过程。
对于操作型实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。
对于设计型和综合型实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。
对于创新型实验,还应注明其创新点、特色。
7.实验过程(实验中涉及的记录、数据、分析):写明具体上述实验方案的具体实施,包括实验过程中的记录、数据和相应的分析。
8.结论(结果):即根据实验过程中所见到的现象和测得的数据,做出结论。
9.小结:对本次实验的心得体会、思考和建议。
10.指导教师评语及成绩:指导教师依据学生的实际报告内容,用简练语言给出本次实验报告的评价和价值。
注意:
· 实验报告将记入实验成绩;
· 每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。