进程调度算法C++
时间: 2023-07-09 11:09:42 浏览: 124
进程调度算法是操作系统中非常重要的一部分,用于决定哪些进程将被调度执行。常见的进程调度算法有以下几种:
1. 先来先服务(FCFS)调度算法:按照进程到达的先后顺序进行调度,先到达的进程先执行,后到达的进程后执行。
2. 最短作业优先(SJF)调度算法:按照进程的执行时间进行排序,执行时间短的进程先执行。
3. 优先级调度算法:为每个进程分配一个优先级,根据优先级高低进行调度。
4. 时间片轮转(RR)调度算法:将 CPU 时间分成多个时间片,每个进程执行一个时间片,时间片用完后将进程放到队列尾部,继续执行下一个进程。
下面是一个基于 FCFS 调度算法的 C++ 代码示例:
```c++
#include <iostream>
#include <queue>
using namespace std;
struct Process {
int pid; // 进程 ID
int arrive; // 到达时间
int burst; // 执行时间
};
bool operator<(const Process &p1, const Process &p2) {
return p1.arrive > p2.arrive; // 按到达时间从小到大排序
}
int main() {
priority_queue<Process> q; // 优先队列,用于按到达时间排序
int n; // 进程数
cin >> n;
for (int i = 0; i < n; i++) {
Process p;
cin >> p.pid >> p.arrive >> p.burst;
q.push(p);
}
int time = 0; // 当前时间
while (!q.empty()) {
Process p = q.top();
q.pop();
time = max(time, p.arrive); // 更新时间,确保当前时间不小于进程的到达时间
time += p.burst; // 执行进程
cout << p.pid << " " << time << endl; // 输出进程 ID 和完成时间
}
return 0;
}
```
阅读全文