操作系统--时间片轮转法进行CPU调度1_第1页
操作系统--时间片轮转法进行CPU调度1_第2页
操作系统--时间片轮转法进行CPU调度1_第3页
操作系统--时间片轮转法进行CPU调度1_第4页
操作系统--时间片轮转法进行CPU调度1_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、设计目的 1二、设计内容 2三、设计原理 3四、算法实现 4五、流程图 5六、源程序 6七、运行示例及结果分析 11八、心得体会 13九、参考资料 14时间片轮转法进行 CPU 调度一、设计目的进程调度是处理机管理的核心内容。 本设计要求用高级语言编写和调试一个 简单的进程调度程序。 通过本实验可以加深理解有关进程控制块、 进程队列的概 念,并体会和了解优先权调度算法和时间片轮转调度算法的具体实施办法。 并通 过课程设计, 让我们更好的掌握操作系统的原理以及实现方法, 加深对操作系统 基础理论和重要算法的理解,加强我们自身的动手能力。二、设计内容在多道程序或多任务系统中,系统同时处于就

2、绪状态的进程有若干个,为了 使系统中的各进程能有条不紊的进行, 选择某种调度策略,以选择一进程占用处 理机因此使用时间片轮转算法模拟单处理机调度。三、设计原理系统将所有的就绪进程按先来先服务的原则排成一个队列, 每次调度时, 把 CPU分配给队首进程,并令其执行一个时间片。时间片的大小从几MS到几百MS 当执行的时间片用完时, 由一个计时器发出时钟中断请求, 调度程序便据此信号 来停止该进程的执行, 并将它送往就绪队列的末尾; 然后再把处理机分配给就绪 队列中的新的队首进程, 同时也让他执行一个时间片。 这样就可以保证就绪队列 中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言

3、之, 系统能在给定时间内相应所有用户的请求。四、算法实现每个程序用一个进程控制块PCB来代表。PCB弋表:进程名、链接指针、到 达时间、估计运行时间和进程状态。 其中进程名既进程标识。 链接指针之处下一 个到达进程的进程控制块地址, 按照进程到达的顺序排队, 统设置一个队头和队 尾指针分别指向第一个和最后一个进程, 新生成的进程放队尾。 设计者任意指定 一个运行时间, 进程创建时用户指定到达时间, 调度时, 总是选择到达时间最早 的进程。进程有就绪和完成状态,进程一创建就处于就绪状态,用 R表示,一个 程序运行结束时,就将其设置为完成状态,用 C表示。用户为每个程序设定一个要求运行时间和到达时

4、间。 按照进程到达的先后顺 序排成一个循环队列, 再设一个队首指针指向第一个到达进程的首址。 进程运行 一次后,以后的调度则将当前指针依次下移一个位置, 指向下一个进程, 即调整 当前运行指针指向该进程的链接指针所指进程, 以指示运行进程。 同时判断该进 程剩余运行时间是否为零, 不为零则等待下一轮的运行; 若该进程的剩余运行时 间为零,则该进程完成,状态为 C,并退出循环队列。若就绪队列不为空,则重 复以上步骤直到所有进程都运行完为止。输入进程数NYNY输入时间片YNNY是否完成NY是否所有进程 都完成是否有新进程 到达进程是否输入宀完时间片是否用宀完结 束开 始五、流程图输入进程时间片-1

5、时间片+1分配给执行队列队首时间片将新到进程插入队尾将为完成的插入队尾服务时间-1退 出六、源程序#include#include#includechar X;int start;typedef structchar name20;int arrtime;int runtime;DataType;typedef struct nodeDataType pcb;struct node *next;ListNode;typedef ListNode *LinkList;LinkList head;void create_insert_LinkList(int f1)ListNode *p,*p1,

