处理机调度模拟程序_第1页
处理机调度模拟程序_第2页
处理机调度模拟程序_第3页
处理机调度模拟程序_第4页
处理机调度模拟程序_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、四川理工学院课程设计书系别专业班级题目教师学生计科系计算机科学与技术04级1班处理机调度模拟程序& 个个个个个个个个& 个个个 个个个 TOC o 1-5 h z 目 录- 设计任务1一二设计思想1设计目的1设计题目2设计要求2设计框图2 HYPERLINK l bookmark32 o Current Document 程序代码3文 档12总 结14操作系统课程设计处理机调度模拟程序小组成员:*设计完成时间:2006年7月13日星期四一、设计任务选择一个调度算法,实现处理机调度。二、设计思想进程控制块的内容如右:进程名进程状态要求运行时间优先数链接指针其中优先数是赋给进程的优先级调度时总是选

2、取优先数最大的进程优先运行每个进程的优先数,运行时间,由程序任意指定。为了调度方便,把进程按给定优先级(动态优先级算法中)从小到大排成一个队 歹U。按给定运行时间(短作业优先)从小到大排成一个队列用一个变量作为队首指 针,指向队列的第一个进程。处理机调度总是选队首进程运行。由于本实验是模拟处理机调度,所以被选中的 进程并不实际的启动运行,而是执行:优先数-1(动态优先级算法中)要求运行时间-1来模拟进程的一次运行。进程运行一次后,若要求运行时间不等于0,则再将它加入队列(动态优先级算 法中:按优先数大小插入。),且改变队首指针:若要求运行时间=0,则把它的状态 改为完成(C)状态,且退出队列。

3、若就绪队列不空,则重复上述的4和5,直接所有的进程成为完成状态。在所设计的程序中应有显示或打印语句,以显示或打印每次被选中的进程的进程 名以及运行一次后进程队列的变化。.设计目的在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干 个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有 条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学 生设计一个模拟处理机调动算法,以巩固和加深处理机调度的概念。四.五.设计题目处理机调度模拟程序。设计要求进程调度算法包括:时间片轮转法,短作业优先算法,动态优 先级算法。可选择进程数量本程序包括三种算法,用C语言实现,执行时

4、在主界面选择算 法(可用函数实现),进入子页面后输入进程数,(运行时间, 优先数由随机函数产生),执行,显示结果。两人一组,每组交一份设计报告,包含源代码。六.设计框图调度算法的流程图如下:七.程序代码#include #include #include #include typedef struct nodechar name10;int prio;int round;int cputime;int needtime;int count;char state;struct node *next;PCB;PCB *finish,*ready,*tail,*run;int N;firstin()

5、run=ready;run-state=R;ready=ready-next;int timesj(void)int i,xt;time_t t;srand(unsigned) time(&t);xt = rand() % 10 +1;return xt;void prt1(char a)staten);if(toupper(a)=1)printf( name cputime needtime priority elseif(toupper(a)=2)printf( name cputime needtime priority staten); elseprintf( name cputime

6、 needtime priority staten);void prt2(char a,PCB *q)if(toupper(a)=1)printf( %-10s%-10d%-10d%-10d %cn,q-name,q-cputime,q-needtime,q-prio,q-state);elseif(toupper(a)=2)printf( %-10s%-10d%-10d%-10d %cn”,q-name,q-cputime,q-needtime,q-prio,q-state);elseprintf( %-10s%-10d%-10d%-10d %cn”,q-name, q-cputime,q-

7、needtime,q-prio,q-state);void prt(char algo)PCB *p;prt1(algo);if(run!=NULL)prt2(algo,run);p=ready;while(p!=NULL)prt2(algo,p);p=p-next;p=finish;while(p!=NULL)prt2(algo,p);p=p-next;getch();return;insert1(PCB *q)PCB *p1,*s,*r;int b;s=q;p1=ready;r=p1;b=1;while(p1!=NULL)&b)if(p1-prio=s-prio)r=p1;p1=p1-ne

8、xt;elseb=0;if(r!=p1)r-next=s;s-next=p1;elses-next=p1;ready=s;insert2(PCB *p2)tail-next=p2;tail=p2;p2-next=NULL;insert3(PCB *q)PCB *p1,*s,*r;int b;s=q;p1=ready;r=p1;b=1;while(p1!=NULL)&b)if(p1-needtimeneedtime)r=p1;p1=p1-next;elseb=0;if(r!=p1)r-next=s;s-next=p1;elses-next=p1;ready=s;void create1(char

9、 alg)PCB *p;int i,time,sjt,priost;char na10;ready=NULL;finish=NULL;run=NULL;printf(Enter name and time of processn);printf(-n);for(i=1;iname,na);p-cputime=0;p-needtime=sjt;p-state=w;p-prio=20-sjt;if(ready!=NULL)insertl(p);elsep-next=ready;ready=p;clrscr();printf(Display Process Of Priority:n);printf

