最高级优先调度算法

#include
struct sjf {
char name[10]; //进程名
int arrivetime; //到达时间
int servicetime;//服务时间
    int starttime; //开始时间
int finishtime;//完成时间
float zztime;//周转时间
float dqzztime;//带权周转
int super;//优先级
};
sjf p[100];
void Sinput(sjf *p, int N) {


int i;
printf("输入进程名称,优先级,到达时间,服务时间:\n");
for (i = 0; i<N; i++) {
printf("输入第%d进程的名称,优先级,到达时间,服务时间:", i + 1);
scanf("%s%d%d%d", &p[i].name,&p[i].super, &p[i].arrivetime, &p[i].servicetime);
}
}
void Sprint(sjf *p, int N) {

int k;
printf("执行顺序\n");
printf("%s", p[0].name);
for (k = 1; k <= N; k++) {


printf(" %s", p[k].name);
}
printf("\n进程名 \t优先级 \t到达时间    服务时间\t开始时间\t完成时间\n");
for (k = 0; k <= N-1 ; k++) {
printf("  %s       %d       %d            %d           %d               %d \n\n",
p[k].name,p[k].super, p[k].arrivetime, p[k].servicetime, p[k].starttime, p[k].finishtime);
}
}
void Ssort(sjf *p, int N) {

for (int i = 1; i < N; i++) {
for (int j = 1; j <= i; j++) {
if (p[i].super > p[j].super) {
sjf temp;
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
}
void Sdeal(sjf *p,int N,float arrivetime,float servicetime,float finishtime){
int k;


for(k=0;k<=N;k++){
if(k==0){
p[k].starttime=p[k].arrivetime;
p[k].finishtime=p[k].arrivetime+p[k].servicetime;
}
else {
p[k].starttime=p[k-1].finishtime;
p[k].finishtime=p[k-1].finishtime+p[k].servicetime;
}
}
}
void SJF(sjf *p, int N) {
    float arrivetime=0,
servitime=0,
finishtime=0;
Ssort(p, N);
Sdeal(p,N,arrivetime,servitime,finishtime);
Sprint(p, N);
}
int main() {
int M;
printf("短作业优先调度算法\n");
printf("输入进程数:");
scanf("%d", &M);
Sinput(p, M);
SJF(p, M);


/*Sprint(p,M);
Ssort(p,M);
Sdeal(p,M,arrivetime,servitime,finishtime);*/
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章