📜  自私的循环 CPU 调度

📅  最后修改于: 2022-05-13 01:56:11.788000             🧑  作者: Mango

自私的循环 CPU 调度

先决条件 - 循环调度程序

在传统的Round Robin调度算法中,所有进程都被平等对待进行处理。 Selfish Round Robin的目标是为已执行一段时间的流程提供比新流程更好的服务。与普通的循环算法相比,这是一个更合乎逻辑和更优越的实现。

执行:-

  • 就绪列表中的进程被划分为两个列表:NEW 和 ACCEPTED。
  • 新进程等待,而接受进程由循环服务。
  • 新进程的优先级以“a”速率增加,而被接受进程的优先级以“b”速率增加。
  • 当新进程的优先级达到已接受进程的优先级时,该新进程将被接受。
  • 如果所有接受的进程都完成,则接受最高优先级的新进程。

让我们来看看这个算法的一般工作:-

步骤 1:假设最初没有就绪进程,当第一个进程 A 到达时。首先,它的优先级为 0。由于没有其他接受的过程,A 立即被接受。
第 2 步:过了一会儿,另一个进程 B 到达。只要b / a < 1,B的优先级最终会赶上A,所以被接受;现在 A 和 B 具有相同的优先级。
第 3 步:所有接受的进程共享一个共同的优先级(以速率 b 上升);这使得该策略易于实施,即任何新进程的优先级都必然会在某个时候被接受。所以没有过程必须经历饥饿。
STEP 4:即使b / a > 1,A最终也会完成,然后B就可以被接受了。



Adjusting the parameters a and b : 
          -> If b / a >= 1, a new process is not accepted 
                 until all the accepted processes have finished, so SRR becomes FCFS. 
          -> If b / a = 0, all processes are accepted immediately, so SRR becomes RR. 
          -> If 0 < b / a < 1, accepted processes are selfish, but not completely.

自私循环的例子——

1

解决方案(其中 a = 2 且 b = 1) –

2

解释 -

进程 A 在时间 t = 0 时一出现就被接受。因此,它的优先级仅在每秒后增加“b”,即“1”。 B 在时间 t = 1 进入并进入等待队列。所以它的优先级在时间 t = 2 时增加了“a”,即“2”。此时 A 的优先级 = B 的优先级 = 2。

所以现在进程 A 和 B 都在接受队列中,并以循环方式执行。在时间 t = 3 时,进程 C 进入等待队列。在时间 t = 6 时,进程 C 的优先级赶上进程 B 的优先级,然后它们开始以循环方式执行。当 B 在时间 t = 10 完成执行时,D 被自动提升到接受队列。

类似地,当 D 在时间 t = 15 完成执行时,E 会自动提升到接受队列。