介绍
在本实验中,我们将学习如何使用 C++ 编程语言实现先来先服务(First Come First Serve, FCFS)调度算法。FCFS 是最简单的调度算法,它根据作业的到达时间进行调度。在该算法中,最先到达就绪队列的作业将首先获得 CPU。本实验适合希望学习 FCFS 调度算法的初学者。
在本实验中,我们将学习如何使用 C++ 编程语言实现先来先服务(First Come First Serve, FCFS)调度算法。FCFS 是最简单的调度算法,它根据作业的到达时间进行调度。在该算法中,最先到达就绪队列的作业将首先获得 CPU。本实验适合希望学习 FCFS 调度算法的初学者。
我们将在 ~/project
目录下使用以下命令创建一个名为 main.cpp
的新文件:
touch ~/project/main.cpp
包含用于输入/输出处理的必要头文件,并声明程序中使用的命名空间。
#include<iostream>
using namespace std;
定义 main()
函数,并声明 FCFS 算法所需的变量。
int main() {
int n, burst_time[20], waiting_time[20], turnaround_time[20], total_waiting_time = 0, total_turnaround_time = 0;
cout << "Enter total number of processes (maximum 20): ";
cin >> n;
使用循环获取每个进程的 Burst Time(执行时间)。每个进程的 Burst Time 表示完成该进程所需的持续时间。
cout << "\nEnter the Burst Time for each process\n";
for(int i = 0; i < n; i++) {
cout << "Process " << i + 1 << ": ";
cin >> burst_time[i];
}
使用循环计算每个进程的等待时间。等待时间表示每个进程在被执行之前在就绪队列中花费的时间。
// Calculate the waiting time for each process
waiting_time[0] = 0; // 第一个进程的等待时间为 0
for(int i = 1; i < n; i++) {
waiting_time[i] = 0;
for(int j = 0; j < i; j++) {
waiting_time[i] += burst_time[j];
}
}
使用循环计算每个进程的周转时间。周转时间表示从进程到达系统到其完成之间的时间。
// Calculate the turnaround time for each process and add up to the total waiting time and turnaround time
cout << "\nProcess\t\tBurst Time\tWaiting Time\tTurnaround Time";
for(int i = 0; i < n; i++) {
turnaround_time[i] = burst_time[i] + waiting_time[i];
total_waiting_time += waiting_time[i];
total_turnaround_time += turnaround_time[i];
cout << "\nP[" << i + 1 << "]" << "\t\t" << burst_time[i] << "\t\t" << waiting_time[i] << "\t\t" << turnaround_time[i];
}
使用公式计算平均等待时间和平均周转时间,并打印结果。
// Calculate the average waiting time and average turnaround time
float average_waiting_time = (float)total_waiting_time / (float)n;
float average_turnaround_time = (float)total_turnaround_time / (float)n;
cout << "\n\nAverage Waiting Time: " << average_waiting_time;
cout << "\nAverage Turnaround Time: " << average_turnaround_time;
return 0;
}
在终端中运行代码:
g++ main.cpp -o main
./main
在本实验中,我们学习了如何使用 C++ 编程语言实现先来先服务(First Come First Serve, FCFS)调度算法。FCFS 是最简单的调度算法,它根据作业的到达时间进行调度。我们涵盖了以下概念:
通过本实验,初学者现在可以轻松地使用 C++ 编程语言实现 FCFS 调度算法。