解释先来先服务C语言代码
时间: 2023-08-18 22:39:24 浏览: 41
先来先服务(First Come First Serve, FCFS)是一种作业调度算法,它是按照作业提交的先后顺序来依次执行作业,即先提交的作业先执行,后提交的作业后执行。以下是一个简单的 FCFS 算法的 C 语言代码实现:
```
#include<stdio.h>
#include<stdlib.h>
struct process {
int pid; // 进程ID
int arrival_time; // 到达时间
int burst_time; // 执行时间
int waiting_time; // 等待时间
int turnaround_time; // 周转时间
};
int main() {
int n, i, j;
printf("Enter number of processes: ");
scanf("%d", &n);
struct process p[n], temp;
float avg_waiting_time = 0, avg_turnaround_time = 0;
// 输入每个进程的信息
for(i=0; i<n; i++) {
p[i].pid = i+1;
printf("Enter arrival time and burst time for process %d: ", p[i].pid);
scanf("%d %d", &p[i].arrival_time, &p[i].burst_time);
}
// 按照进程到达时间进行排序
for(i=0; i<n-1; i++) {
for(j=i+1; j<n; j++) {
if(p[i].arrival_time > p[j].arrival_time) {
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
// 计算等待时间和周转时间
for(i=0; i<n; i++) {
if(i == 0) {
p[i].waiting_time = 0;
p[i].turnaround_time = p[i].burst_time;
}
else {
p[i].waiting_time = p[i-1].turnaround_time - p[i].arrival_time;
if(p[i].waiting_time < 0) {
p[i].waiting_time = 0;
}
p[i].turnaround_time = p[i].burst_time + p[i].waiting_time;
}
avg_waiting_time += p[i].waiting_time;
avg_turnaround_time += p[i].turnaround_time;
}
// 输出结果
printf("\nPID\tArrival Time\tBurst Time\tWaiting Time\tTurnaround Time\n");
for(i=0; i<n; i++) {
printf("%d\t%d\t\t%d\t\t%d\t\t%d\n", p[i].pid, p[i].arrival_time, p[i].burst_time, p[i].waiting_time, p[i].turnaround_time);
}
avg_waiting_time /= n;
avg_turnaround_time /= n;
printf("Average Waiting Time: %.2f\n", avg_waiting_time);
printf("Average Turnaround Time: %.2f\n", avg_turnaround_time);
return 0;
}
```
在这个代码中,我们首先输入每个进程的到达时间和执行时间,然后将它们按照到达时间进行排序。然后,我们计算每个进程的等待时间和周转时间,并输出结果。最后,我们计算平均等待时间和平均周转时间,并输出它们。
相关推荐
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)