饥饿和护航效应之间的唯一区别是护航效应主要定义在FCFS调度算法上,而饥饿是基于优先级的调度吗?
我研究了这两种效果,但找不到比较。这是基于我在大学学位中学到的操作系统理论。
饥饿和护航效应之间的唯一区别是护航效应主要定义在FCFS调度算法上,而饥饿是基于优先级的调度吗?
我研究了这两种效果,但找不到比较。这是基于我在大学学位中学到的操作系统理论。
饥饿和车队都可能发生在这两种算法中。最简单的饥饿,可以通过进入这个循环的任务来模拟(我希望它不是 UDB):
while (1) {
}
在 FCFS 中,这个任务永远不会放弃 CPU,因此它后面的所有任务都会饿死。在基于优先级的系统中,相同的任务将饿死每个较低优先级的任务。
车队可以更普遍地被认为是资源争用问题;一个任务拥有资源(cpu),而其他任务必须等到它完成。在基于优先级的系统中,这表现为优先级倒置,其中高优先级任务被阻塞,因为它需要较低优先级任务拥有的资源。有一些方法可以缓解这些问题,包括优先级继承和上限协议。如果没有这些机制,竞争资源的任务将像 fcfs 中那样形成一个车队;与 fcfs 不同的是,不竞争资源的任务可以随意执行。
响应性、吞吐量和公平性的期望往往不一致,这也是我们没有真正解决调度问题的部分原因。