网站大量收购独家精品文档,联系QQ:2885784924

FCFS算法和基于时间片轮转调度.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FCFS算法和基于时间片轮转调度.doc

Step 1、正确理解各调度算法的基本思想; (1)、FCFS算法和基于时间片轮转调度算法,可设其PCB的格式为: 进程名(进程标识) ID 链接指针 NEXT指针 到达时间 A_time 估计运行时间 S_time 进程状态 进程名 链接指针 进程的优先权 估计运行时间 进程状态 (2)、高优先权调度算法可设PC为: Step 2、在正确理解各调度算法的基础上编写出相应的程序。 下面以基于时间片轮转调度算法的源程序: #include stdio.h #include stdafx.h #include malloc.h typedef struct node { int ID; //进程名 int A_time; //到达时间 int S_time; //服务时间 struct node *next; }PCB; //进程结构定义 //全局变量定义 PCB *ReadyQueue; int C_time=0; //自定义函数 PCB *Init_Queue() //创建就绪队列 { PCB *p; p=(PCB *)malloc(sizeof(PCB)); p-next=NULL; return p; } PCB *Dequeue(PCB *Linklist) //进程执行结束、删除该进程 { PCB *p; p=Linklist-next; Linklist-next=Linklist-next-next; //删除队首节点 p-next=NULL; return p; //取出队首节点 } void Enqueue(PCB *Linklist,PCB *p) //插入新的进程 { PCB *q; q=Linklist; while ((q-next)!=NULL) q=q-next; q-next=p; } //主函数 int main(int argc, char* argv[]) { char ch; PCB *p; ReadyQueue=Init_Queue(); //初始化就绪队列 while (1) { printf(\nGreate a new Process(y/n)?); ch=getchar(); while (ch==y) //当输入y时表示要创建一个新的进程 { p=(PCB *)malloc(sizeof(PCB)); printf(\nID:); scanf(%d,(p-ID)); //输入新建进程的序号 printf(\nS_time:); scanf(%d,(p-S_time)); //输入新建进程需要服务的时间 p-A_time=C_time; //取新建进程到达时间为到目前为止系统运行时间 p-next=NULL; Enqueue(ReadyQueue,p); //将新建进程插入就绪队列 C_time++; printf(\nGreate a new Process(y/n)?); //是否有新的进程进入就绪队列 getchar(); ch=getchar(); } if (ReadyQueue-next==NULL) //若就绪队列为空,表示没有进程请求服务 { printf(Not exists process need services!!!\n); break; } else { p=Dequeue(ReadyQueue); //取出队首节点,即进程调度 printf(\nTime=%d Run Process is:%d,C_time,p-ID); p-S_time--; //服务时间减1 C_time++; if (p-S_time==0) //该进程执行完毕,退出就绪队列 { printf(\nWhen time=%d Process P%d run over!,C_time,p-ID); free(p); }

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档