什么是抢占式调度?
抢占式调度是一种调度方法,在该方法中,大多数任务都分配有优先级。有时,即使较低优先级的任务仍在运行,在另一个较低优先级的任务之前运行具有较高优先级的任务也很重要。
那时,低优先级任务会保留一段时间,并在高优先级任务完成执行时恢复。
什么是非抢占式调度?
在这种调度方法中,已将CPU分配给特定的进程。使CPU保持繁忙的进程将通过切换上下文或终止来释放CPU。
这是可用于各种硬件平台的唯一方法。这是因为它不需要抢先式调度之类的专用硬件(例如计时器)。
当进程自愿进入等待状态或终止时,会发生非抢占式调度。
操作系统中抢占式和非抢占式的区别
这是操作系统中的抢先式和非抢先式调度
抢占式调度 | 非抢占式调度 |
---|---|
可以抢占处理器以在任何当前进程执行的中间执行不同的进程。 | 处理器开始执行后,必须先执行它,然后再执行另一个。它不能在中间暂停。 |
与非抢先式调度相比,CPU利用率更高。 | 与抢先式调度相比,CPU利用率较低。 |
抢占式调度的等待时间和响应时间更少。 | 非抢占式调度方法的等待时间和响应时间较长。 |
优先调度是优先的。最高优先级的过程是当前使用的过程。 | 当任何进程进入运行状态时,该进程的状态永远不会从调度程序中删除,直到完成其工作为止。 |
抢占式调度非常灵活。 | 非抢占式调度是严格的。 |
示例:-最短剩余时间优先,循环赛等。 | 示例:先到先服务,最短作业优先,优先级调度等。 |
抢占式调度算法可以被抢占,即进程可以被调度 | 在非抢占式调度过程中无法调度 |
在此过程中,将CPU分配给特定时间段的进程。 | 在此过程中,CPU被分配给该过程,直到它终止或切换到等待状态。 |
抢占式算法的开销是将过程从就绪状态切换到运行状态,反之亦然。 | 非抢占式调度没有将进程从运行状态切换到就绪状态的开销。 |
抢占式调度的优势
这是抢占式调度方法的优点/优点:
- 抢占式调度方法更加健壮,可以使一个进程无法独占CPU
- 每次中断后都要重新考虑运行任务的选择。
- 每个事件都会导致正在运行的任务中断
- 操作系统确保所有正在运行的进程的CPU使用率相同。
- 在这种情况下,CPU的使用是相同的,即所有正在运行的进程将平均使用CPU。
- 此调度方法还改善了平均响应时间。
- 当我们将其用于多编程环境时,抢先式调度将非常有用。
非抢占式调度的优势
这是非抢占式调度方法的优点/优点:
- 提供低调度成本
- 倾向于提供高吞吐量
- 从概念上讲这是非常简单的方法
- 调度所需的计算资源更少
抢占式调度的缺点
这是抢占式调度方法的缺点/缺点:
- 需要有限的计算资源进行调度
- 调度程序需要更长的时间来挂起正在运行的任务,切换上下文并调度新的传入任务。
- 如果某些高优先级进程连续到达,则低优先级进程需要等待更长的时间。
非抢占式调度的缺点
这是非抢占式调度方法的缺点/缺点:
- 特别是对于那些实时任务,它可能导致饥饿
- 错误可能导致机器冻结
- 它会使实时和优先级调度变得困难
- 流程响应时间短
非抢占式调度示例
在非抢占式SJF调度中,一旦将CPU周期分配给进程,进程便将其保持到达到等待状态或终止为止。
考虑以下五个过程,每个过程都有自己独特的突发时间和到达时间。
处理队列 | 爆发时间 | 到达时间 |
---|---|---|
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1个 |
P4 | 3 | 0 |
P5 | 4 | 4 |
步骤0)在时间= 0时,P4到达并开始执行。
步骤1)在时间= 1,过程P3到达。但是,P4仍需要2个执行单元才能完成。它将继续执行。
步骤2)在时间= 2,过程P1到达并添加到等待队列中。P4将继续执行。
步骤3)在时间= 3,过程P4将完成其执行。比较P3和P1的突发时间。执行过程P1是因为其突发时间比P3少。
步骤4)在时间= 4,过程P5到达并添加到等待队列中。P1将继续执行。
步骤5)在时间= 5,过程P2到达并添加到等待队列中。P1将继续执行。
步骤6)在时间= 9,进程P1将完成其执行。比较P3,P5和P2的突发时间。执行过程P2是因为其突发时间最短。
步骤7)在时间= 10,P2正在执行,P3和P5在等待队列中。
步骤8)在时间= 11,过程P2将完成其执行。比较P3和P5的突发时间。执行处理P5是因为其突发时间较短。
步骤9)在时间= 15,过程P5将完成其执行。
步骤10)在时间= 23,过程P3将完成其执行。
步骤11)让我们计算以上示例的平均等待时间。
等待时间
P4 = 0-0 = 0
P1 = 3-2 = 1
P2 = 9-5 = 4
P5 = 11-4 = 7
P3 = 15-1 = 14
平均等待时间= 0 + 1 + 4 + 7 + 14/5 = 26/5 = 5.2
抢占式调度示例
在循环中考虑以下三个过程
处理队列 | 爆发时间 |
---|---|
P1 | 4 |
P2 | 3 |
P3 | 5 |
步骤1)从进程P1开始执行,该进程的突发时间为4。这里,每个进程执行2秒钟。P2和P3仍在等待队列中。
步骤2)在时间= 2,P1被添加到队列的末尾,P2开始执行
步骤3)在时间= 4,P2被抢占并在队列末尾添加。P3开始执行。
步骤4)在时间= 6时,P3被抢占并在队列末尾添加。P1开始执行。
步骤5)在时间= 8时,P1的突发时间为4。它已完成执行。P2开始执行
步骤6) P2的突发时间为3。它已经执行了2个间隔。在时间= 9时,P2完成执行。然后,P3开始执行直到完成。
步骤7)让我们计算以上示例的平均等待时间。
等待时间
P1 = 0+ 4 = 4
P2 = 2 + 4 = 6
P3 = 4 + 3 = 7
关键区别
- 在“抢先式调度”中,CPU被分配给特定时间段的进程,并且将非抢先式调度CPU分配给该进程直到终止。
- 在“抢先式调度”中,基于优先级切换任务,而非抢先式调度则不进行切换。
- 抢占式算法具有将进程从就绪状态切换到运行状态的开销,而非抢占式调度则没有这种切换开销。
- 抢占式调度很灵活,而非抢占式调度很严格。