操作系统--时间片轮转法进行C没PU调度[1].doc

上传人:本田雅阁 文档编号:2106451 上传时间:2019-02-14 格式:DOC 页数:15 大小:269.52KB
返回 下载 相关 举报
操作系统--时间片轮转法进行C没PU调度[1].doc_第1页
第1页 / 共15页
操作系统--时间片轮转法进行C没PU调度[1].doc_第2页
第2页 / 共15页
操作系统--时间片轮转法进行C没PU调度[1].doc_第3页
第3页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《操作系统--时间片轮转法进行C没PU调度[1].doc》由会员分享,可在线阅读,更多相关《操作系统--时间片轮转法进行C没PU调度[1].doc(15页珍藏版)》请在三一文库上搜索。

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

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

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

4、的调度则将当前指针依次下移一个位置,指向下一个进程,即调整当前运行指针指向该进程的链接指针所指进程,以指示运行进程。同时判断该进程剩余运行时间是否为零,不为零则等待下一轮的运行;若该进程的剩余运行时间为零,则该进程完成,状态为C,并退出循环队列。若就绪队列不为空,则重复以上步骤直到所有进程都运行完为止。五、流程图YNYNYY退 出输入进程数输入进程进程是否输入完输入时间片分配给执行队列队首时间片时间片-1时间片+1时间片是否用完是否所有进程都完成将为完成的插入队尾开 始NY结 束将新到进程插入队尾是否完成服务时间-1N是否有新进程到达N六、源程序#include#include#include

5、char 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,*p2;p=(ListNode*)malloc(sizeof(ListNode);head=p;p-next=NULL;while(f10)p=

6、(ListNode*)malloc(sizeof(ListNode); cout请输入以下数据:n;coutp-pcb.namep-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_LinkList(int f2) LinkList H;ListNode *rear,*p,*q;int T,t,time,m,n;p=(ListNode*)

7、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-next=head-next-next; rear=H; rear-next=NULL;elserear-next=head-next; hea

8、d-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-n秒endl; cout进程名pcb.name 运行了n秒 状态:完成 完成时间:timeendl;coutnext;f2=f2-1;m=0;/新的队首未被执行; n=0; if(m=1)cout在第time-n秒endl;cout进程名pcb.name 运行了n秒 状

9、态:正在执行 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;t=T;/*菜单函数*/void Menu() /*菜单选项*/ char menu; cout” -”endl;cout” | |”endl;cout” | |”endl;cout” | * 欢迎使用时间片轮转算法系统 * |”endl;cout” | |”endl;cout” | |”

10、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; cout 请输入您的选择:X; switch(X) /菜单选项case Y:case y:start=1;system(cls);cout *时间片轮转调度算法* endl

11、;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; cout -谢谢您使用时间片轮转算法系统-endl; cout -蔡春雨-endl; cout -080303201-endl;七、运行示例及结果分析八、心得体会为期一周半的课程设计结束了,这次课程设计是对学习操作系统的一次

12、综合考察,锻炼我们综合分析问题、解决问题的能力。试验过程中遇到好多的难题,比如在这一周半时间里有三门考试,都没有什么时间来做课程设计,考试结束都礼拜3了,其实只有礼拜四一天的时间。一天的时间做一个课程设计也真是勉为其难。这就不免会到网上寻求答案。这次课程设计是用C+语言编写,C+已经有一年半没摸了,在试验过程中再次捧起C+的课本和资料。在和同学的合作和自己努力下,终于把试验给搞定。虽然还有代码看不明白。但我相信如果给我一周半时间我肯定能把时间片轮转算法给搞定。总的说来知识上的收获很是重要,精神上的丰收也是更加可喜的,让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆。九、参考资料1.汤小丹,梁红兵,哲凤屏,汤子瀛。计算机操作系统(第三版)。西安电子科技大学出版社,20072.张丽芬,刘利雄,王全玉。操作系统实验教程。清华大学出版社,2006 3.谭浩强。C+程序设计。清华大学出版社,2006- 14 -

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1