进程调度算法c++
时间: 2023-08-03 13:18:24 浏览: 100
C++实现进程调度算法
进程调度算法是操作系统中非常重要的一个组成部分,其中最常用的调度算法包括:
1. 先来先服务算法(FCFS):按照进程到达的先后顺序进行调度,先到的进程先执行。
2. 短作业优先算法(SJF):按照进程所需要的执行时间进行排序,先执行执行时间最短的进程。
3. 优先级调度算法:按照进程的优先级进行排序,先执行优先级最高的进程。
4. 时间片轮转调度算法:将每个进程分配一个时间片,时间片用完后,将该进程放到队尾,轮流执行每个进程。
下面是一个简单的时间片轮转调度算法的示例代码(使用C++实现):
```
#include<bits/stdc++.h>
using namespace std;
struct Process{
int pid; //进程ID
int burst_time; //进程执行时间
int remaining_time; //剩余时间
};
void roundRobin(Process processes[], int n, int quantum_time){
queue<Process> q;
int time = 0;
int total_waiting_time = 0;
int total_turnaround_time = 0;
for(int i=0;i<n;i++){
q.push(processes[i]);
}
while(!q.empty()){
Process p = q.front();
q.pop();
if(p.remaining_time <= quantum_time){
time += p.remaining_time;
total_waiting_time += time - p.burst_time;
total_turnaround_time += time;
p.remaining_time = 0;
}
else{
time += quantum_time;
p.remaining_time -= quantum_time;
q.push(p);
}
}
cout<<"平均等待时间:"<<(float)total_waiting_time/n<<endl;
cout<<"平均周转时间:"<<(float)total_turnaround_time/n<<endl;
}
int main(){
Process processes[] = {{1, 10, 10}, {2, 5, 5}, {3, 8, 8}};
int n = sizeof(processes)/sizeof(processes[0]);
int quantum_time = 2;
roundRobin(processes, n, quantum_time);
return 0;
}
```
上述代码中,我们定义了一个Process结构体来表示进程,包含pid、burst_time和remaining_time三个属性。roundRobin函数是时间片轮转调度算法的实现,其中n表示进程的数量,quantum_time表示每个进程分配的时间片。在main函数中,我们定义了三个进程并调用roundRobin函数进行调度。
阅读全文