进程调度算法实验报告提问与答案

上传人:bin****86 文档编号:60325252 上传时间:2018-11-15 格式:DOCX 页数:7 大小:18.17KB
返回 下载 相关 举报
进程调度算法实验报告提问与答案_第1页
第1页 / 共7页
进程调度算法实验报告提问与答案_第2页
第2页 / 共7页
进程调度算法实验报告提问与答案_第3页
第3页 / 共7页
进程调度算法实验报告提问与答案_第4页
第4页 / 共7页
进程调度算法实验报告提问与答案_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《进程调度算法实验报告提问与答案》由会员分享,可在线阅读,更多相关《进程调度算法实验报告提问与答案(7页珍藏版)》请在金锄头文库上搜索。

1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划进程调度算法实验报告提问与答案_成绩:_武汉科技大学城市学院操作系统实验报告院系信息工程学生专业信科年级班大三课程名称操作系统实验题目处理机调度学生姓名宋骋指导教师郭冀生XX年11月20日一、实验目的进程调度是操作系统最重要的概念之一,是操作系统核心内容。调度算法好坏将直接影响操作系统的性能。本实验可以加深对进程调度和各种调度算法的理解。要求到达的进程数、各进程到达的时间可以任意选择。通过实验,求出平均周转时间和加权均周转时间。二、实验内容及要求三、实验原理及步骤将用户作业和就绪进程

2、按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务(驻留时间最长)的方式进行调度处理。?对于作业调度:该算法就是从后备作业队列中选择队首一个或几个作业,调入内存,创建进程,放入就绪队列。?对于进程调度:该算法就是从就绪队列中选择一个最先进入队列的进程,将CPU分配于它。步骤四、源程序代码:#includestructfcfscharname10;floatarrivetime;floatservicetime;floatstarttime;floatfinishtime;floatzztime;floatdqzztime;floatpzztime;floatpdqzztime;fcfsa

3、100;voidinput(fcfs*p,intN)inti;printf(intputtheprocesssname&arrivetime&servicetime:nforexmple:a0100n);for(i=0;i%s,pk.name);printf(ntheprocesssinformation:n);printf(nnametarrivetservicetstarttfinishtzztdqzztpzztimetpdqzztimen);for(k=0;kclassPCB/PCB类,包含time、range、state、next指针public:voidIn(char*n,intt,

4、intr);PCB()PCB(PCB*p)/复制PCBstrcpy(name,p-name);next=p-next;time=p-time;range=p-range;state=p-state;voidRed()/模拟进程运行状态time-;range-;if(!time)state=0;voidprint()/输出当前PCB内容cout进程调度算法实验报告提问与答案)名称PCB*next;/用于链表的指针inttime;/用于记录进程运行时间intrange;/用于记录优先值intstate;/用于判断该进程是否运行结束;voidPCB:In(char*n,intt,intr)/初始化P

5、DB对象strcpy(name,n);time=t;range=r;next=NULL;if(t0)state=1;elsestate=0;voidPri_Li(PCB*head)/用于输出每一次运行的结果if(head)coutnext)coutnamestate)/当该对象为新进程是,插入队列if(!num)head=p;(head)-next=NULL;elsePCB*tp=head;PCB*tp2=head;for(;num0;num-)if(p-rangetp-range&ii=num)/位于头部插入p-next=head;head=p;break;elseif(p-rangetp-

6、range)/位于中间插入p-next=tp;tp2-next=p;break;elsetp2=tp;tp=tp-next;if(!num&!tp)/位于尾部插入tp2-next=p;else/当该对象是已完成进程时,从队列中除去PCB*tp=head;inttem=num;for(PCB*tp2=tp;num0;num-,tp=tp-next)进程调度算法的设计一、实验题目:实现先来先服务调度算法实现时间片轮转调度算法二、实验目的:通过对进程调度算法的设计,深入理解进程调度的原理。进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。进程调度分配处理机,是控制协调进

7、程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程。三、实验原理:1.先来先服务调度算法每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。它优先考虑在系统中等待时间最长的作业,而不管要求运行时间的长短按照就绪进程进入就绪队列的先后次序进行调度,简单易实现,利于长进程,CPU繁忙型作业,不利于短进程,

8、排队时间相对过长2.时间片轮转调度算法RR时间片轮转法主要用于进程调度。采用此算法的系统,其程序就绪队列往往按进程到达的时间来排序。进程调度按一定时间片(q)轮番运行各个进程.进程按到达时间在就绪队列中排队,调度程序每次把CPU分配给就绪队列首进程使用一个时间片,运行完一个时间片释放CPU,排到就绪队列末尾参加下一轮调度,CPU分配给就绪队列的首进程。四、数据结构:数组五、程序代码:packagesufa;import;import;publicclassDispatchpublicstaticvoidmain(Stringargs)间intslice=1;/时间片(请输入要创建的进程数目:)

9、;Scannerreader=newScanner();intnum=();/用户要输入的进程数Process1arr=newProcess1num;/创建多个进程(请分别输入进程的名称、到达时间以及区间时间);for(inti=0;i0)for(inti=0;i0)/如果剩余区间还有时间次就减去时间片,并打印下面语句+t+arri.bursttime);if(arri.bursttime=0)count-;/当有某个进程的剩余时间为0的时候,count进行减1,当count减到等于0时,即每个进程都没有剩余时间了,就不再运行了classProcess1implementsOverridepu

10、blicintcompareTo(Objecto)/TODOAuto-generatedmethodstubProcess1pcb=(Process1)o;if(=)/重写方法实现Comparable接口,按照到return1;elsereturn-1;=();=();=();intid;/进程名称intarrtime;/到达时间intbursttime;/区间时间intovertime;/结束时间doubleturnovertime;/周转时间publicProcess1()/读取用户输入的各个值Scannerreader=newScanner();达时间的大小进行排序六、运行结果:七、实验心得:这次的实验实现FCFS算法和RR算法虽然用程序算法实现了模拟进程调度的整个过程,但是并未能考虑深入到操作系统的根本上用不同的队列存储不同状态下的进程来实现算法调度,但通过这次对进程调度算法设计的实现,还是对进程调度有了更深入更清楚的了解,以后的程序编写不论是实验还是项目开发,无论大小,都应该把程序的整体框架构建好,提高重用性。目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号