处理器调度 1 内容 选择一个调度算法实现处理器调度 2 目的 在采用.doc_第1页
处理器调度 1 内容 选择一个调度算法实现处理器调度 2 目的 在采用.doc_第2页
处理器调度 1 内容 选择一个调度算法实现处理器调度 2 目的 在采用.doc_第3页
处理器调度 1 内容 选择一个调度算法实现处理器调度 2 目的 在采用.doc_第4页
全文预览已结束

下载本文档

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

文档简介

处理器调度1 内容选择一个调度算法,实现处理器调度。2 目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪状态进程个数大于处理器数时,就必须依照某种策略来决定那些进程优先占有处理器。本题目模拟在单处理器情况下处理器器调度,帮助学生加深了解处理器调度的工作。3 设计思路设计一个结构体数组,来存放个进程的名称,要求运行时间,优先级和当前状态,把优先级最高的进程放在队列的首位,执行一次,就将队列首位的进程的运行时间减一,优先级减一,再重新排序,直到所有进程的运行时间为零。4 程序代码如下:#include#includeint count=5;int head=0;int time=1;int start=1;typedef struct process /定义进程结构,包含信息进程名,进程要求运行的时间,优先及和状态 char pname; int ptime; int prior; char apper;jin;/定义一个结构体变量void creat(jin a)/创建进程队列 int i; jin *q; int k; for(i=0;i5;i+) q=(jin*)malloc(sizeof(jin); ai=*q; printf(please input the %d processs info:n,i); printf(run time and prior are:n); scanf(%d %d,&ai.ptime,&ai.prior); if(i=0) ai.pname=a;/将五个进程命名为a,b,c,d,e. else if(i=1) ai.pname=b; else if(i=2) ai.pname=c; else if(i=3) ai.pname=d; else ai.pname=e; ai.apper=R; for(k=0;k5;k+) /输出所有进程信息printf(%c(%d,%d,%c)n,ak.pname,ak.ptime,ak.prior,ak.apper); void paixu(jin a)/对所有进程按优先及由大至小排序int k; jin temp;int i,j; for(j=0;jcount;j+)for(i=0;icount-1;i+)if(ai.priorai+1.prior) temp=ai; ai=ai+1; ai+1=temp; printf(after order:n); for(k=0;kcount;k+) printf(%c(%d,%d,%c)n,ak.pname,ak.ptime,ak.prior,ak.apper);void run(jin a)/运行进程,操作:使优先数减一,要求运行时间减一int k,i=1;ahead.ptime-; ahead.prior-;printf(run %d times and ,time); time+;if(ahead.ptime=0) & (count=1)start=0; printf(every jin is End:n);if(ahead.ptime=0)&(count!=1) printf(jin %c is End:n,ahead.pname);ahead.apper=E; /输出所有进程信息 printf(%c(%d,%d,%c)n,ahead.pname,ahead.ptime,ahead.prior,ahead.apper); for(k=0;kcount-1;k+) ak=ak+1; count-; main() struct process jin5; creat(jin);/调用创建进程队列函数 paixu(jin);/调用排序函数 while(1)/当标志为1时,运行并排序 run(jin);/运行程序 paixu(jin);/排序程序 if(start=0)/标志为0则跳出 break; 5 程序运行结果:rootlocalhost root# gcc 1.c rootlocalhost root# ./a.out please input the 0 processs infor: run time and prior are: 2 1 please input the 1 processs infor: run time and prior are: 3 5 please input the 2 processs infor: run time and prior are: 1 3 please input the 3 processs infor: run time and prior are: 2 4 please input the 4 processs infor: run time and prior are: 4 2 a(2,1,R) b(3,5,R) c(1,3,R) d(2,4,R) e(4,2,R) after order: b(3,5,R) d(2,4,R) c(1,3,R) e(4,2,R) a(2,1,R) run 1 times and after paixu: b(2,4,R) d(2,4,R) c(1,3,R) e(4,2,R) a(2,1,R) run 2 times and after paixu: d(2,4,R) b(1,3,R) c(1,3,R) e(4,2,R) a(2,1,R) run 3 times and after paixu: d(1,3,R) b(1,3,R) c(1,3,R) e(4,2,R) a(2,1,R) run 4 times and jin d is End: d(0,2,E) after paixu: b(1,3,R) c(1,3,R) e(4,2,R) a(2,1,R) run 5 times and jin b is End: b(0,2,E) after paixu: c(1,3,R) e(4,2,R) a(2,1,R) run 6 times and jin c is End: c(0,2,E) after paixu: e(4,2,R) a(2,1,R) run 7 times and after paixu: e(3,1,R) a(2,1,R) run 8 times and after paixu: a(2,1,R) e(2,0,R) run 9 times and after paixu: a(1,0,R) e(2,0,R) run 10 times and jin a is E: a(0,

温馨提示

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

评论

0/150

提交评论