实时模拟_FCFS调度算法

1 #include 2 #include 3 typedef struct course{/*进程结构体*/ 4char courseName; /*进程名称*/ 5int startTime/*到达时间*/,serviceTime/*服务时间*/; 6int survivalTime/*生存时间*/,WhetherIn/*是否就绪*/; 7int destructionTime/*销毁时间*/,readyTime/*就绪时间*/; 8struct course*next; 9 }course; 10 void typeIn(course*courseData,int n); /*录入进程数据*/ 11 void myQSort(course*courseData,int left,int right); /*按到达时间排序进程数据*/ 12 void output(course*courseData,int n); /*按到达时间升序进程数据后输出*/ 13 void FCFSreal_timeSimulation(course*courseData,int n); /*实时模拟FCFS进程调度算法*/ 14 void summarize(course*courseData,int n); /*实验总结*/ 15 int main(){ 16int n; 17course courseData[100]; 18while(1){ 19system("cls"); 20printf("模拟实验的进程数量:"); 21scanf("%d",&n); 22system("cls"); 23typeIn(courseData,n); /*录入进程数据*/ 24myQSort(courseData,0,n-1); /*按到达时间排序进程数据*/ 25system("cls"); 26//output(courseData,n); /*按到达时间升序进程数据后输出*/ 27FCFSreal_timeSimulation(courseData,n); /*实时模拟FCFS进程调度算法*/ 28summarize(courseData,n); /*实验总结*/ 29system("pause"); 30} 31return 0; 32 } 33 void typeIn(course*courseData,int n){ 34int i; 35for(i=0; ikey.startTime) 54j--; 55if(iWhetherIn){ 91queueF->WhetherIn=1; 92queueF->readyTime=i-1; 93}/* 94printf("本次执行进程:\n"); 95printf("进程名称 :%c\n",queueF->courseName); 96printf("到达时间 :%d\n",queueF->startTime); 97printf("服务时间 :%d\n",queueF->serviceTime); 98printf("服务开始时间 :%d\n",queueF->readyTime); 99printf("已服务时间 :%d\n",queueF->serviceTime-queueF->survivalTime); 100printf("剩余服务时间 :%d\n\n",queueF->survivalTime); */ 101queueF->survivalTime--; 102} 103printf("\n"); 104for(j=0; courseData[j].WhetherIn&&jcourseName=courseData[j].courseName; 113m->survivalTime=m->serviceTime=courseData[j].serviceTime; 114m->startTime=courseData[j].startTime; 115courseData[j].WhetherIn=1; 116m->WhetherIn=0; 117if(queueF) 118queueT->next=m; 119else 120queueF=m; 121queueT=m; 122} 123if(queueT) 124queueT->next=NULL; 125if(queueF&&!queueF->survivalTime){/*本次销毁进程*/ 126queueF->destructionTime=courseData[k].destructionTime=i; 127courseData[k].readyTime=queueF->readyTime; 128/*printf("本次销毁进程:\n"); 129printf("进程名称 :%c\n",queueF->courseName); 130printf("到达时间 :%d\n",queueF->startTime); 131printf("服务时间 :%d\n",queueF->serviceTime); 132printf("服务开始时间 :%d\n",queueF->readyTime); 133printf("服务结束时刻 :%d\n",i); 134printf("服务周转时间 :%d\n",queueF->destructionTime-queueF->startTime); 135printf("加权周转时间 :%.2f\n\n",1.0*(queueF->destructionTime-queueF->startTime)/queueF->serviceTime); */ 136if(queueF==queueT){ 137free(queueF); 138queueF=queueT=NULL; 139} 140else{ 141p=queueF; 142queueF=p->next; 143free(p); 144} 145k++; 146} 147if(k==n) 148return; 149i++; 150//system("pause"); 151} 152 } 153 void summarize(course*courseData,int n){ 154int i; 155system("cls"); 156printf("实时模拟FCFS进程调度算法结果如下:\n"); 157for(i=0; i
【实时模拟_FCFS调度算法】转载于:https://www.cnblogs.com/KurokoTetsuya/p/3612132.html

    推荐阅读