- 首页 > it技术 > >
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
推荐阅读