不同到达时间的循环轮询调度
操作系统的调度算法用于将输入进程调度到相应的处理器。进程调度程序具有分配权限,可以根据任何一种调度算法来决定启动哪个进程的执行。任何使用CPU资源的执行状态进程都可以被抢占,并且根据优先级(在基于优先级的算法中)选择就绪队列中的其他进程进行执行。
抢占式算法为具有更高优先级的进程提供对CPU的访问,如果任何其他正在以较低优先级运行的进程,则会抢占它。但在非抢占式调度的情况下,当初始进程进入执行状态时,即使更高优先级的进程处于就绪状态,它也不能被抢占。
循环轮询算法
该算法也是抢占式的,其中每个进程使用固定数量的时间片或量子进行执行。对于每个进程,在给定的时间片之后,如果它有剩余的突发时间需要执行,则处理器将启动进程发送到队列的末尾,并且就绪状态的其余进程将按照先到先服务 (FCFS) 模式进行服务。
以下是RR算法的关键功能:
它被认为是一种有效的算法,因为它不会进入饥饿模式,因为所有进程都会获得其CPU时间。
在运行状态期间被抢占并且具有剩余执行时间的进程被移动到队列的末尾。
时间片或量子应定义为最小值,并且对于用户的各种操作系统可能有所不同。
RR算法的工作方式是时钟驱动模型,在抢占阶段之后使用FCFS时采用混合方法。
上下文切换技术用于保存其执行过程中被抢占的进程状态。
它主要由传统操作系统因其快速简单的使用方法而使用。
它是一种流行的进程,它以指定的时间片响应给定事件,因此被称为实时算法。
循环轮询调度算法的工作原理
所有给定的进程根据到达时间进入就绪队列。
当第一个进程进入执行状态时,其他进程都在就绪队列中等待第一个进程完成其执行。
第一个进程执行到量子时间(抢占),如果它有剩余的突发时间,则将其发送到队列的末尾。
如果第一个进程在指定量子时间内用突发时间完成了执行,则调度程序将终止该进程。
此过程持续到所有进程都在时间段内完成执行并且就绪队列为空。
我们将讨论三个具有不同到达时间的示例。
示例 1 - 给定三个进程 P1、P2 和 P3,它们具有不同的到达时间和突发时间。
量子时间 = 2。
进程列表 |
到达时间 |
突发时间 |
---|---|---|
P1 |
0 |
4 |
P2 |
1 |
3 |
P3 |
2 |
7 |
甘特图
进程列表 |
到达时间 |
突发时间 |
完成时间或结束时间 (CT) |
周转时间 (CT-AT) |
等待时间 (TAT-BT) |
---|---|---|---|---|---|
P1 |
0 |
4 |
8 |
8-0=8 |
8-4=4 |
P2 |
2 |
3 |
9 |
9-2=7 |
7-3=4 |
P3 |
4 |
7 |
14 |
14-4=10 |
10-7=3 |
完成时间是每个进程成功完成执行并从队列中取出时的时间段,可以使用上面提供的甘特图进行跟踪。
平均等待时间 = (4+4+3) / 3 = 3.66 个单位
平均周转时间 = (8+7+10) / 3 = 8.33 个单位
示例 2 - 给定进程 P1、P2 和 P3,它们具有不同的到达时间和突发时间。
量子时间 = 4。
甘特图
进程列表 |
到达时间 |
突发时间 |
---|---|---|
P1 |
2 |
8 |
P2 |
0 |
7 |
P3 |
1 |
9 |
进程列表 |
到达时间 |
突发时间 |
完成时间 (CT) |
周转时间 (TAT) |
等待时间 (WT) |
---|---|---|---|---|---|
P1 |
2 |
8 |
23 |
23-2=21 |
21-8=13 |
P2 |
0 |
7 |
15 |
15-0=15 |
15-7=8 |
P3 |
1 |
9 |
24 |
24-1=23 |
23-9=14 |
平均等待时间 = (13+8+14) / 3 = 11.66 个单位
平均周转时间 = (21+15+23) / 3 = 19.66 个单位
结论
循环轮询算法被称为抢占式算法,因为处于执行状态的进程会在达到给定量子时间时被处理器抢占,然后根据先到先服务的基础进行后续服务。上下文切换方法用于存储每个已被抢占的进程的当前状态。