答案1
好的,似乎应该选择 (c) 而不是 (d),仅仅是因为 (d) 不真实。
当 P1 过了一段时间后进入读取阶段时,我们谈论的是 IO,因此 CPU 很忙。它必须先处理 IO 请求并获取该数据,因此在它执行此操作时,调度程序会运行另一个进程,这样我们就不会浪费时间 - 然而这与上下文切换无关。
这是我的想法。这看起来合乎逻辑吗?
答案2
通过在等待磁盘操作完成时不安排 P2 运行,可以避免一次上下文切换(从 P2 切换到 P1)。据推测,如果您这样做,那么 P1 会稍快地恢复执行,并且 TLB 会更热。
您无法避免所有上下文切换,因为系统调用涉及上下文切换(用户到内核),设备完成中断后 P1 的恢复也是如此。但您可以避免用户上下文的两次切换(尽管只有一次切换会影响 P1 的时间)。
因此,如果你衡量性能的唯一标准是 P1 的执行速度,那么你可以将 CPU 专用于 P1 并不允许任何其他进程运行,从而节省一点时间。但我们知道磁盘活动比上下文切换慢,问题在于全面的性能,而不仅仅是 P1。因此,安排 P2 在等待期间运行是有意义的,即使这会在稍后恢复 P1 时引入一点延迟。