时间片轮转法c++
时间: 2023-08-03 17:07:26 浏览: 127
时间片轮转法 计算机操作系统 C++
5星 · 资源好评率100%
时间片轮转法是一种常见的进程调度算法,下面是一个简单的 C++ 实现:
```c++
#include <iostream>
#include <queue>
using namespace std;
struct Process {
int pid; // 进程 ID
int burst; // 进程的执行时间
};
int main() {
int n; // 进程数量
int quantum; // 时间片大小
queue<Process> ready_queue; // 就绪队列
// 输入进程信息
cout << "请输入进程数量和时间片大小:" << endl;
cin >> n >> quantum;
cout << "请输入各个进程的执行时间:" << endl;
for (int i = 0; i < n; i++) {
int burst;
cin >> burst;
Process p = {i + 1, burst};
ready_queue.push(p);
}
// 执行调度
int current_time = 0; // 当前时间
while (!ready_queue.empty()) {
Process p = ready_queue.front();
ready_queue.pop();
if (p.burst > quantum) {
// 进程还需要继续执行
p.burst -= quantum;
current_time += quantum;
ready_queue.push(p);
} else {
// 进程已经执行完毕
current_time += p.burst;
cout << "进程 " << p.pid << " 执行完毕,结束时间为 " << current_time << endl;
}
}
return 0;
}
```
该程序首先输入进程数量和时间片大小,然后输入各个进程的执行时间。接着按照时间片轮转法的顺序执行各个进程,直到所有进程都执行完毕。每次执行一个进程时,会检查它的执行时间是否超过了时间片大小,如果没有,则该进程可以执行完毕,否则需要继续放回就绪队列。最后输出各个进程的结束时间。
阅读全文