- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习操作系统,但有一个小概念我无法理解。假设进程 1 正在 CPU 上运行,然后它发出 I/O 请求以从磁盘读取数据。为了提高效率,CPU 在处理该请求时开始执行进程 2。这一切都有意义,但是 I/O 不需要使用 CPU 吗?
我的问题:为什么不需要 CPU 来处理进程 1 的请求?
最佳答案
这将有助于理解 I/O 在计算机体系结构中的 3 个重要方面的作用:中断、DMA 和硬件 Controller 。
当CPU向硬盘发出I/O请求时,硬盘有自己的专用芯片,称为设备(或硬件) Controller ,专门用于处理来自CPU的命令,例如从磁盘读取数据。最初这些是为 CPU 执行特定操作的简单芯片,但现代硬件 Controller 基本上是它们自己的微处理器,带有固件和所有东西,因此它们能够在没有主 CPU 帮助的情况下执行非常复杂的操作。当硬盘驱动器的 Controller 忙于执行请求时,主 CPU 可以自由地执行它希望执行的任何操作,例如执行示例中的进程 2。该 Controller 能够使用所谓的直接内存访问 (DMA) Controller 直接对系统 RAM 进行读写操作,DMA Controller 是一种特殊单元,可将数据从硬件 Controller 传输到主 RAM,而无需 CPU 执行任何操作。
当硬盘完成请求并且相关数据已通过DMA加载到RAM中时,它会发出中断请求,通知CPU数据已加载到RAM中。此时,CPU 可以将控制权转移回进程 1。因此,CPU 不需要对所有与 I/O 相关的任务进行微观管理。曾经是这种情况,但发明这些技巧(中断、DMA、特殊 Controller )是为了提高 CPU 性能并提高效率。
关于io - 为什么不需要 CPU 来处理 I/O 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13596997/
我是一名优秀的程序员,十分优秀!