操作系统先进先出算法程序
时间: 2023-07-26 10:21:05 浏览: 65
以下是一个简单的先进先出算法的程序示例,用于模拟进程调度:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_PROCESS 10
struct process {
int pid; // 进程ID
int arrival_time; // 到达时间
int burst_time; // 执行时间
};
int compare_arrival_time(const void *a, const void *b) {
const struct process *pa = a;
const struct process *pb = b;
return pa->arrival_time - pb->arrival_time;
}
int main() {
struct process processes[MAX_PROCESS];
int n;
printf("请输入进程数(最多 %d 个):", MAX_PROCESS);
scanf("%d", &n);
if (n > MAX_PROCESS) {
printf("超过最大进程数!\n");
return 1;
}
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个进程的到达时间和执行时间:", i + 1);
scanf("%d%d", &processes[i].arrival_time, &processes[i].burst_time);
processes[i].pid = i + 1;
}
// 按到达时间排序
qsort(processes, n, sizeof(struct process), compare_arrival_time);
int time = 0; // 当前时间
int waiting_time = 0; // 等待时间总和
for (int i = 0; i < n; i++) {
printf("第 %d 个进程执行,进程ID:%d\n", i + 1, processes[i].pid);
waiting_time += time - processes[i].arrival_time; // 计算等待时间
time += processes[i].burst_time; // 更新当前时间
}
printf("平均等待时间:%f\n", (float)waiting_time / n);
return 0;
}
```
在这个程序中,我们定义了一个 `process` 结构体来表示进程,它包含进程ID、到达时间和执行时间三个属性。我们先让用户输入进程数和每个进程的到达时间和执行时间,然后按照到达时间排序,依次执行每个进程,并计算出所有进程的平均等待时间。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.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)
![](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)