时间片轮转法调度cup_操作系统课程设计报告

时间片轮转法调度cup_操作系统课程设计报告

ID:12561470

大小:290.00 KB

页数:15页

时间:2018-07-17

时间片轮转法调度cup_操作系统课程设计报告_第1页
时间片轮转法调度cup_操作系统课程设计报告_第2页
时间片轮转法调度cup_操作系统课程设计报告_第3页
时间片轮转法调度cup_操作系统课程设计报告_第4页
时间片轮转法调度cup_操作系统课程设计报告_第5页
资源描述:

《时间片轮转法调度cup_操作系统课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、目录一、需求分析11、设计要求:12、解决方案:1二、概要设计21、基本原理:22、数据结构及模块说明:33、流程图:4三、详细设计:4主要函数设计及说明:4四、调试分析:61、调试过程及步骤:62、结果分析:8五、总结:81、遇到问题及解决方法:82、心得体会:9六、参考文献:9附录:源代码914计算机操作系统课程设计——时间片轮转法进行CUP调度一、需求分析1、设计要求:在多道程序或多任务系统中,系统同时处于就绪状态的进程有若干个。为了使系统中各进程能有条不紊地进行,必须选择某种调度策略,以选择一进程占用处理机。要求用时间片轮转算法模拟单处理机调

2、度,以巩固和加深处理机调度的概念。2、解决方案:(1)、假设系统有5个进程,每个进程用一个进程控制块PCB来表示。PCB包括:进程名、链接指针、到达时间、估计运行时间和进程状态。其中,进程名即进程标识。链接指针指出下一个到达进程的进程控制块地址,按照进程到达的顺序排队,统设置一个队头和队尾指针分别指向第一个和最后一个进程,新生成的进程放队尾。估计运行时间:可由设计者任意指定一个时间值。到达时间:进程创建时的系统时间或由用户指定,调度时,总是选择到达时间最早的进程。进程状态:为简单起见,假定进程有两种状态,就绪和完成,并假定进程一创建就处于就绪状态,用

3、R表示,当一个进程运行结束时,就将其置成完成状态,用C表示。(2)、为每个进程任意确定一个要求运行时间和到达时间。(3)、按照进程到达的先后顺序排成一个循环队列。再设一个队首指针指向第一个到达进程的首址。(4)、执行处理机调度时,开始选择队首的第一个进程运行。另外再设一个当前运行进程的指针,指向当前正运行进程。(5)、由于本实验是模拟实验,所以对被选中进程并不实际启动运行,而只是执行:a)、估计运行时间减1;b)、输出当前运行进程的名字。用这两个操作来模拟进程的一次运行。14(6)、进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个进

4、程,即调整当前运行指针指向该进程的链接指针所指进程,以指示应运行进程。同时还应判断该进程的剩余运行时间是否为零。若不为零,则等待下一轮的运行;若该进程的剩余运行时间为零,则将该进程的状态置为完成状态C,并退出循环队列。(7)、若就绪队列不空,则重复上述(5)和(6)步骤直到所有进程都运行完为止。(8)、在所有设计的调度程序中,应包含显示或打印语句,以便显示或打印每次选中进程的名称及运行一次后队列的变化情况。二、概要设计1、基本原理:系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的大

5、小从几MS到几百MS。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后再把处理机分配给就绪队列中的新的队首进程,同时也让他执行一个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之,系统能在给定时间内相应所有用户的请求。2、数据结构及模块说明:(1)、数据结构模块主要是定义本设计中需要的两个主要的结构体PCB和node,从而定义进程控制块变量与队列指针。(2)、函数模块只要用于实现进程的插入,时间片的插入,轮转法的实现。(3)、主界

6、面模块主要用于提示使用者怎样进行轮转法的实现。(4)、菜单界面块主要用于提示使用者进入时间片轮转算法系统。143、流程图:开始输入进程数输入进程进程是否输入完?N输入时间片Y分配给执行队列队首时间片时间片-1是否有新进程到达将新到进程插入队尾Y服务时间-1N是否完成N退出时间片是否用完NYY是否所有进程都完成Y将未完成的插入队尾结束N三、详细设计:主要函数设计及说明:1、创建进程;使用单链表的方法,单链表中的每个结点相当于一个进程:typedefstruct{charname[20];//进程名14intarrtime;//到达时间intruntim

7、e;//运行时间}DataType;typedefstructnode{DataTypepcb;structnode*next;}ListNode;2、自定义所需进程数目:intf;cin>>f。3、创建一个进程单链表,作为进程队列:LinkListhead;p=(ListNode*)malloc(sizeof(ListNode));head=p;p->next=NULL;在进程数目之内,手动输入进程:p=(ListNode*)malloc(sizeof(ListNode));cin>>p->pcb.name;cin>>p->pcb.arrtime;

8、cin>>p->pcb.worktime;每输入一个进程都插进进程队列,并按arrtime从小到大排序。4、

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。