抢占式调度算法代码,devc++
时间: 2024-06-02 14:05:48 浏览: 142
抢占式调度算法是操作系统中常用的一种调度算法,其主要特点是可以强制中断正在执行的进程,将CPU资源分配给其他进程。下面是一个简单的抢占式调度算法代码示例,使用C++语言编写,在Dev-C++编译器下可以编译运行:
```
#include<iostream>
using namespace std;
//定义进程结构体
struct Process{
int pid; //进程ID
int priority; //优先级
int burst_time; //执行时间
int remaining_time; //剩余执行时间
};
//比较函数,根据优先级进行排序
bool compare(Process a, Process b){
return a.priority > b.priority;
}
int main(){
int n; //进程数
cout << "请输入进程数:";
cin >> n;
Process p[n]; //定义进程数组
//输入每个进程的信息
for(int i=0; i<n; i++){
p[i].pid = i+1;
cout << "请输入第" << i+1 << "个进程的优先级:";
cin >> p[i].priority;
cout << "请输入第" << i+1 << "个进程的执行时间:";
cin >> p[i].burst_time;
p[i].remaining_time = p[i].burst_time;
}
//按照优先级排序
sort(p, p+n, compare);
int time = 0; //记录当前时间
int total_time = 0; //记录总执行时间
//输出表头
cout << endl << "进程ID\t优先级\t执行时间\t剩余时间\t完成时间" << endl;
//循环执行每个进程
while(true){
bool flag = true; //记录是否所有进程都执行完毕
for(int i=0; i<n; i++){
if(p[i].remaining_time > 0){ //如果该进程还有剩余执行时间
flag = false;
if(p[i].remaining_time > 1){ //如果该进程还需要继续执行
cout << p[i].pid << "\t" << p[i].priority << "\t" << p[i].burst_time << "\t\t" << p[i].remaining_time-1 << endl;
p[i].remaining_time--;
}
else{ //如果该进程已经执行完毕
cout << p[i].pid << "\t" << p[i].priority << "\t" << p[i].burst_time << "\t\t" << 0 << "\t\t" << time+1 << endl;
total_time += time+1;
p[i].remaining_time = 0;
}
}
}
if(flag) break;
time++;
}
double avg_time = (double)total_time/n; //计算平均完成时间
//输出平均完成时间
cout << endl << "平均完成时间:" << avg_time << endl;
return 0;
}
```
阅读全文