操作系统 并发与非并发进程调度的区别
在本文中,您将了解并发与非并发调度之间的区别。但在讨论区别之前,您需要了解什么是并发和非并发调度。
什么是并发调度
并发调度是一种方法,当进程从运行状态切换到就绪状态或从等待状态切换到就绪状态时,可以使用该方法。资源被分配给进程一段时间,然后被移除。如果资源仍然具有剩余的CPU运行时间,则将进程放回就绪队列。该进程将保持在就绪队列中,直到再次获得执行的机会。
当高优先级进程进入就绪队列时,并不需要等待正在运行的进程完成其运行时间。然而,正在运行的进程会在执行的中间被中断,并放置在就绪队列中,直到高优先级进程使用资源。因此,每个进程都会在就绪队列中获得一些CPU时间。这提高了从运行到就绪状态和相反方向切换进程的开销,增加了并发调度的灵活性。它可以包括短作业优先和优先级调度,也可以不包括。
例如:
让我们以并发调度的例子为例。我们有四个进程 P0,P1,P2, 和 P3 。
Process | Arrival Time | CPU Burst time (in millisec.) |
---|---|---|
P0 | 3 | 2 |
P1 | 2 | 4 |
P2 | 0 | 6 |
P3 | 1 | 4 |
- 首先,进程 P2 在时间 0 时到达。因此,CPU被分配给进程 P2 。
- 当进程 P2 在运行时,进程P3在时间1时到达,并且进程 P2 (剩余时间5 ms) 大于进程 P3 (需要时间4 ms) 的时间。因此,处理器被分配给P3。
- 当进程 P3 在运行时,进程 P1 在时间 2 时到达,并且进程 P3 (剩余时间3 ms) 小于进程 P1 (需要时间4 ms) 和 P2 (需要时间5 ms) 的时间。因此, P3 继续执行。
- 当进程 P3 继续执行时,进程 P0 在时间 3 时到达。P3的剩余时间 (2 ms) 等于P0的必要时间 (2 ms) 。因此,进程 P3 继续执行。
- 当进程 P3 完成时,CPU分配给 P0 ,其爆发时间比其他进程短。
- 在进程 P0 完成后,CPU被分配给进程 P1 ,然后分配给进程 P2 。
剥夺式调度的优缺点
剥夺式调度有各种优点和缺点。非剥夺式调度的优点和缺点如下:
优点
- 它是一种更强大的方法,因为一个进程不能垄断处理器。
- 每个事件都会导致正在进行的任务的中断。
- 它改善了平均响应时间。
- 在多程序环境中使用此方法时更有益。
- 操作系统确保所有运行的进程使用相同数量的CPU。
缺点
- 需要使用有限的计算资源。
- 挂起执行进程、切换上下文和调度新的进程需要更多时间。
- 如果有多个高优先级进程同时到达,低优先级进程将不得不等待更长时间。
什么是非抢占式调度
非抢占式调度是一种在进程终止或从运行状态切换到等待状态时使用的方法。当处理器被分配给一个进程时,它会一直保持该进程,直到该进程被消除或达到等待状态。当处理器开始执行进程时,必须在执行其他进程之前完成它,并且不能在中途被中断。
当一个具有较长CPU爆发时间的非抢占式进程正在运行时,其他进程将不得不等待很长时间,这增加了就绪队列中进程的平均等待时间。然而,在非抢占式调度下,将进程从就绪队列转移到CPU没有额外的开销。调度是严格的,因为执行过程甚至不会被更高优先级的进程抢占。
例如:
让我们采用上述的抢占式调度示例,并以非抢占的方式解决它。
- 进程 P2 在 0 时刻到达,所以处理器被分配给进程 P2 ,执行时间为 (6 ms) 。
- 所有的进程 P0,P1 和 P3 都在就绪队列中到达。但是所有的进程都等待进程 P2 完成其CPU执行时间。
- 之后,接下来的进程 P3 被分配给CPU直到其完成执行时间。
- 当进程 P1 完成执行时,CPU被分配给进程 P0 。
非抢占调度的优缺点
非抢占调度有各种优点和缺点。非抢占调度的优点和缺点如下:
优点
- 提供低调度开销。
- 非常简单。
- 使用较少的计算资源。
- 提供高吞吐量。
缺点
-
对进程来说响应时间较差。
- 由于错误机器可能冻结。
抢占调度和非抢占调度的主要区别
在这里,您将了解到抢占式调度和非抢占式调度之间的主要区别。抢占式调度和非抢占式调度之间的各种区别如下:
- 在抢占式调度中,CPU被分配给进程一段特定的时间。相反,在非抢占式调度中,CPU被分配给进程直到它被移除并切换到等待状态。
- 在抢占式调度中,如果具有高优先级的进程频繁出现在就绪队列中,具有较低优先级的进程必须等待很长时间,可能会饿死。相反,在非抢占式调度中,当CPU被分配给具有较长执行时间的进程时,具有较短执行时间的进程可能会饿死。
- 在抢占式调度中,当一个具有更高优先级的进程进入CPU时,正在运行的进程会在执行过程中被暂停。另一方面,在非抢占式调度中,正在运行的进程不会被中断,在完成之前会一直等待。
- 抢占式调度在处理中是灵活的,而非抢占式调度则比较严格。
- 抢占式调度非常灵活,因为关键进程被允许访问CPU,它们进入就绪队列,而不管当前运行的是哪个进程。非抢占式调度很困难,因为如果将一个重要的进程分配给就绪队列,CPU进程将不会被中断。
- 在抢占式调度中,CPU利用率比非抢占式调度更有效。另一方面,在非抢占式调度中,CPU利用率不如抢占式调度有效。
- 抢占式调度非常具有成本效益,因为它确保共享数据的完整性。相反,在非抢占式调度的情况下就不是这样。
抢占式调度和非抢占式调度之间的对比
在这里,您将了解抢占式调度和非抢占式调度之间的对比。抢占式调度和非抢占式调度之间的主要区别如下:
抢占式调度 | 非抢占式调度 |
---|---|
资源被分配给一个进程的时间段很长。 | 一旦资源被分配给一个进程,它们将持有直到该进程完成其执行时间或者改变到等待状态。 |
它的进程可能在执行过程中被暂停。 | 当处理器开始执行一个进程时,它必须在执行其他进程之前完成该进程,并且在执行过程中可能不会被中断。 |
当高优先级进程连续进入就绪队列时,低优先级进程可能会饥饿。 | 当一个执行时间较长的进程使用CPU时,一个执行时间较短的进程可能会饥饿。 |
它是灵活的。 | 它是刚性的。 |
它有相关的成本。 | 它没有相关的成本。 |
它与进程调度有开销。 | 它没有开销。 |
它影响操作系统内核的设计。 | 它不影响操作系统内核的设计。 |
它的CPU利用率很高。 | 它的CPU利用率很低。 |
示例:轮转调度和最短剩余时间优先 | 先来先服务(FCFS)和最短作业优先(SJF)是非抢占式调度的示例。 |
结论
这不是抢占式调度优于非抢占式调度,或者反之亦然的情况。这完全取决于调度算法如何在减少平均进程等待时间的同时增加CPU利用率。