进程调度源程序精选.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程调度源程序精选

/进程调度源程序/ #include stdio.h #include stdlib.h #include string.h typedef struct node { ?? char name[10];? /*进程标识符*/ ?? int prio;?? /*进程优先数*/ ?? int round;? /*进程时间轮转时间片*/ ?? int cputime; /*进程占用CPU时间*/ ?? int needtime; /*进程到完成还要的时间*/ ?? int count;? /*计数器*/ ?? char state; /*进程的状态*/ ?? struct node *next; /*链指针*/ }PCB; PCB *finish,*ready,*tail,*run; /*队列指针*/ int N; /*进程数*/ /*将就绪队列中的第一个进程投入运行*/ firstin() { ?? run=ready;?? /*就绪队列头指针赋值给运行头指针*/ ?? run-state=R;?? /*进程状态变为运行态*/ ?? ready=ready-next;? /*就绪对列头指针后移到下一进程*/ } /*标题输出函数*/ void prt1(char a) { ?? if(toupper(a)==P) /*优先数法*/ ????? printf(? name???? cputime? needtime? priority? state\n); ?? else ????? printf(? name???? cputime? needtime?? count?? round???? state\n); } /*进程PCB输出*/ void prt2(char a,PCB *q) { ?? if(toupper(a)==P)? /*优先数法的输出*/ ????? printf(? %-10s%-10d%-10d%-10d %c\n,q-name, ?????? q-cputime,q-needtime,q-prio,q-state); ?? else/*轮转法的输出*/ ????? printf(? %-10s%-10d%-10d%-10d%-10d %-c\n,q-name, ?????? q-cputime,q-needtime,q-count,q-round,q-state); } /*输出函数*/ void prt(char algo) { ?? PCB *p; ?? prt1(algo);? /*输出标题*/ ?? if(run!=NULL) /*如果运行指针不空*/ ????? prt2(algo,run); /*输出当前正在运行的PCB*/ ?? p=ready;? /*输出就绪队列PCB*/ ?? while(p!=NULL) ?? { ????? prt2(algo,p); ????? p=p-next; ?? } ?? p=finish;? /*输出完成队列的PCB*/ ?? while(p!=NULL) ?? { ????? prt2(algo,p); ????? p=p-next; ?? } ?? getch();? /*压任意键继续*/ } /*优先数的插入算法*/ insert1(PCB *q) { ?? PCB *p1,*s,*r; ?? int b; ?? s=q;? /*待插入的PCB指针*/ ?? p1=ready; /*就绪队列头指针*/ ?? r=p1; /*r做p1的前驱指针*/ ?? b=1; ?? while((p1!=NULL)b)? /*根据优先数确定插入位置*/ ????? if(p1-prio=s-prio) ????? { ? r=p1; ? p1=p1-next; ????? } ????? else ? b=0; ?? if(r!=p1)? /*如果条件成立说明插入在r与p1之间*/ ?? { ????? r-next=s; ????? s-next=p1; ?? } ?? else ?? { ????? s-next=p1;? /*否则插入在就绪队列的头*/ ????? ready=s; ?? } } /*轮转法插入函数*/ insert2(PCB *p2) { ?? tail-next=p2;? /*将新的PCB插入在当前就绪队列的尾*/ ?? tail=p2; ?? p2-next=NULL; } /*优先数创建初始PCB信息*/ void create1(char alg) { ?? PCB *p; ?? int i,time; ?? char na[10]; ?? ready=NULL; /*就绪队列头指针*/ ?? finish=NULL;? /*完

文档评论(0)

beoes + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档