开 始 输入进程的个数:num 输入进程的信息:name starttime servicetime r Sort() 队列中是否只有一个进程? N 执行判断函数:Run() Y执行时间处理函数:Time() 输出最后信息:Output() 结 束
8
八、源程序文件
#include
int Number; //进程编号 char Name[MaxNum]; //进程名称 int ArrivalTime; //到达时间 int ServiceTime; //开始运行时间 int FinishTime; //运行结束时间 int WholeTime; //运行时间 int run_flag; //调度标志 int order; //运行次序
double WeightWholeTime; //周转时间
double AverageWT_FCFS,AverageWT_SJF; //平均周转时间
double AverageWWT_FCFS,AverageWWT_SJF; //平均带权周转时间 }Process[MaxNum];
int N; //实际进程个数 int SJF(); //短作业优先
int SJF(){ //短作业优先算法 int temp_time=0; //当期那时间 int i=0,j;
int number_schedul,temp_counter; //进程编号,当前已执行进程个数 float run_time;
run_time=Process[i].WholeTime; j=1;
while((j //查找下一个被调度的进程 //对找到的下一个被调度的进程求相应的参数 number_schedul=i; Process[number_schedul].ServiceTime=Process[number_schedul].ArrivalTime; Process[number_schedul].FinishTime=Process[number_schedul].ServiceTime+Pr 9 ocess[number_schedul].WholeTime; Process[number_schedul].run_flag=1; temp_time=Process[number_schedul].FinishTime; Process[number_schedul].order=1; temp_counter=1; while(temp_counter Process[number_schedul].FinishTime=Process[number_schedul].ServiceTime+Process[number_schedul].WholeTime; Process[number_schedul].run_flag=1; temp_time=Process[number_schedul].FinishTime; temp_counter++; Process[number_schedul].order=temp_counter; }return 0; } int Pinput(); //进程参数输入 int Poutput(); //调度结果输出 void main() { 10 int option; printf(\ ********************主菜单************************\\n\ printf(\ * 1 使用短作业优先 *\\n\ printf(\ * 0 *\\n\ printf(\ **************************************************\\n\ //system(\ system(\ scanf(\ switch(option) { case 0: printf(\运行结束。\\n\ break; case 1: printf(\对进程用短作业优先调度。\\n\\n\ Pinput(); SJF(); Poutput(); break; } } int Pinput() //进程参数输入 { int i; printf(\请输入进程个数:\\n\ scanf(\ for(i=0;i 11 退出

