时间片轮转调度算法c++
时间: 2023-09-25 15:15:41 浏览: 62
下面是一个简单的时间片轮转调度算法的C++代码:
```c++
#include <iostream>
#include <queue>
using namespace std;
struct Process {
int pid;
int burstTime;
int remainingTime;
};
void roundRobin(vector<Process>& processes, int quantum) {
queue<Process> q;
int n = processes.size();
int time = 0;
for (int i = 0; i < n; i++) {
q.push(processes[i]);
}
while (!q.empty()) {
Process p = q.front();
q.pop();
if (p.remainingTime <= quantum) {
time += p.remainingTime;
cout << "Process " << p.pid << " finished at time " << time << endl;
} else {
time += quantum;
p.remainingTime -= quantum;
q.push(p);
}
}
}
int main() {
vector<Process> processes = {
{1, 10, 10},
{2, 5, 5},
{3, 8, 8},
{4, 4, 4},
};
int quantum = 2;
roundRobin(processes, quantum);
return 0;
}
```
其中,`Process`是进程结构体,包含进程ID、执行时间和剩余时间。`roundRobin`函数是时间片轮转调度函数,接受进程列表和时间片长度作为参数。该函数使用一个队列来存储进程,并循环调度进程,直到所有进程执行完毕。如果进程的剩余时间小于等于时间片长度,那么该进程就可以立即完成并输出完成时间。否则,该进程的剩余时间减去时间片长度,并重新加入队列中等待下一次调度。
在`main`函数中,创建了一个进程列表和时间片长度,并调用`roundRobin`函数进行调度。以上代码仅供参考,实际应用中需要根据具体情况进行调整和优化。