10、(-n);prt(alg);run=ready;ready=ready-next;run-state=R;void create2(char alg)PCB *p;int i,time,sjt;char na10;ready=NULL;finish=NULL;run=NULL;printf(Enter name and time of round processn);printf(-n);for(i=1;iname,na);p-cputime=0;p-needtime=sjt;p-round=1;p-state=w;p-count=0;p-prio=20-sjt;if(ready!=NULL)

11、insert2(p);elsep-next=ready;ready=p;tail=p;clrscr();printf(Display Process Of Roundrobinn);printf(-n);prt(alg);run=ready;ready=ready-next;run-state=R;void create3(char alg)PCB *p;int i,time,sjt;char na10;ready=NULL;finish=NULL;run=NULL;printf(Enter name and time of processn);printf(-n);for(i=1;iname

12、,na);p-cputime=0;p-needtime=sjt;p-state=w;p-prio=20-sjt;if(ready!=NULL)insert1(p);elsep-next=ready;ready=p;clrscr();printf(Display Process Of Priority:n);printf(-n);prt(alg);run=ready;ready=ready-next;run-state=R;priority(char alg)while(run!=NULL)run-cputime=run-cputime+1;run-needtime=run-needtime-1

13、;run-prio=run-prio-1;if(run-needtime=0)run-next=finish;finish=run;run-state=C;run=NULL;if(ready!=NULL)firstin();elseif(ready!=NULL)&(run-prioprio)run-state=W;insert1(run);firstin();prt(alg);roundrun(char alg)while(run!=NULL)run-cputime=run-cputime+1;run-needtime=run-needtime-1;run-count=run-count+1;

14、run-prio=run-prio-1;if(run-needtime=0)run-next=finish;finish=run;run-state=C;run=NULL;if(ready!=NULL)firstin();elseif(run-count=run-round)run-count=0;if(ready!=NULL)run-state=W;insert2(run);firstin();prt(alg);shorttask(char alg)while(run!=NULL)run-cputime=run-cputime+1;run-needtime=run-needtime-1;ru

15、n-prio=run-prio-1;if(run-needtime=0)run-next=finish;finish=run;run-state=C;run=NULL;if(ready!=NULL)firstin();elseif(ready!=NULL)&(run-needtimeready-needtime)run-state=W;insert1(run);firstin();prt(alg);return;menu() char algo;clrscr();printf(nnCOMPUTER OS WORKnn);printf(nnBy pangao(Class 1) & wangjun

16、(Class 1)nnn);printf(choose one of following:);printf(n1.PRIORITY.nn);printf(2.ROUNDROBIN.nn);printf(3.SHORTTASK.nn);printf(4.EXIT.nnn);printf(n please enter your choice:);scanf(%c”,&algo);if(algo=1)printf(Enter process numbern);scanf(%d”,&N);create1(algo);priority(algo);elseif(algo=2)printf(Enter p

17、rocess numbern);scanf(%d”,&N);create2(algo);roundrun(algo);elseif(algo=3)printf(Enter process numbern);scanf(%d”,&N);create3(algo);shorttask(algo);return;else if(algo=4)exit(0);main()while(1)menu();八、文档七运行环境采用Borland Turbo C 2.0环境开发。2.输入条件及输出结果g C:U)OCUME面KHULIJI.EXE回吸COMPUTER OS UORKpangao & uangju

18、n choose one of following:PRIORITY.2.ROUNDROBIN.3.SHORTTfiSK.4.EXIT.please enter your choice:本程序包括三种算法,由上图可知,其中1为动态优先级算法,2为时间片轮转法,3为 短作业优先算法。用C语言实现,执行时在主界面选择算法(可用函数实现),进入子 页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。相应图如下:其中以短作业优先算法为例,首先选择1进入子页面,COMPUTER OS UORKpangao(Class 1 & uangjun (Class 1choose one of

19、follouing:PRIORITV.ROUNDROBIN.3.SHORTTASK.4.EXIT.please enter your choice:1 Enter process number然后输入进程数,假设为2个进程,则图为:-|n| x|Display Process OfPriority:ml2 a j j n 0 0ml2 a-J-J n 0 0ml2 a-J-J n 0 0m21 a-J-J n 0 0m21 a-J-J n 0 0m21 a-J-J n 0 0cputime00cputime10cputime20cputime03cputime13cputimem21 a-J-J n 0 0cputime071i 1 J061i 1 J051i 1 J014 iL L004il Lo 4-19 1o 4i8 1stateVJ stateRVJ stateRwtRctRctRctRCCOMPUTER OS WORKpangao(Class 1 & uangjun choose one of ollowing: PRIORITY.2.ROUNDROBIN.3_SHORTTASK_4.EXIT.please enter your choice

温馨提示

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

评论

0/150

提交评论