时间片轮转算法的模拟实现C++
时间: 2023-11-14 08:29:01 浏览: 35
下面是一个基于C++的时间片轮转算法的简单模拟实现:
```cpp
#include<iostream>
#include<queue>
using namespace std;
struct Process {
string name; // 进程名
int arrivalTime; // 到达时间
int burstTime; // 执行时间
int remainingTime; // 剩余执行时间
};
int main() {
int n, timeQuantum;
queue<Process> readyQueue;
cout << "请输入进程个数:";
cin >> n;
cout << "请输入时间片大小:";
cin >> timeQuantum;
for (int i = 1; i <= n; i++) {
Process p;
cout << "请输入第" << i << "个进程的信息:" << endl;
cin >> p.name >> p.arrivalTime >> p.burstTime;
p.remainingTime = p.burstTime;
readyQueue.push(p);
}
int currentTime = 0;
while (!readyQueue.empty()) {
Process currentProcess = readyQueue.front();
readyQueue.pop();
if (currentProcess.remainingTime <= timeQuantum) { // 进程执行完毕
currentTime += currentProcess.remainingTime;
cout << currentProcess.name << " 执行完毕,完成时间:" << currentTime << endl;
} else { // 进程未执行完毕,重新加入就绪队列
currentTime += timeQuantum;
currentProcess.remainingTime -= timeQuantum;
readyQueue.push(currentProcess);
}
}
return 0;
}
```
该程序首先会要求用户输入进程个数和时间片大小,然后依次输入每个进程的名称、到达时间和执行时间,程序会自动计算出每个进程的剩余执行时间,并将进程加入就绪队列中。接下来程序会不断从就绪队列中取出进程并执行,如果进程执行完毕则输出完成时间,否则将进程重新加入就绪队列中等待下一次执行。