什么是IO?
IO是输入输出的意思,也就是Input和Output,这不是重点,重点是IO是相对谁,在我们编写代码的时候也有I/O的概念。以Java为例,InputStream一般都伴随read方法,OutputStream一般对应write方法,也就是说,从哪读,写到哪去?所有的IO都是相对于内存,严格来说是内存的缓冲区。所有的程序都需要加载到内存中才能使用,而普通程序(除操作系统外)都无法直接访问硬件(外设),所有的 外设也没法直接访问用户空间中的用户程序,对于一个普通程序的一次普通IO来说,所有的数据都是先加载到内核空间的缓冲区,然后再被copy到用户空间的缓冲区,我们去read这个缓冲区。
IO接口:IO设备的代言人
大部分的输入输出设备,都有两个组成部分。第一个是它的接口,第二个才是实际的 I/O 设备。我们的硬件设备并不是直接接入到总线上和 CPU 通信的,而是通过接口,用接口连接到总线上,再通过总线和 CPU 通信。
而IO接口标识了设备状态,设立了缓冲区,标识了设备ID,完成了地址转换,甚至可以分析指令。也就是说真实的IO设备根本不会和总线直接交互。

CPU 是如何控制 I/O 设备的?
CPU不会直接和I/O设备交互,所有的操作都要通过接口,那么这就牵扯出CPU是如何控制接口的?
程序查询方式:由CPU通过程序不断查询I/O设备是

本文介绍了计算机IO的基本概念和控制方式,包括程序查询方式和中断方式。接着深入探讨了直接存储器存取(DMA)技术,阐述了DMA如何解放CPU并提高数据传输效率。此外,还详细讲解了基于DMA的零拷贝机制,并通过Kafka的例子说明其在减少数据复制过程中的应用,揭示了Kafka高速性能的秘密。
最低0.47元/天 解锁文章
9万+

被折叠的 条评论
为什么被折叠?



