帮我写一段进程调度算法的代码
时间: 2023-08-06 12:16:54 浏览: 57
好的,以下是一个简单的先来先服务(FCFS)进程调度算法的示例代码:
```
#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;
float avg_waiting_time = 0, avg_turnaround_time = 0;
printf("Enter the number of processes: ");
scanf("%d", &n);
struct process p[n]; // 创建进程数组
for (i = 0; i < n; i++) {
printf("Enter the arrival time and burst time of process %d: ", i + 1);
p[i].pid = i + 1;
scanf("%d %d", &p[i].arrival_time, &p[i].burst_time);
}
// 按到达时间排序
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (p[j].arrival_time > p[j+1].arrival_time) {
struct process temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
// 计算等待时间和周转时间
p[0].waiting_time = 0;
p[0].turnaround_time = p[0].burst_time;
for (i = 1; i < n; i++) {
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].waiting_time + p[i].burst_time;
}
// 计算平均等待时间和平均周转时间
for (i = 0; i < n; i++) {
avg_waiting_time += p[i].waiting_time;
avg_turnaround_time += p[i].turnaround_time;
}
avg_waiting_time /= n;
avg_turnaround_time /= n;
// 输出结果
printf("\nProcess\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);
}
printf("Average Waiting Time: %.2f\n", avg_waiting_time);
printf("Average Turnaround Time: %.2f\n", avg_turnaround_time);
return 0;
}
```
该程序首先让用户输入进程数量和每个进程的到达时间和执行时间,然后按到达时间对进程进行排序,计算等待时间和周转时间,最后输出结果。该算法的实现比较简单,适用于进程到达时间分布比较均匀的场景。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)