CPU发起,应用程序与磁盘之间的 I/O 操作都是通过 CPU 的中断完成的,如下图
用户发起读取数据请求到CPU....CPU把请求转发到磁盘控制器中
磁盘控制器读取数据到磁盘缓冲区
磁盘寄存器发送中断信号给cpu
CPU读取磁盘缓冲区的数据到寄存器中
CPU再把寄存器中的数据读取到内存中
最后用户进程再把内存的数据读取...,然后系统调用返回
我们再看一张图如下
从这种图中,我清晰可以看到由于CPU把数据从磁盘读取到寄存器中,然后放入到内存,中间CPU是不能干其他事情的,为了解放cpu的占用,所以出现了DMA技术...DMA技术
DMA 的全称叫直接内存存取(Direct Memory Access),是一种允许外围设备(硬件子系统)直接访问系统主内存的机制,之后数据的拷贝都有DMA进行处理,如下图
CPU把IO请求发送给...CPU已经读取完了
CPU此时再把内核缓冲区拷贝到用户缓冲区中
最后系统调用返回
传统的IO底层原理
比如我们正常从磁盘中读取一张图片,返回给前端,首先会调用read进行读取,然后在write进行输出