如果我没记错的话,缓冲区是作为 CPU 和设备之间的中间件使用的,以使 CPU 无需等待设备 IO 完成,从而让 CPU 去做其他事情
由于 CPU 正在做其他事情,它似乎无法管理缓冲区。当缓冲区已满时,由谁来管理将数据从缓冲区传输到设备,或者当缓冲区为空时,由谁来管理从设备获取数据?
答案1
直接内存访问 (DMA)是您拼图中缺失的一块。DMA 允许 I/O 设备控制器直接读取和写入内存,无需 CPU 干预。
即使没有 DMA,仍可使用缓冲区,因为数据在检索时需要驻留在某个地方,并且可能希望仅在 I/O 成功完成时才将数据提供给请求程序。