自私轮循CPU调度
操作系统中的调度算法根据进程的到达时间或优先级执行进程。每个算法都通过抢占或非抢占方法选择等待队列中的进程。抢占式算法为具有更高优先级的进程提供对 CPU 的访问权限,并抢占任何正在以较低优先级运行的其他进程。但在非抢占式调度的情况下,当进程开始执行时,即使在就绪状态下存在更高优先级的进程,它也无法被抢占。
传统的轮循调度算法是一种抢占式算法,其中每个进程在其执行中获得固定数量的时间片或量子。在给定的时间片后,进程进入队列的末尾,并且就绪队列中的其他进程以 FCFS 模式进行服务。自私轮循算法是传统算法的一种变体,但它为执行时间更长且具有高优先级的进程提供支持,并且比传统方法提供了更好的实现。
自私轮循调度
此算法为执行时间更长且具有更高优先级的进程提供 CPU 资源,并且队列中的其他进程可以提高其优先级以在短时间内获得 CPU,因此称为“自私”。就绪队列中的每个进程都被分配一个优先级级别,优先级较高的进程比优先级较低的进程接收更多的 CPU 时间。
在这里,为就绪队列中的所有进程创建两个列表,即“新”和“已接受”。第一次进入队列的进程必须等到“已接受”进程完成其服务。列表中的所有进程都通过应用传统的轮循方法获得相等数量的 CPU 时间,其中每个进程都被分配一个时间片来执行,并且在时间片内完成执行后,它被附加到队列的末尾,从而为下一个进程提供执行的机会。
考虑一个示例,P1、P2 和 P3 是三个不同的进程,每个进程都有不同的优先级级别。P1 被分配为高优先级,其次是 P2,P3 的优先级最低。为每个进程设置一个具有预定义时间片的轮循分配。
进程 P1 可以随时请求操作系统提高其优先级。其余进程的优先级级别将由操作系统更改。
其余进程的优先级级别将由操作系统更改。进程 P2 将请求一个包含更高级别的优先级,操作系统将调整分配给 P2 的优先级级别,使其优先级高于 P1 和 P3。
因此,现在进程 P2 将在下一个进程中拥有最多的 CPU 时间。
如果某个进程不必要地使用了给定的时间片,这可能会导致其他进程等待更长时间。
这鼓励进程有效地利用 CPU,而不是占据 CPU。从这个例子中,说明了 SRR 的基本思想,其中每个进程都可以根据其活动动态地更改其优先级,例如它使用了多少 CPU 时间或它等待 CPU 多长时间。
SRR 可以通过多种方式应用,并且有各种提高或降低进程优先级的标准。系统可能会考虑进程的大小或它在等待 CPU 时已使用的 CPU 时间。
优点
通过有效利用 CPU 来提高系统吞吐量,因为每个进程只需要利用执行所需的 CPU 时间。
根据轮循算法,每个进程都将分配相等数量的 CPU 时间。
缺点
任何进程都可以自私地利用所有分配的 CPU 时间,即使不需要。因此,其他进程会长时间等待获取 CPU 以执行其处理。
执行其处理。对于基于时间约束工作的实时系统来说,它可能不是一个合适的算法,在实时系统中,每个进程或任务都必须在给定时间段内完成。
对于需要较少 CPU 时间的进程来说,响应时间较高,因为它必须等待“已接受”进程完成其量子时间。
结论
自私轮循调度为高优先级进程提供有效的 CPU 时间,新进程必须等到高优先级进程完成其服务时间。它比普通的轮循调度或其他基于优先级的调度技术更有效。CPU 从不空闲,因为进程会长时间执行,并且就绪队列中的其他进程具有在给定时间片内完成执行的优先级。但主要缺点是它不支持需要处理离散事件的实时系统。