首页主机资讯c++怎么实现fcfs算法

c++怎么实现fcfs算法

时间2023-12-10 01:25:03发布访客分类主机资讯浏览1493
导读:首先,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
Python中使用getattribute方法报错怎么解决 jupyter创建不了新文件如何解决

游客 回复需填写必要信息