6、*p2; p=(ListNode*)malloc(sizeof(ListNode);head=p;p-next=NULL;while(f10) p=(ListNode*)malloc(sizeof(ListNode);cout 请输入以下数据: n; p-pcb.arrtimep-pcb.runtime; coutnext=NULL;p1=head; p2=p1-next;while(p2!=NULL&p2-pcb.arrtimepcb.arrtime) p1=p2;p2=p2-next;p1-next=p;p-next=p2;f1=f1-1;void pcb_Li

7、nkList(int f2)LinkList H;ListNode *rear,*p,*q;int T,t,time,m,n;p=(ListNode*)malloc(sizeof(ListNode);p=NULL;H=p;coutT;t=T;H=head-next;head-next=head-next-next;rear=H;rear-next=NULL;time=H-pcb.arrtime;while(f2!=0)n=0;while(t!=0)t=t-1;time=time+1;if(head-next!=NULL)if(head-next-pcb.arrtimenext; head-ne

8、xt=head-next-next; rear=H;rear-next=NULL; elserear-next=head-next; head-next=head-next-next; rear=rear-next;rear-next=NULL;if(H!=NULL)H-pcb.runtime=H-pcb.runtime-1;m=1;/ 该进程有被执行n=n+1;if(H-pcb.runtime=0)/ 该进程服务完,从执行队列中删除cout在第time-*秒endl;cout 进程名 运行了 n 秒 状态: 完成 完成时间: timeendl;coutnext;f2=f2-

9、1;m=0;/ 新的队首未被执行;n=0;if(m=1)cout在第time-n秒endl;cout 进程名 运行了 n 秒 状态:正在 执行 endl;coutnext!=NULL)time=head-next-pcb.arrtime;elseif(H-next!=NULL&m=1&n=T)/ 把未完成的进程插入到执行队列的 队末q=H;H=H-next;rear-next=q;rear=rear-next;rear-next=NULL;void Menu()/*菜单选项 */char menu;cout ”endl;cout ” |”endl;cout ” |”endl;

10、cout ”|*欢迎使用时间片轮转算法系统*|”endl;cout ” |”endl;cout ” |”endl;cout ”|菜单选项 :|”endl;cout ” |”endl;cout ”|时间片轮转调度 (Y/y)|”endl;cout ” |”endl;cout ”|退出(Q/q)|”endl;cout ” |”endl;cout ”|班级: 08 计本(2)|”endl;cout ”|姓名: 蔡春雨|”endl;cout ”|学号: 080303201|”endl;cout -endl;t=T;*菜单函数 *cout 请输入您的选择: X;switch(X)/菜单选项case Y:

11、case y:start=1;system(cls);cout * 时间片轮转调度算法 * endl;break;case q:case Q:exit(0);break;default:cout 输入错误 !按任意键退出 !endl;break;void main()system(color F4);/ 改变背景色和字体颜色Menu();int f;coutf;create_insert_LinkList(f);pcb_LinkList(f);cout 运行完毕 endl;endl;cout 谢谢您使用时间片轮转算法系统 cout 蔡春雨 endl;cout 080303201endl;七、运

12、行示例及结果分析八、心得体会为期一周半的课程设计结束了,这次课程设计是对学习操作系统的一次 综合考察, 锻炼我们综合分析问题、 解决问题的能力。 试验过程中遇到好多的难 题,比如在这一周半时间里有三门考试, 都没有什么时间来做课程设计, 考试结 束都礼拜 3 了,其实只有礼拜四一天的时间。 一天的时间做一个课程设计也真是 勉为其难。这就不免会到网上寻求答案。这次课程设计是用C+语言编写,C+已经有一年半没摸了,在试验过程中 再次捧起C+的课本和资料。在和同学的合作和自己努力下,终于把试验给搞定。 虽然还有代码看不明白。 但我相信如果给我一周半时间我肯定能把时间片轮转算 法给搞定。总的说来知识上的收获很是重要,精神上的丰收也是更加可喜的,让我知道 了学无止境的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论