基于静态优先权和响应比的进程管理系统的设计_课程设计报告(编辑修改稿)内容摘要:

scanf(%c,amp。 flag)。 }//while()结束 rearnext=NULL。 return head。 } //****************** //***显示进程队列 *** //****************** void display(linklist head) { listnode *p。 if(head==NULL||headnext==NULL) {printf(\n\t 空 队 列 任 意 键 返 回 主 菜 单)。 getchar()。 system(cls)。 return。 } p=headnext。 printf(\n\t*************** 以下为队列信息 ************)。 printf(\n\t 进程名 \t 初始优先权 \t 到 达 时间 \t 服务时间 \t)。 printf(\n\t\n)。 while(p!=NULL) { printf(\t%s,p)。 printf(\t%d,p)。 printf(\t\t%d,p)。 printf(\t\t%d,p)。 printf(\n\t\n)。 p=pnext。 } getchar()。 system(cls)。 基于静态优先权和响应比的进程管理系统的设计 7 } //****************** //**静态优先权算法 ** //****************** void display_static(linklist head) { int size=0。 //假设当前时间为 0 int time=0。 //假设未进程满足条件 bool have=false。 //180 listnode *p,*q,*rear,*m,*n,*z。 if(head==NULL||headnext==NULL) {printf(\n\t 空 队 列 任 意 键 返 回 主 菜 单)。 getchar()。 system(cls)。 return。 } //创建一个新的链表用来存储静态优先权算法后得到的执行队列 linklist list_static=(listnode *)malloc(sizeof(listnode))。 rear=list_static。 p=(listnode *)malloc(sizeof(listnode))。 //取得链表节点数 p=headnext。 //190 while(p!=NULL){ size++。 p=pnext。 } p=headnext。 printf(%d,size)。 //临时指针 m=(listnode *)malloc(sizeof(listnode))。 mdata=headnextdata。 q=(listnode *)malloc(sizeof(listnode))。 qdata=headnextdata。 //最外层循环 选取新排列的链表 int i。 for(i=1。 i=size。 i++){ have=false。 //207 //遍历链表 挑选出 符合条件的进程 while(p!=NULL){ //如果当前时间下 有进程已到达 if(p=time){ have=true。 //如果其优先权比原有优先权大 则替换 选出其中优先权最大的 if(qp){ 基于静态优先权和响应比的进程管理系统的设计 8 //把 p 节点 复制成 q qdata=pdata。 } } //进程还未到达 选出到达时间最小且优先权最大的 if(ptime){ //同时到达 if(m==p){ //优先权 if(mp){ mdata=pdata。 }//224 } if(mp){ mdata=pdata。 } } p=pnext。 }//while 循环结束 z=(listnode *)malloc(sizeof(listnode))。 n=(listnode *)malloc(sizeof(listnode))。 if(have==true){ zdata=qdata。 z=time。 }else{ zdata=mdata。 z=z。 } n=(listnode *)malloc(sizeof(listnode))。 ndata=zdata。 n=n+n。 n=n。 time=n。 rearnext=n。 if(i!=1){ nprior=rear。 } rear=n。 //选出的进程需要从原来的链表中删。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。