欢迎来到天天文库
浏览记录
ID:52698119
大小:231.83 KB
页数:8页
时间:2020-03-29
《操作系统实验处理机调度C语言实现.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#include#include#defineN20#defineMAX100typedefstructPCB//pcb进程控制块定义{intnum[N];//进程序号charname[10];//进程名charstate;//进程状态inttijiaotime;//进程到达时间intruntime;//进程开始时间intfinishtime;//进程结束时间intneedtime;//服务时间intpro;//进程优先级structPCB*next;//链接指
2、针指向下个作业的}pcb;structPCB*head_input;structPCB*head_run;structPCB*head_run_pre;unsignedlongcurrent;//记录系统当前时间的变量inttime=10000,n;//计时器pcb*head=NULL,*p,*q;voidgetInfo()//创建进程{intnum;printf("请输入要建立的进程个数:");scanf("%d",&n);for(num=0;num3、ad=p;q=p;}printf("依次输入:进程号进程名到达时间服务时间");scanf("%st%st%dt%d",&p->num,&p->name,&p->tijiaotime,&p->needtime);if(p->tijiaotimetijiaotime;q->next=p;p->runtime=0;p->finishtime=0;p->next=NULL;p->state='W';q=p;}}//*********************1.先来先服务调度算法**************************4、*****voidrun_fcfo(pcb*p1)//定义先来先到服务的算法{time=p1->tijiaotime>time?p1->tijiaotime:time;p1->runtime=time;printf("现在时间是%d,开始运行进程%s",time,p1->name);time+=p1->needtime;p1->state='F';p1->finishtime=time;printf("进程名开始时间所需时间结束时间");printf("%s%d%d%d",p1->name,p1->runtime,p1->needtime,p1->fi5、nishtime);}voidfcfo()//定义运行进程函数{inti,j,t;for(j=0;jtijiaotimestate=='W'){t=p->tijiaotime;q=p;//标记当前未完成的进程}p=p->next;}run_fcfo(q);}}//************************2.优先级调度服务算法************************************intreadydata(){//6、建立就绪队列if(head_input->next==NULL){return0;}structPCB*p1=head_input->next,*pmax,*p2;intmaxpro=0xffff;pmax=p1;p2=head_input;while(p1!=NULL){if(p1->propro;head_run_pre=p2;pmax=p1;}p2=p1;p1=p1->next;}head_run=pmax;head_run_pre->next=head_run->next;return1;}voidrunproces7、s()//运行进程函数{head_run->runtime-=10;head_run->pro++;structPCB*p1,*p2;printf("时间片的大小%d",current);current+=10;printf("%s开始",head_run->name);printf("时间片的大小%d",current);printf("%s结束",head_run->name);if(head_run->runtime<=0){//判断进程是否运行结束}else{p1=head_input;p2=head_input->next;p1->next=he8、ad_ru
3、ad=p;q=p;}printf("依次输入:进程号进程名到达时间服务时间");scanf("%st%st%dt%d",&p->num,&p->name,&p->tijiaotime,&p->needtime);if(p->tijiaotimetijiaotime;q->next=p;p->runtime=0;p->finishtime=0;p->next=NULL;p->state='W';q=p;}}//*********************1.先来先服务调度算法**************************
4、*****voidrun_fcfo(pcb*p1)//定义先来先到服务的算法{time=p1->tijiaotime>time?p1->tijiaotime:time;p1->runtime=time;printf("现在时间是%d,开始运行进程%s",time,p1->name);time+=p1->needtime;p1->state='F';p1->finishtime=time;printf("进程名开始时间所需时间结束时间");printf("%s%d%d%d",p1->name,p1->runtime,p1->needtime,p1->fi
5、nishtime);}voidfcfo()//定义运行进程函数{inti,j,t;for(j=0;jtijiaotimestate=='W'){t=p->tijiaotime;q=p;//标记当前未完成的进程}p=p->next;}run_fcfo(q);}}//************************2.优先级调度服务算法************************************intreadydata(){//
6、建立就绪队列if(head_input->next==NULL){return0;}structPCB*p1=head_input->next,*pmax,*p2;intmaxpro=0xffff;pmax=p1;p2=head_input;while(p1!=NULL){if(p1->propro;head_run_pre=p2;pmax=p1;}p2=p1;p1=p1->next;}head_run=pmax;head_run_pre->next=head_run->next;return1;}voidrunproces
7、s()//运行进程函数{head_run->runtime-=10;head_run->pro++;structPCB*p1,*p2;printf("时间片的大小%d",current);current+=10;printf("%s开始",head_run->name);printf("时间片的大小%d",current);printf("%s结束",head_run->name);if(head_run->runtime<=0){//判断进程是否运行结束}else{p1=head_input;p2=head_input->next;p1->next=he
8、ad_ru
此文档下载收益归作者所有