进程调度之FCFS

来源:互联网 发布:谁用过网络麻将开挂 编辑:程序博客网 时间:2024/06/05 21:18

进程调度之FCFS

FCFS调度算法及先到先执行算法,先对进程按时间长短进行排名。再依次输出即可

 
#include <stdio.h>#include <string.h>#define N 24struct JOB{char name[10] ; //进程名int atime ;//到达时间int runtime ;//运行时间int ftime ;//结束时间int total ;//周转时间float welght ;//周转系数int arun ;//进程到达时间};void main(){int amount;//进程数int i;int j;char n[10];int a;int r;struct JOB f[N];printf("请输入进程数(2-24)\n");scanf("%d",&amount);for(i = 0; i < amount; i++){printf("请输入进程名,线程到达时间,线程运行时间\n");scanf("%s %d %d",&f[i].name, &f[i].atime, &f[i].runtime);}//------------------FCFS调度算法----------------------printf("\n------------------FCFS调度算法排序前----------------------\n");printf("进程名\t到达时间\t运行时间\n");for(i = 0; i < amount; i++){printf("%s\t%d\t\t%d\n", f[i].name, f[i].atime, f[i].runtime);}for(i = 0; i < amount - 1; i++){for(j = i+1; j < amount; j++){if(f[j].atime >f[i].atime){continue;}strcpy(n, f[i].name);a = f[i].atime;r = f[i].runtime;strcpy(f[i].name, f[j].name);f[i].atime = f[j].atime;f[i].runtime = f[j].runtime;strcpy(f[j].name, n);f[j].atime = a;f[j].runtime = r;}}printf("\n------------------FCFS调度算法排序后----------------------\n");printf("进程名\t到达时间\t运行时间\n");for(i = 0; i < amount; i++){printf("%s\t%d\t\t%d\n", f[i].name, f[i].atime, f[i].runtime);}printf("\n--------------------模拟FCFS调度过程----------------------\n");printf("\n进程名\t到达时间\t开始运行时间\t运行时间\t结束时间\t周转时间\t周转系数\n");f[0].arun = 0;for(i = 0; i < amount; i++){if(f[i].arun < f[i].atime){f[i].arun = f[i].atime;}f[i].ftime = f[i].arun + f[i].runtime ;f[i].total = f[i].ftime - f[i].atime ;f[i].welght = (float)f[i].total/(float)f[i].runtime ;printf("%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\t\t%f\n",f[i].name, f[i].atime, f[i].arun, f[i].runtime, f[i].ftime, f[i].total, f[i].welght);f[i+1].arun = f[i].ftime ;}}

0 0
原创粉丝点击