在linux系统中,sublime_text编辑器,编写FCFS算法的程序代码,并实现以下功能: 1)输出选择作业的次序; 2)计算并输出平均作业周转时间; 3)计算并输出平均带权周转时间。
时间: 2024-03-14 15:44:50 浏览: 102
Sublime Text 文本编辑器
好的,下面是一个使用 C 语言在 Linux 系统中编写 FCFS 算法的程序,可以实现以上所述的三个功能:
```c
#include <stdio.h>
struct Process {
int pid; // 进程 ID
int arrival; // 到达时间
int burst; // 执行时间
int turnaround; // 周转时间
int weighted; // 带权周转时间
};
int main() {
int n; // 进程数量
float avg_turnaround = 0, avg_weighted = 0;
printf("请输入进程数量:");
scanf("%d", &n);
struct Process processes[n];
// 输入每个进程的信息
for (int i = 0; i < n; i++) {
printf("请输入进程 %d 的到达时间和执行时间:", i + 1);
scanf("%d %d", &processes[i].arrival, &processes[i].burst);
processes[i].pid = i + 1;
processes[i].turnaround = processes[i].weighted = 0;
}
// 计算每个进程的周转时间和带权周转时间
int current_time = 0;
for (int i = 0; i < n; i++) {
current_time += processes[i].burst;
processes[i].turnaround = current_time - processes[i].arrival;
processes[i].weighted = processes[i].turnaround / processes[i].burst;
avg_turnaround += processes[i].turnaround;
avg_weighted += processes[i].weighted;
}
// 输出选择作业的次序
printf("选择作业的次序为:");
for (int i = 0; i < n; i++) {
printf("%d ", processes[i].pid);
}
printf("\n");
// 计算并输出平均作业周转时间和平均带权周转时间
avg_turnaround /= n;
avg_weighted /= n;
printf("平均作业周转时间为:%.2f\n", avg_turnaround);
printf("平均带权周转时间为:%.2f\n", avg_weighted);
return 0;
}
```
程序中定义了一个 `Process` 结构体,用于保存每个进程的信息。程序首先输入进程数量和每个进程的到达时间和执行时间,然后计算每个进程的周转时间和带权周转时间,并输出选择作业的次序、平均作业周转时间和平均带权周转时间。
运行程序,根据提示输入进程信息,即可得到以上三个功能的输出结果。
阅读全文