C++ 实现 Round Robin 调度算法:代码示例和输出
以下是使用 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
这些输出显示了每个进程被调度和完成的时间点。
原文地址: http://www.cveoy.top/t/topic/FcW 著作权归作者所有。请勿转载和采集!