欢迎来到天天文库
浏览记录
ID:32976048
大小:80.12 KB
页数:8页
时间:2019-02-18
《操作系统程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、#include"iostream"#include"stdlib.h"#include"string.h"#include"conio.h"#include"stdio.h"usingnamespacestd;typedefstructnode{charname[10];〃进程标识符intprio;//进程优先数intround;//进程时间轮转时间片int卬utime;//进程占用CPU吋间intneedtime;//进程到完成还要的时间intcount;//计数器charstate;//进程的状态structnode*next;//链
2、指针}PCB;PCB*finish/*ready/tail,*run;〃队列指针intN;〃进程数〃将就绪队列中的第一个进程投入运行voidfirstin(){run=ready;//就绪队列头指针赋值给运行头指针run->state='R';//iS程状态变为运行态ready=ready->next;//就绪对列头指针后移至『卜•一进程}/♦****标题输出函数*****/voidprtl(chara){switch(a){case1:/*优先数法*/cout«H名字进程占用CPU时间进程到完成还要的时间优先级数状态“;break;c
3、ase2:/*吋间片算法*/cout<<”名字进程占用CPU时间进程到完成还要的时间计数器时间片状态卍;break;default:break;/*****进程PCB输出*****voidprt2(chara,PCB*q)switch(a)case1:/*优先数法的输出*/coutname«"t"«q->cputime«"t"vvq・>needtime«"t"«q->prio«"t"«q->state«"“break;case2:/*轮转法的输出*/cout«q->namevv'、t”vvq->cputimevv”
4、t”vvq->needtimevv”t”vvq->count«"t"«q->round«"t"«q->state«"";break;default:break;/*****输出函数*****/voidprt(charalgo)PCB*p;prtl(algo);//输出标题if(run!=NULL)//如果运行指针不空{prt2(algo,run);//输出当前正在运行的PCBp=ready;//输岀就绪队列PCB}while(p!=NULL)prt2(algo,p);p=p->next;}p二finish;//输出完成队列的PCB
5、while(p!=NULL){prt2(algo,p);p=p->next;}getch();//J±任意键继续}/*****优先数的插入算法*****/voidinsertl(PCB*q){PCB*pl/*s/*r;intb;s=q;//待插入的PCB指针pl=ready;〃就绪队列头指针r=pl;//r做pl的前驱指针b=l;while((pl!=NULL)&&b)//根据优先数确定插入位置{if(pl->prio>=s->prio){r=pl;pl=pl->next;}else{b=0;if(r!=pl)//如果条件成立说明插入在r与
6、pl之间{r->next=s;s・>next=pl;}elses->next=pl;//否则插入在就绪队列的头ready=s;初*杓轮转法插入函数*****voidinsert2(PCB*p2){tail・>next二p2;〃将新的PCB插入在当前就绪队列的尾tail=p2;p2->next=NULL;}/*****优先数创建初始PCB信息*****/voidcreatelfcharalg){PCB*p;inti,time;charna[10];ready=NULL;//就绪队列头指针finish=NULL;〃完成队列头指针run=NULL
7、;//iS行队列头指针coutvv”请输入进程的名字和运行所需要的时间”;〃输入进程标识和所需时间创建for(i=l;i<=N;i++)p=(PCB*)malloc(sizeof(PCB));cin»na;cin»time;strcpy(p->name,na);p->cputime=O;p->needtime=time;p->state='W';p->prio=50-time;if(ready!=NULL)//就绪队列不空则调用插入函数插入insertl(p);else{p->next=ready;//创建就绪队列的笫一个PCBread
8、y=p;}}voidclrscr(void);cout«H优先级调度算法模拟输出结果:u;cout
此文档下载收益归作者所有