📜  操作系统中的彩票流程调度

📅  最后修改于: 2021-09-27 14:41:56             🧑  作者: Mango

先决条件 – CPU 调度、进程管理
彩票调度是一种进程调度,与其他调度有些不同。进程以随机方式调度。彩票调度可以是抢占式或非抢占式。它还解决了饥饿问题。给每个进程至少一张彩票保证它在每个调度操作中被选中的概率非零。

在这个调度中,每个进程都有一些票,调度程序随机选择一张票,拥有这张票的进程是赢家,它在一个时间片内执行,然后调度程序选择另一张票。这些票代表进程的份额。具有更多票证的流程使其有更多机会被选择执行。

示例 –如果我们有两个进程 A 和 B,在总共 100 张票中分别有 60 和 40 张票。 A 的 CPU 份额为 60%,B 的 CPU 份额为 40%。这些份额是根据概率而非确定性计算的。

解释 –

  1. 我们有两个进程 A 和 B。A 有 60 张票(票号 1 到 60),B 有 40 张票(票号 61 到 100)。
  2. 调度程序从 1 到 100 中选择一个随机数。如果选择了没有。是从 1 到 60,则执行 A,否则执行 B。
  3. 调度程序选择的 10 张票的示例可能如下所示 –
    Ticket number -  73 82 23 45 32 87 49 39 12 09.
    Resulting Schedule -  B  B  A  A  A  B  A  A  A  A.
    
  4. A被执行7次,B被执行3次。正如你所看到的,A 占用 70% 的 CPU,B 占用 30%,这与我们需要的不同,因为我们需要 A 拥有 60% 的 CPU,B 应该拥有 40% 的 CPU。这是因为计算份额概率,但长期以来(即禁用的门票超过100或1000),我们可以达到约的份额。 A 和 B 分别为 60 和 40。

操纵门票的方法 –

  • 票币 –
    调度程序以一种货币向不同的用户提供一定数量的票,而用户可以以不同的货币将其提供给进程。例如,两个用户 A 和 B 分别获得了 100 和 200 张票。用户 A 正在运行两个进程,并以 A 自己的货币向每个进程提供 50 张票。 B 正在运行 1 个进程并以 B 的货币给它所有 200 张票。现在在调度时,每个进程的票都转换为全球货币,即 A 的进程每个有 50 个票,B 的进程有 200 个票,在此基础上进行调度。
  • 转车票——
    一个进程可以将它的票传递给另一个进程。
  • 机票通胀 –
    使用这种技术,进程可以临时增加或减少它拥有的票证数量。

参考 –
彩票计划 – 维基百科
伯克利教育学院