欢迎来到天天文库
浏览记录
ID:55169729
大小:184.32 KB
页数:9页
时间:2020-04-30
《操作系统实验-先来先服务、短作业优先算法.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、9实验报告【实验名称】实验一进程调度【实验目的】巩固和加深处理机调度的概念。【实验内容】设计调度算法,模拟实现处理机的调度。1.设计先来先服务调度算法数据结构和符号说明:typedefstructPCB{charname[10];//进程名charstate;//进程状态intarrivetime;//到达时间intstarttime;//开始时间intfinishtime;//完成时间intservicetime;//服务时间floatturnaroundtime;//周转时间floatweightedturnaroundtime;//带权周转时间structPCB*next;
2、//指向下个进程的指针}pcb;inttime;//全局变量,计时器intn;//全局变量,进程个数pcb*head=NULL,*p,*q;//进程链表指针流程图:9程序源代码/*操作系统实验一先来先服务调度算法*/#include#includetypedefstructPCB//进程控制{charname[10];//进程名charstate;//进程状态intarrivetime;//到达时间intstarttime;//开始时间intfinishtime;//结束时间intservicetime;//服务时间floatturnarou
3、ndtime;//周转时间floatweightedturnaroundtime;//带权周转时间structPCB*next;//指向下个进程}pcb;inttime;//当前时间intn;//进程个数pcb*head=NULL,*p,*q;//处理未完成的进程voidrun_fcfs(pcb*p1){time=p1->arrivetime>time?p1->arrivetime:time;//如果进程到达时间大于当前时间,则当前时间=到达时间p1->starttime=time;//当前时间即为进程开始时间9printf("现在时间是%d,开始运行作业%s",time
4、,p1->name);time+=p1->servicetime;//进程开始处理,处理的时间为进程的服务时间p1->state='T';//更改状态,表示该进程已被处理过p1->finishtime=time;//存入完成时间p1->turnaroundtime=p1->finishtime-p1->arrivetime;//周转时间=完成时间-到达时间p1->weightedturnaroundtime=p1->turnaroundtime/p1->servicetime;//带权周转时间=周转时间/服务时间printf("到达时间服务时间开始时间完成时间周转时间带权周转时间
5、");printf("%8d%10d%10d%10d%10.1f%14.2f",p1->arrivetime,p1->servicetime,p1->starttime,p1->finishtime,p1->turnaroundtime,p1->weightedturnaroundtime);//打印输出}//找到当前未完成的进程voidfcfs(){inti,j;p=head;for(i=0;istate=='F'){q=p;//如果当前进程未执行,则开始执行run_fcfs(q);}p=p->next;指向下一个进程}}//输入进程个数与进
6、程信息voidgetInfo(){intnum;printf("作业个数:");scanf("%d",&n);for(num=0;numname,&p->arrivetime,&p->servicetime);if(head==NULL){head=p;q=p;time=p->arrivetime;}if(p->arrivetimearrive
7、time;q->next=p;p->starttime=0;p->finishtime=0;p->turnaroundtime=0;p->weightedturnaroundtime=0;p->next=NULL;p->state='F';q=p;}}intmain(){printf("先来先服务调度算法");getInfo();p=head;fcfs();return0;}运行结果图1运行结果2.设计按短进程优先调度算法9数据结构与符号说明:structsjf{charna
此文档下载收益归作者所有