为什么不需要CPU来处理I / O请求?

时间:2012-11-28 02:52:56

标签: io operating-system

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

enter image description here

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

2 个答案:

答案 0 :(得分:58)

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

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

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

答案 1 :(得分:-6)

Cpu用于启动每个io请求,然后在准备就绪时接受它...不是cpu不参与io操作的情况。

将2gb文件从c盘复制到d盘并打开任务管理器..在性能选项卡中你将看到磁盘利用率和CPU使用率。

证明我的观点。

阿赫桑