一、DMA 一个协处理器
DMA 本质上就是在主板上再增加一块独立的芯片,在进行内存和I/O设备的数据传输的时候,不再是CPU在控制数据的传输
当I/O操作很耗时的时候 DMA就起上作用了 当有大量数据读的时候 可以用DMA 可以等到数据到齐了再给CPU
主设备/从设备
能主动发起数据传输的是主设备 否则是从设备
比如 CPU是主设备和硬盘从设备 CPU可以主动的从硬盘里写数据 也可以从硬盘里读数据 硬盘只是向CPU发送控制信号。实际上是CPU把数据拉走的 而不是I/O设备给CPU的
DMA 既是一个主设备 又是一个从设备 数据传输流程
当CPU有需求的时候 告诉DMA DMA去对接I/O设备
二、kafka
硬盘中的数据传输到网络
- 从硬盘上读到操作系统内核的缓冲区 DMA 完成
- 内核缓冲区里的数据 复制到应用分配的内存里 CPU完成
- 从应用内存里写到操作系统的Socket的缓冲区 CPU完成
- 从Socket的缓冲区里 写到网卡的缓冲区 DMA完成
上述的4个过程如果可以减少到2次 速度就快了 kafka就是干的这件事 只进行DMA做的两件事