c++怎么实现fcfs算法

   2025-02-13 4830
核心提示:首先,FCFS(First-Come, First-Served)是一种先来先服务的调度算法,按照任务到达的顺序依次执行。以下是一个简单的C++实现FCF

首先,FCFS(First-Come, First-Served)是一种先来先服务的调度算法,按照任务到达的顺序依次执行。

以下是一个简单的C++实现FCFS调度算法的示例:

#include <iostream>#include <vector>struct Process {    int arrivalTime;    int burstTime;};void calculateWaitingTime(std::vector<Process>& processes, std::vector<int>& 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::vector<Process>& processes, std::vector<int>& waitingTimes, std::vector<int>& turnaroundTimes) {    int n = processes.size();    for (int i = 0; i < n; i++) {        turnaroundTimes[i] = processes[i].burstTime + waitingTimes[i];    }}void calculateAverageTime(std::vector<Process>& processes) {    int n = processes.size();    std::vector<int> waitingTimes(n);    std::vector<int> 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_cast<float>(totalWaitingTime) / n;    float averageTurnaroundTime = static_cast<float>(totalTurnaroundTime) / n;    std::cout << "Average Waiting Time: " << averageWaitingTime << std::endl;    std::cout << "Average Turnaround Time: " << averageTurnaroundTime << std::endl;}int main() {    std::vector<Process> processes = { {0, 10}, {6, 20}, {60, 5}, {110, 8} };    calculateAverageTime(processes);    return 0;}

在上述示例中,定义了一个Process结构体来表示进程,包含到达时间和运行时间。calculateWaitingTime函数用于计算每个进程的等待时间,calculateTurnaroundTime函数用于计算每个进程的周转时间。calculateAverageTime函数调用上述两个函数并计算平均等待时间和平均周转时间。在main函数中,定义了一个进程数组,并传递给calculateAverageTime函数进行计算。

以上是一个基本的FCFS算法的实现,可以根据实际需求进行调整和扩展。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言