c++怎么实现fcfs算法
导读:首先,FCFS(First-Come, First-Served)是一种先来先服务的调度算法,按照任务到达的顺序依次执行。 以下是一个简单的C++实现FCFS调度算法的示例: #include <iostream> #inclu...
首先,FCFS(First-Come, First-Served)是一种先来先服务的调度算法,按照任务到达的顺序依次执行。
以下是一个简单的C++实现FCFS调度算法的示例:
#include iostream>
#include vector>
struct Process {
int arrivalTime;
int burstTime;
}
;
void calculateWaitingTime(std::vectorProcess>
&
processes, std::vectorint>
&
waitingTimes) {
int n = processes.size();
waitingTimes[0] = 0;
// 第一个进程的等待时间为0
for (int i = 1;
i n;
i++) {
waitingTimes[i] = processes[i - 1].burstTime + waitingTimes[i - 1];
}
}
void calculateTurnaroundTime(std::vectorProcess>
&
processes, std::vectorint>
&
waitingTimes, std::vectorint>
&
turnaroundTimes) {
int n = processes.size();
for (int i = 0;
i n;
i++) {
turnaroundTimes[i] = processes[i].burstTime + waitingTimes[i];
}
}
void calculateAverageTime(std::vectorProcess>
&
processes) {
int n = processes.size();
std::vectorint>
waitingTimes(n);
std::vectorint>
turnaroundTimes(n);
calculateWaitingTime(processes, waitingTimes);
calculateTurnaroundTime(processes, waitingTimes, turnaroundTimes);
int totalWaitingTime = 0;
int totalTurnaroundTime = 0;
for (int i = 0;
i n;
i++) {
totalWaitingTime += waitingTimes[i];
totalTurnaroundTime += turnaroundTimes[i];
}
float averageWaitingTime = static_castfloat>
(totalWaitingTime) / n;
float averageTurnaroundTime = static_castfloat>
(totalTurnaroundTime) / n;
std::cout "Average Waiting Time: " averageWaitingTime std::endl;
std::cout "Average Turnaround Time: " averageTurnaroundTime std::endl;
}
int main() {
std::vectorProcess>
processes = {
{
0, 10}
, {
6, 20}
, {
60, 5}
, {
110, 8}
}
;
calculateAverageTime(processes);
return 0;
}
在上述示例中,定义了一个Process
结构体来表示进程,包含到达时间和运行时间。calculateWaitingTime
函数用于计算每个进程的等待时间,calculateTurnaroundTime
函数用于计算每个进程的周转时间。calculateAverageTime
函数调用上述两个函数并计算平均等待时间和平均周转时间。在main
函数中,定义了一个进程数组,并传递给calculateAverageTime
函数进行计算。
以上是一个基本的FCFS算法的实现,可以根据实际需求进行调整和扩展。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: c++怎么实现fcfs算法
本文地址: https://pptw.com/jishu/575468.html