作业调度先来先服务算法
时间: 2023-12-02 10:42:44 浏览: 72
先来先服务算法(First Come First Serve,FCFS)是一种简单的作业调度算法,按照作业到达的先后顺序进行调度。具体来说,当一个作业进入就绪队列时,如果此时CPU处于空闲状态,则该作业立即被调度执行;否则,该作业将等待前面的作业执行完毕后再执行。下面是一个简单的作业调度先来先服务算法的示例代码:
```c
#include <stdio.h>
struct job {
int id; // 作业编号
int arrive_time; // 到达时间
int run_time; // 运行时间
int start_time; // 开始时间
int finish_time; // 完成时间
int turnaround_time; // 周转时间
float weighted_turnaround_time; // 带权周转时间
};
void FCFS(struct job jobs[50], int n) {
int i;
float total_turnaround_time = 0, total_weighted_turnaround_time = 0;
int current_time = 0; // 当前时间
for (i = 0; i < n; i++) {
// 计算开始时间
if (current_time < jobs[i].arrive_time) {
jobs[i].start_time = jobs[i].arrive_time;
} else {
jobs[i].start_time = current_time;
}
// 计算完成时间
jobs[i].finish_time = jobs[i].start_time + jobs[i].run_time;
// 计算周转时间和带权周转时间
jobs[i].turnaround_time = jobs[i].finish_time - jobs[i].arrive_time;
jobs[i].weighted_turnaround_time = (float) jobs[i].turnaround_time / jobs[i].run_time;
// 更新当前时间
current_time = jobs[i].finish_time;
// 统计总的周转时间和带权周转时间
total_turnaround_time += jobs[i].turnaround_time;
total_weighted_turnaround_time += jobs[i].weighted_turnaround_time;
}
// 计算平均周转时间和平均带权周转时间
float avg_turnaround_time = total_turnaround_time / n;
float avg_weighted_turnaround_time = total_weighted_turnaround_time / n;
// 输出结果
printf("作业调度先来先服务算法结果:\n");
printf("作业编号\t到达时间\t运行时间\t开始时间\t完成时间\t周转时间\t带权周转时间\n");
for (i = 0; i < n; i++) {
printf("%d\t\t%d\t\t%d\t\t%d\t\t%d\t\t%d\t\t%.2f\n", jobs[i].id, jobs[i].arrive_time, jobs[i].run_time, jobs[i].start_time, jobs[i].finish_time, jobs[i].turnaround_time, jobs[i].weighted_turnaround_time);
}
printf("平均周转时间:%.2f\n", avg_turnaround_time);
printf("平均带权周转时间:%.2f\n", avg_weighted_turnaround_time);
}
int main() {
struct job jobs[50];
int n, i;
printf("请输入作业数量:");
scanf("%d", &n);
printf("请依次输入每个作业的到达时间和运行时间:\n");
for (i = 0; i < n; i++) {
jobs[i].id = i + 1;
scanf("%d%d", &jobs[i].arrive_time, &jobs[i].run_time);
}
FCFS(jobs, n);
return 0;
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.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)