操作系统短作业优先调度算法代码
时间: 2023-10-10 11:15:50 浏览: 111
操作系统短作业优先调度算法.doc
以下是一个简单的使用短作业优先调度算法的操作系统作业调度代码示例,使用C语言编写:
```c
#include<stdio.h>
#include<conio.h>
#define size 10
int main()
{
int at[size],bt[size],tat[size],wt[size],s[size],i,j,n,total=0,pos,temp;
float avg_wt,avg_tat; //平均等待时间和平均周转时间
clrscr(); //清屏操作
printf("Enter number of process: ");
scanf("%d",&n);
printf("\nEnter Arrival Time:\n");
for(i=0;i<n;i++)
{
printf("P[%d]:",i+1);
scanf("%d",&at[i]);
}
printf("\nEnter Burst Time:\n");
for(i=0;i<n;i++)
{
printf("P[%d]:",i+1);
scanf("%d",&bt[i]);
s[i]=i+1;
}
//对短作业优先进行排序
for(i=0;i<n;i++)
{
pos=i;
for(j=i+1;j<n;j++)
{
if(bt[j]<bt[pos])
pos=j;
}
temp=bt[i];
bt[i]=bt[pos];
bt[pos]=temp;
temp=s[i];
s[i]=s[pos];
s[pos]=temp;
}
wt[0]=0; //第一个进程的等待时间为0
//计算每个进程的等待时间和周转时间
for(i=1;i<n;i++)
{
wt[i]=0;
for(j=0;j<i;j++)
wt[i]+=bt[j];
total+=wt[i];
}
avg_wt=(float)total/n; //平均等待时间
total=0;
printf("\nProcess\t Burst Time \tWaiting Time\tTurnaround Time");
for(i=0;i<n;i++)
{
tat[i]=bt[i]+wt[i]; //计算周转时间
total+=tat[i];
printf("\nP[%d]\t\t %d\t\t %d\t\t\t%d",s[i],bt[i],wt[i],tat[i]);
}
avg_tat=(float)total/n; //平均周转时间
printf("\n\nAverage Waiting Time=%f",avg_wt);
printf("\nAverage Turnaround Time=%f",avg_tat);
getch(); //等待用户按下任意键结束程序
return 0;
}
```
以上代码实现了对短作业优先调度算法的模拟,包括输入进程的到达时间和执行时间,对执行时间进行排序并计算每个进程的等待时间和周转时间,最后输出平均等待时间和平均周转时间。
阅读全文