操作系统实验-先来先服务的调度算法和短作业优先
为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
SJF调度算法
短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
【实验内容】 问题分析
输入:进程的名称、到达时间、服务时间
输出:进程的完成时间、周转时间、带权周转时间 其中对于任意进程有: 周转时间=完成时间-到达时间 带权周转时间=周转时间/服务时间 因此,两个算法的关键是求完成时间
? 数据结构及函数说明
使用的数据结构是数组,进程的名称、到达时间、服务时间、进程的完成时间、周转时间、带权周转时间分别对应于一个数组,这些数组长度相等. struct fcfs
//定义进程的结构体 {
char name[10]; //进程名
float arrivetime; //到达时间 float servicetime; //服务时间 float starttime;//开始时间 float finishtime;//完成时间 float zztime;//周转时间
float dqzztime;//带权周转时间 };
fcfs a[100]; //结构体数组
函数说明
void Finput(fcfs *p,int N) ; //输入函数,初始化
void Fsort(fcfs *p,int N) ; //按到达时间排序,先到达排在前面 void Fsort2(fcfs *p,int N) ; //按进程大小排序,先到达排在前面
void F_method(fcfs *p, int N) //先来先服务算法 void F_method2(fcfs *p,int N) //短作业优先程序 void SJF(fcfs *p,int N); // 短作业优先 void FCFS(fcfs *p,int N); //先来先服务 void SJF(fcfs *p,int N) //短作业优先 void FPrint(fcfs *p,int N) //输出函数
求完成时间算法 1) FCFS算法流程图
开始初始化结构体数组、初始化进程队列,当前时间为0对进程数组按照到达时间小到大进行排序当前时间是否小于当前进程到达时间是当前时间=当前时间+1否当前进程的开始时间等于当前时间当前进程=下一个进程当前进程的结束时间等于开始时间+运行时间当前时间=当前进程结束时间+1否进程数组是否扫描完毕是结束
操作系统实验-先来先服务的调度算法和短作业优先



