编写c程序模拟实现单处理机系统中的进程调度算法,实现对多个进程的调度模拟,要求采用先来先服务进程调度算法进行模拟调度
时间: 2023-11-12 22:27:11 浏览: 101
#include <stdio.h>
#include <stdlib.h>
#define MAX_PROCESS 10
typedef struct {
int id; // 进程编号
int arrive_time; // 到达时间
int burst_time; // 执行时间
int waiting_time; // 等待时间
int turnaround_time; // 周转时间
} Process;
void fcfs(Process *processes, int n);
void print_processes(Process *processes, int n);
int main() {
int n, i;
Process processes[MAX_PROCESS];
printf("请输入进程数(最多%d个):", MAX_PROCESS);
scanf("%d", &n);
// 输入进程信息
for (i = 0; i < n; i++) {
printf("请输入第%d个进程的到达时间和执行时间:", i+1);
scanf("%d %d", &processes[i].arrive_time, &processes[i].burst_time);
processes[i].id = i+1;
}
// 调用先来先服务进程调度算法
fcfs(processes, n);
// 输出进程信息
print_processes(processes, n);
return 0;
}
void fcfs(Process *processes, int n) {
int i;
int current_time = 0; // 当前时间
int total_waiting_time = 0; // 总等待时间
int total_turnaround_time = 0; // 总周转时间
for (i = 0; i < n; i++) {
// 等待时间为前面所有进程的执行时间之和
processes[i].waiting_time = current_time - processes[i].arrive_time;
if (processes[i].waiting_time < 0) {
processes[i].waiting_time = 0;
}
total_waiting_time += processes[i].waiting_time;
// 周转时间为等待时间加上执行时间
processes[i].turnaround_time = processes[i].waiting_time + processes[i].burst_time;
total_turnaround_time += processes[i].turnaround_time;
// 更新当前时间
current_time += processes[i].burst_time;
}
// 计算平均等待时间和平均周转时间
printf("平均等待时间:%f\n", (float)total_waiting_time/n);
printf("平均周转时间:%f\n", (float)total_turnaround_time/n);
}
void print_processes(Process *processes, int n) {
int i;
printf("进程编号 到达时间 执行时间 等待时间 周转时间\n");
for (i = 0; i < n; i++) {
printf("%-8d %-8d %-8d %-8d %-8d\n", processes[i].id, processes[i].arrive_time, processes[i].burst_time, processes[i].waiting_time, processes[i].turnaround_time);
}
}
阅读全文