如果当前正在执行的进程面临 I/O 突发,那么下一个可用进程是否会获得 CPU 突发,或者处理器是否会等到第一个进程的 I/O 突发完成后再继续执行第一个进程。
这是否会受到算法是抢占式还是非抢占式的影响?
谢谢!
答案1
简而言之,是的。当一个 CPU 密集型任务变成 I/O 受限时,操作系统将重新安排该任务,直到它准备好执行更多的 CPU 工作。这意味着其他进程(有工作需要 CPU 来完成)将获得 CPU 时间。
长话短说,这是我第一次遇到这些特定术语。我只能找到几页提到它,它似乎是一种优化策略,而不是物理 CPU 或操作系统功能。它不是操作系统或 CPU 中可以在进程之间共享的“突发阶段”,而只是当进程在一个领域或另一个领域有工作要做时“突发”。通过优化您的工作流程以多做一件事,并为另一件事储存工作,您可以使这些“突发”工作更有效。
因此,操作系统是抢占式还是非抢占式并不重要。它只知道进程卡在等待中或准备就绪,并会相应地对其进行调度。如果某个进程正在进行计算并突然尝试读取文件,那么它将停止并在数据可用时重新调度。
这些“突发”之所以重要,唯一的原因就是要确保您有效地使用操作系统安排的时间片。如果您的 CPU 密集型任务中穿插了大量 I/O,那么您将停滞不前,并可能在等待这些 I/O 操作时浪费一部分安排时间。如果您将 I/O 分成“突发”,那么您的进程将更好地利用其在 CPU 上的时间并获得完整的时间片。