实验名称:动态高优先权优先调度算法
操作系统实验二:动态高优先权优先调度算法
一、实验目的
编写程序,实现动态高优先权优先调度算法,模拟进程调度过程,加深对进程调度的理解。
二、实验内容:
模拟实现动态高优先权优先的调度(若数值越大优先权越高,每运行一个时间单位优先权-n,若数值越小优先权越高,每运行一个时间单位优先权+n)。
本程序使用优先级按数值降序排列的策略
代码如下(示例):
#include<bits/stdc++.h>
#define endl '\n'
#define IOS ios::sync_with_stdio(0)
typedef long long ll;
const int N = 1e5 + 7;
using namespace std;
typedef struct{
char name[20];
int id;
int arrT; //到达时间
int serT; //服务时间
int endT; //结束时间
int runT; //运行时间
int zzT; //周转时间
float dqzzT; //带权周转时间
int priW; //优先级权重,数值大的优先运行
int sta; //状态 0等待 1运行 2完成
}Pro;
bool operator <(const Pro &a, const Pro &b){
if(a.priW == b.priW) return a.arrT > b.arrT; //权重数值相等,按到达时间升序排列
else return a.priW < b.priW; //按权重数值降序排列
}
bool cmp(Pro a, Pro b){
return a.arrT < b.arrT; } //按到达时间升序排列
Pro pro[N]; //进程块
priority_queue<Pro> q; //优先队列,按权重数值降序
int n; //进程数量
int groW; //每运行一个时间单位,优先级下降数值
void input(){
cout<<"请输入进程数量:";
cin>>n;
cout<<"请输入进程每运行一个时间单位优先权降低数量:";
cin>>groW;
cout<<"请输入进程的名字,到达时间,服务时间,初始优先级权重,每个进程占一行!\n";
for(int i = 1; i <= n; i++