欢迎来到天天文库
浏览记录
ID:37405889
大小:60.00 KB
页数:8页
时间:2019-05-23
《操作系统实验一先来先服务fcfs和短作业优先sjf调度算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、操作系统实验报告一[实验题目]先来先服务FCFS和短作业优先SJF调度算法[实验目的]通过本次实验,加深对进城概念的理解,进一步掌握对进城状态转变、进城调度策略及对系统性能的评价方法。[实验内容]编程实现如下内容: 1.先来先服务算法; 2.短进程优先算法;3.根据调度顺序计算所有作业的平均周转时间及平均带权周转时间。代码如下:一、先来先服务算法代码#include#include/**@author*@date2015-6-1*/typedefstructprocess_FCFS{floatarrivetime;//到达时间float
2、servetime;//服务时间floatfinishtime;//完成时间floatroundtime;//周转时间floatdaiquantime;//带权周转时间structprocess_FCFS*link;//结构体指针}FCFS;FCFS*p,*q,*head=NULL;structprocess_FCFSa[100];structprocess_FCFS*sortarrivetime(structprocess_FCFSa[],intn){inti,j;structprocess_FCFSt;intflag;for(i=1;i3、r(j=0;ja[j+1].arrivetime){t=a[j];a[j]=a[j+1];a[j+1]=t;flag=1;}}if(flag==0)//如果排序中没发生任何交换,则结束break;}returna;}//先来先服务算法voidprint(structprocess_FCFSa[],intn){inti;for(i=0;i4、a[i].finishtime);printf("周转时间:%f",a[i].roundtime);printf("带权周转时间:%f",a[i].daiquantime);printf("");}}voidFcfs(structprocess_FCFSa[],intn){inti;a[0].finishtime=a[0].arrivetime+a[0].servetime;a[0].roundtime=a[0].finishtime+a[0].arrivetime;a[0].daiquantime=a[0].roundtime/a[0].servetime;for(i5、=0;i6、me;a[i].daiquantime=a[i].roundtime/a[i].servetime;}}printf("先来先服务");print(a,n);}voidmain(){intn,i;printf("请输入有几个进程");scanf("%d",&n);for(i=0;i7、m.h>#includestructpcb{charpno;intcome_time;//到达时间intrun_time;//服务时间};floatfcfs(pcbpro[],intn){structpcbtemp;inti,j,k;//time为当前时间floatweight_time=0,time=0;//记录周转时间的和//temp=(pcb)malloc(sizeof(pcb));cout<<"进程调度情况如下:"<
3、r(j=0;ja[j+1].arrivetime){t=a[j];a[j]=a[j+1];a[j+1]=t;flag=1;}}if(flag==0)//如果排序中没发生任何交换,则结束break;}returna;}//先来先服务算法voidprint(structprocess_FCFSa[],intn){inti;for(i=0;i4、a[i].finishtime);printf("周转时间:%f",a[i].roundtime);printf("带权周转时间:%f",a[i].daiquantime);printf("");}}voidFcfs(structprocess_FCFSa[],intn){inti;a[0].finishtime=a[0].arrivetime+a[0].servetime;a[0].roundtime=a[0].finishtime+a[0].arrivetime;a[0].daiquantime=a[0].roundtime/a[0].servetime;for(i5、=0;i6、me;a[i].daiquantime=a[i].roundtime/a[i].servetime;}}printf("先来先服务");print(a,n);}voidmain(){intn,i;printf("请输入有几个进程");scanf("%d",&n);for(i=0;i7、m.h>#includestructpcb{charpno;intcome_time;//到达时间intrun_time;//服务时间};floatfcfs(pcbpro[],intn){structpcbtemp;inti,j,k;//time为当前时间floatweight_time=0,time=0;//记录周转时间的和//temp=(pcb)malloc(sizeof(pcb));cout<<"进程调度情况如下:"<
4、a[i].finishtime);printf("周转时间:%f",a[i].roundtime);printf("带权周转时间:%f",a[i].daiquantime);printf("");}}voidFcfs(structprocess_FCFSa[],intn){inti;a[0].finishtime=a[0].arrivetime+a[0].servetime;a[0].roundtime=a[0].finishtime+a[0].arrivetime;a[0].daiquantime=a[0].roundtime/a[0].servetime;for(i
5、=0;i6、me;a[i].daiquantime=a[i].roundtime/a[i].servetime;}}printf("先来先服务");print(a,n);}voidmain(){intn,i;printf("请输入有几个进程");scanf("%d",&n);for(i=0;i7、m.h>#includestructpcb{charpno;intcome_time;//到达时间intrun_time;//服务时间};floatfcfs(pcbpro[],intn){structpcbtemp;inti,j,k;//time为当前时间floatweight_time=0,time=0;//记录周转时间的和//temp=(pcb)malloc(sizeof(pcb));cout<<"进程调度情况如下:"<
6、me;a[i].daiquantime=a[i].roundtime/a[i].servetime;}}printf("先来先服务");print(a,n);}voidmain(){intn,i;printf("请输入有几个进程");scanf("%d",&n);for(i=0;i7、m.h>#includestructpcb{charpno;intcome_time;//到达时间intrun_time;//服务时间};floatfcfs(pcbpro[],intn){structpcbtemp;inti,j,k;//time为当前时间floatweight_time=0,time=0;//记录周转时间的和//temp=(pcb)malloc(sizeof(pcb));cout<<"进程调度情况如下:"<
7、m.h>#includestructpcb{charpno;intcome_time;//到达时间intrun_time;//服务时间};floatfcfs(pcbpro[],intn){structpcbtemp;inti,j,k;//time为当前时间floatweight_time=0,time=0;//记录周转时间的和//temp=(pcb)malloc(sizeof(pcb));cout<<"进程调度情况如下:"<
此文档下载收益归作者所有