10

在基于优先级的循环算法中,当在较低优先级进程(P2)正在处理期间到达较高优先级进程(比方说 P1)时,必须抢占 P2 而处理 P1。正确的?

那么如果在特定时间段之后(例如 10 毫秒)怎么办

  • P1 是否继续处理?(因为 P1 具有更高的优先级)

  • 或 P1 被抢占,调度器调度 P2(因为在循环中,在时间片之后,必须切换作业)

我认为第二个想法是正确的,但是这本书让我感到困惑。(操作系统概念国际版练习 5.8)

多谢

4

2 回答 2

5

这取决于。这是如何在正常的循环中实现的,在没有优先级的情况下,我们应该抢占 P2。但这对它有优先权,我们确实抢占了它,但是对于任何恰好具有下一个最高优先级的进程(为了简单起见)。

我们假设它是这样实现的:

  • 进程仅通过循环的时间片被抢占
  • 优先级将简单地基于进程在 RR 中执行的顺序(以避免饥饿问题)

这可能与您的书有所不同,例如,它可能会根据进程在队列中的时间长短来增加进程的优先级,然后抢占到当前的最高优先级(其中可能是相同的进程)。但我在上面定义的方式更侧重于循环公平共享。在这种情况下P1被抢占,我们移动到P2,与正常 RR 的工作方式相同。

但是让我们进入一个更好的例子,比如我们有P1 (priority = high),P2 (priority = low)P3 (priority = med)。然后按顺序进入队列:P1、P2、P3。然后从我定义 Priority RR 的方式来看:

P1 -> [high] Notice the priority simply changes the ordering
P3 -> [med]  But each still has the same time slice.
P2 -> [low]
P1
P3
P2

每个都有一个N时间片。当然是的,似乎优先级在这里并不是一个重要因素,RR 更关注。但是由于就绪队列中的进程数量很大(并且可能时间片很大),所以它会发挥更大的因素。

于 2014-10-19T04:22:43.430 回答
0

在基于优先级的循环调度中,如果所有进程的到达时间不同,那么如果任务的优先级大于在它之后到达的任务,则该进程将完成其突发。如果具有较高优先级的进程到达,则该任务将被抢占并执行较高优先级的任务。如果有两个具有相同优先级的任务,我们将只使用循环调度。然后我们将用给定的时间片切换任务。

于 2021-09-26T02:00:24.937 回答