66

我正在学习操作系统,但有一个小概念我无法掌握。假设进程 1 正在 CPU 上运行,然后它发出 I/O 请求以从磁盘读取。为提高效率,CPU 在处理此请求时开始执行进程 2。这一切都说得通,但 I/O 不需要使用 CPU 吗?

在此处输入图像描述

我的问题:为什么不需要 CPU 来服务进程 1 的请求?

4

2 回答 2

126

这将有助于理解 I/O 在计算机体系结构中的 3 个重要方面的作用:中断、DMA 和硬件控制器。

当 CPU 向硬盘发出 I/O 请求时,硬盘有自己的专用芯片,称为设备(或硬件)控制器,专门用于处理来自 CPU 的命令,例如从磁盘读取。最初这些是为 CPU 执行特定操作的简单芯片,但现代硬件控制器基本上是它们自己的带有固件和所有东西的微处理器,因此它们能够在没有主 CPU 帮助的情况下进行非常复杂的操作。当硬盘驱动器的控制器忙于执行请求时,主 CPU 可以自由地做它想做的任何事情,例如在您的示例中执行进程 2。控制器能够使用所谓的直接内存访问 (DMA) 控制器直接读写系统 RAM,

当硬盘驱动器完成请求并且相关数据已通过 DMA 加载到 RAM 中时,它会发出中断请求,通知 CPU 数据已加载到 RAM 中。此时 CPU 可以将控制权转移回进程 1。因此,CPU 不需要对所有涉及 I/O 的任务进行微观管理。曾经是这种情况,但发明了这些技巧(中断、DMA、特殊控制器)是为了提高 CPU 性能并提高效率。

于 2012-11-28T08:16:36.343 回答
-7

cpu是用来发起每一个io请求,然后在准备好的时候接受……不是cpu不参与io操作。

例如,将 2gb 文件从 c 驱动器复制到 d 驱动器并打开任务管理器..在性能选项卡中,您将看到磁盘利用率以及 cpu 使用情况。

证明我的观点。

阿山

于 2016-05-01T07:26:15.083 回答