代码解析// 短作业优先 void SJF() { // 按到到达顺序排序 for (int i = 1; i < num; i++) { for (int j = 1; j < num; j++) { if (p[j].arrival_time > p[j+1].arrival_time) { p[0] = p[j]; p[j] = p[j+1]; p[j+1] = p[0]; } // 到达顺序相同 按服务时间排序 else if (p[j].arrival_time == p[j+1].arriva
时间: 2023-07-15 09:11:43 浏览: 178
SJF.rar_操作系统_短作业优先算法
这是一个短作业优先算法的实现,主要用于CPU调度。该算法是一种非抢占式的调度算法,即在进程开始执行后不能被中断。算法的主要思想是先把所有进程按到达时间排序,然后按照服务时间短的优先进行调度。下面是对代码的分析:
1. 第1行:定义了一个名为SJF的函数,该函数没有参数和返回值。
2. 第3行:使用冒泡排序对进程按照到达时间进行排序。在这个排序过程中,使用了两层循环。外层循环控制排序次数,内层循环控制比较和交换操作。冒泡排序的基本思路是不断比较相邻的两个元素,如果它们的顺序不正确就交换它们的位置,直到所有元素都完成排序。在这个排序过程中,使用了一个临时变量p[0]来暂存当前元素。
3. 第7行:如果当前进程的到达时间比后面的进程晚,就交换它们的位置。交换操作使用了上面提到的临时变量p[0]。
4. 第11行:如果当前进程和后面的进程到达时间相同,就比较它们的服务时间。如果当前进程的服务时间比后面的进程短,就交换它们的位置。
5. 第14行:如果当前进程的到达时间和服务时间都比后面的进程短,就保持它们的原有位置不变。
阅读全文