设计一个按优先级调度的算法
设计一个按优先级调度的算法
根据进程所赋予的优先级进行排序,逐个执行。
#include<stdio.h>
struct pcb{
char name[10];
int priorLevel;
float startTime;
float serviceTime;
float endTime;
};
//数据的输入
void input(int N, pcb *p){
printf("输入进程名、优先级和服务时间\n");
for(int i=0;i<N;i++)
scanf("%s%d%f",&p[i].name,&p[i].priorLevel,&p[i].serviceTime);
}
//按照到达时间进行排序
void sort(int N,pcb *p){
for(int i=0;i<N-1;i++){
pcb temp;
for(int j=i+1;j<N;j++){
if(p[i].priorLevel>p[j].priorLevel)
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
}
}
//计算进程开始时间和结束时间
void PCB(int N,pcb *p){
for(int i=0;i<N;i++){
if(i==0){
p[i].startTime=0;
p[i].endTime=p[i].startTime+p[i].serviceTime;
}
else{
p[i].startTime=p[i-1].endTime;
p[i].endTime=p[i].startTime+p[i].serviceTime;
}
}
}
//数据的输出
void print(int N,pcb *p){
printf("进程名 优先级 服务时间 运行时间 结束时间\n");
for(int i=0;i<N;i++)
printf("%s%12d%12.2f%11.2f%11.2f\n",p[i].name,p[i].priorLevel,p[i].serviceTime,p[i].startTime,p[i].endTime);
}
//主函数
int main()
{
pcb p[100];
int N;
printf("输入进程个数:\n");
scanf("%d",&N);
input(N,p);
sort(N,p);
PCB(N,p);
print(N,p);
}
先来先服务算法请看博客
https://blog.****.net/ScottWei_007/article/details/86528305