亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c++怎么實現fcfs算法

c++
小億
105
2023-12-01 09:58:41
欄目: 編程語言

首先,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算法的實現,可以根據實際需求進行調整和擴展。

0
松桃| 龙海市| 剑川县| 大名县| 佳木斯市| 建瓯市| 望都县| 黄平县| 大渡口区| 盐山县| 饶平县| 龙胜| 来凤县| 扎鲁特旗| 巫山县| 正镶白旗| 柘城县| 察隅县| 新绛县| 宝清县| 龙门县| 茌平县| 潢川县| 翁源县| 衡阳市| 阳新县| 灌南县| 鄂伦春自治旗| 荔浦县| 榆林市| 永仁县| 沈丘县| 永吉县| 云林县| 五指山市| 南宫市| 石家庄市| 澄城县| 广丰县| 渭南市| 平阴县|