优先级调度和最短作业优先 (SJF) CPU 调度的区别
1. 优先调度算法:
优先级调度算法根据进程的优先级执行进程。每个进程都被分配一个优先级,优先级最高的进程首先被执行。可以在内部和外部定义优先级。内部优先级由系统根据所需资源的数量、所需时间等来决定,而外部优先级则基于需要工作的时间或为完成的工作支付的金额或过程的重要性。优先级调度可以是抢占式的或非抢占式的。
注意 –
- 如果两个进程具有相同的优先级,则使用 FCFS 打破平局。
- 在抢占模式下,最高优先级进程的等待时间始终为零,而在非抢占模式下,它可能不为零。
缺点:
主要问题是饥饿或无限期阻塞。在进程流中,系统可能会继续执行高优先级进程而低优先级进程永远不会被执行。
2. 最短作业优先(SJF):
最短作业优先 (SJF) 调度算法基于进程的突发时间。这些进程根据它们的突发时间被放入就绪队列。在该算法中,首先处理突发时间最少的进程。仅比较在该时间之前存在或已经到达的那些进程的突发时间。它本质上也是非抢占式的。它的抢先版本称为最短剩余时间优先(SRTF)算法。
该算法的主要优点是它为给定的一组进程提供了最短的等待时间,从而减少了平均等待时间。这种算法的缺点是系统可能永远不会处理长进程,并且可能会在队列中停留很长时间,从而导致进程饥饿。
注意 –
如果两个进程具有相同的突发时间,则使用 FCFS 打破平局,即先处理先到达的进程。
最短作业优先 (SJF) 和 优先级调度算法的区别如下:
最短作业优先 (SJF) | 优先级调度 |
---|---|
最短作业优先 (SJF) 根据突发时间执行流程,即按突发时间的升序排列。 | 优先级调度根据进程的优先级执行进程,即按优先级的降序排列。首先执行优先级较高的进程。 |
SJF 也是非抢占式的,但其抢占式版本也称为最短剩余时间优先 (SRTF) 算法。 | 优先级调度本质上是抢占式和非抢占式的。 |
给定进程集的平均等待时间最短。 | 没有平均等待时间和响应时间的概念。 |
SJF 的真正困难在于知道下一个 CPU 请求或突发的长度。 | 优先级调度很容易实现,最适合实时操作系统。 |
长进程可能永远不会被执行,系统可能会继续执行短进程。 | 进程的阻塞问题可以通过老化来解决,即在固定的时间间隔后,将进程的优先级逐渐增加一个固定的数字。 |