FCFS调度算法用c语言怎么写
时间: 2024-10-14 17:04:54 浏览: 39
FCFS(First-Come, First-Served,先来先服务)是一种进程调度算法,它按照进程到达的时间顺序来分配CPU时间片。以下是使用C语言实现FCFS调度的一个简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define NUM_PROCESSES 5 // 进程数
// 定义进程结构体
typedef struct {
int pid; // 进程ID
int burst_time; // 进程运行时间
} Process;
// 比较进程burst time函数
int compare(const void *a, const void *b) {
return ((Process *)a)->burst_time - ((Process *)b)->burst_time;
}
int main() {
Process processes[NUM_PROCESSES];
int i;
printf("Enter process ID and burst time for each process (separated by space):\n");
for (i = 0; i < NUM_PROCESSES; i++) {
scanf("%d %d", &processes[i].pid, &processes[i].burst_time);
}
// 对进程按照burst time升序排序
qsort(processes, NUM_PROCESSES, sizeof(Process), compare);
int total_wait_time = 0, t = 0;
for (i = 0; i < NUM_PROCESSES; i++) {
while (t < processes[i].burst_time) { // 执行进程
printf("Process %d is running (remaining time: %d)\n", processes[i].pid, processes[i].burst_time - t);
t++;
}
// 计算等待时间并更新剩余时间
total_wait_time += (t - processes[i].burst_time); // 等待时间等于实际运行时间减去burst time
t = 0; // 当前进程完成,准备下一轮
}
printf("\nTotal wait time for all processes: %d\n", total_wait_time);
return 0;
}
```
在这个例子中,我们首先输入每个进程的ID和运行时间,然后按时间排序。接下来,逐个处理每个进程,直到它们全部完成。在每个进程上花费的时间就是它的burst_time,同时计算总等待时间。
阅读全文