📜  基于抢占优先级和非抢占优先级的 CPU 调度算法的区别

📅  最后修改于: 2021-09-27 15:35:48             🧑  作者: Mango

先决条件 – CPU 调度
优先调度:
在优先级调度中,每个进程都有一个优先级,它是分配给它的整数值。
最小的整数被认为是最高优先级,最大的整数被认为是最低优先级。具有最高优先级的进程首先获得 CPU。

在罕见的系统中,最大的数字也可能被视为最高优先级,因此这一切都取决于实现。

如果优先级是在内部定义的,则使用一些可测量的量,例如时间限制、内存要求、打开文件的数量以及平均 I/O 突发与平均 CPU 突发的比率来计算优先级。
外部优先级是根据流程的重要性、为计算机使用支付的资金类型和金额、工作的部门赞助等因素来分配的。

抢占式和非抢占式 SJF 是一种优先级调度,其中优先级是作业的最短执行时间。在该算法中,低优先级进程可能永远不会执行。这被称为饥饿。

解决这个饥饿问题的方法是衰老。在老化中,随着时间的推移,提高进程的优先级,使最低优先级的进程逐渐转换为最高优先级。

  1. 优先抢占式调度:
    有时即使当前正在执行任务,立即执行更高优先级的任务也很重要。例如,当接到电话时,即使当前正在使用其他应用程序,CPU 也会立即分配给该任务。这是因为来电具有比其他任务更高的优先级。这是优先级抢占式调度的完美示例。如果比当前正在执行的任务具有更高优先级的任务到达,则 CPU 的控制权将从当前任务中转移给更高优先级的任务。
  2. 优先非抢占式调度:
    与优先级抢占式调度不同,即使有更高优先级的任务确实到达,它也必须等待当前任务释放 CPU 才能执行。常用于各种硬件程序,如定时器等。

笔记:
如果所有进程同时到达,则优先级抢占式调度和优先级非抢占式调度的工作方式相同。

下面我们就抢占式优先级调度和非抢占式优先级调度做一个对比研究。

PRIORITY PREEMPTIVE SCHEDULING PRIORITY NON PREEMPTIVE SCHEDULING
If a process with higher priority than the process currently being executed arrives, the CPU is preemeted and given to the higher priority process. Once resources are allocated to a process, the process holds it till it completes its burst time even if a process with higher priority is added to the queue.
Preemptive scheduling is more flexible. Non-preemptive scheduling is rigid.
The waiting time for the process having the highest priority will always be zero. The waiting time for the process having the highest priority may not be zero.
It is more expensive and difficult to implement. Also a lot of time is wasted in switching. It is cheaper to implement and faster as less switching is required.
It is useful in applications where high priority processes cannot be kept waiting. It can be used in various hardware applications where waiting will not cause any serious issues.

例子:

Process Arrival Time Burst Time Priority
P1 0 8 3
P2 1 1 1
P3 2 3 2
P4 3 2 3
P5 4 6 4

让我们尝试使用两种算法来解决这个问题,进行比较研究。

1. 优先级非抢占式调度:
甘特图将如下所示:

平均等待时间(AWT),

= ((0-0) + (8-1) + (9-2) + (12-3) + (14-4)) / 5 
= 33 / 5 
= 6.6 

平均周转时间(TAT),

= ((8-0) + (9-1) + (12-2) + (14-3) + (20-4)) / 4 
= 53 / 5 
= 10.6 

2. 优先抢占式调度:
甘特图将如下所示:

平均等待时间(AWT),

= ((5-1) + (1-1) + (2-2) + (12-3) + (14-4)) / 5 
= 23/5 
= 4.6 

平均周转时间(TAT),

= ((12-0) + (2-1) + (5-2) + (14-3) + (20-4)) / 5 
= 43 / 5 
= 8.6