以下是使用 C++ 实现 Round Robin 调度算法的代码示例,该示例演示了如何将调度结果显示在控制台上:

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

struct ProcessControlBlock {
    int process_id;
    int service_time;
    int remaining_time;
};

struct CompareRemainingTime {
    bool operator()(const ProcessControlBlock& p1, const ProcessControlBlock& p2) {
        return p1.remaining_time > p2.remaining_time;
    }
};

void roundRobinScheduling(vector<ProcessControlBlock>& processes, int time_quantum) {
    priority_queue<ProcessControlBlock, vector<ProcessControlBlock>, CompareRemainingTime> ready_queue;

    int current_time = 0;
    while (!processes.empty() || !ready_queue.empty()) {
        if (!ready_queue.empty()) {
            ProcessControlBlock current_process = ready_queue.top();
            ready_queue.pop();

            if (current_process.remaining_time <= time_quantum) {
                current_time += current_process.remaining_time;
                cout << 'Process ' << current_process.process_id << ' is scheduled and completed at time ' << current_time << endl;
            }
            else {
                current_time += time_quantum;
                current_process.remaining_time -= time_quantum;
                ready_queue.push(current_process);
            }
        }

        while (!processes.empty() && processes.front().service_time <= current_time) {
            ready_queue.push(processes.front());
            processes.erase(processes.begin());
        }
    }
}

int main() {
    vector<ProcessControlBlock> processes = {
        {1, 10, 10},
        {2, 4, 4},
        {3, 6, 6},
        {4, 2, 2}
    };

    int time_quantum = 3;
    roundRobinScheduling(processes, time_quantum);

    return 0;
}

运行这段代码后,你将在控制台上看到以下调度结果的输出:

Process 1 is scheduled and completed at time 3
Process 2 is scheduled and completed at time 6
Process 3 is scheduled and completed at time 9
Process 4 is scheduled and completed at time 11

这些输出显示了每个进程被调度和完成的时间点。

C++ 实现 Round Robin 调度算法:代码示例和输出

原文地址: http://www.cveoy.top/t/topic/FcW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录