📌  相关文章
📜  SJF 和 LJF CPU 调度算法的区别(1)

📅  最后修改于: 2023-12-03 14:47:28.183000             🧑  作者: Mango

SJF 和 LJF CPU 调度算法的区别

1. SJF 算法

SJF (Shortest Job First) 算法是一种非抢占式的调度算法,它的核心思想是将 CPU 分配给执行时间最短的进程。

1.1 策略
  1. 当一个进程到达队列时,就将其按照需要的 CPU 时间排列到队列尾部。
  2. 执行过程中,进程的等待时间随着时间增加而减少。
  3. 当一个进程的 CPU 时间用完了,就从队列中删除。
1.2 优点
  • SJF 算法能够保证短作业优先,这样能够减少平均等待时间和平均周转时间。
1.3 缺点
  • SJF 算法只适用于非抢占式的调度环境下,如果一个进程被分配了 CPU,那么在执行过程中,其他进程将无法抢占它的 CPU。
2. LJF 算法

LJF (Longest Job First) 算法是 SJF 算法的反向策略,它的核心思想是将 CPU 分配给执行时间最长的进程。

2.1 策略
  1. 当一个进程到达队列时,就将其按照需要的 CPU 时间排列到队列头部。
  2. 执行过程中,进程的等待时间随着时间增加而增加。
  3. 当一个进程的 CPU 时间用完了,就从队列中删除。
2.2 优点
  • LJF 算法能够保证执行时间长的进程得到优先处理,这样能够减少平均等待时间和平均周转时间。
2.3 缺点
  • 与 SJF 算法一样,LJF 算法只适用于非抢占式的调度环境下。
3. 总结
  • SJF 算法适用于短作业调度场景,而 LJF 算法适用于长作业调度场景。
  • SJF 算法能够减少平均等待时间和平均周转时间,LJF 算法也能够达到类似的效果。
  • SJF 算法和 LJF 算法只适用于非抢占式的调度环境下,如果使用在抢占式的调度环境下会使等待时间增加,效果反而降低。