传统硬件的堵塞如下,从内存中读取数据,然后写到磁盘,而CPU一直等到磁盘写完成,磁盘的写操作是慢的,这段时间CPU被堵塞不能发挥效率。
[img]http://dl2.iteye.com/upload/attachment/0105/9762/3800dc10-e987-31a8-a740-04ff97dc7978.png[/img]
使用非堵塞的DMA如下图:CPU只是发出写操作这样的指令,做一些初始化工作,DMA具体执行,从内存中读取数据,然后写到磁盘,当完成写后发出一个中断事件给CPU。这段时间CPU是空闲的,可以做别的事情。这个原理称为Zero.copy零拷贝。
[img]http://dl2.iteye.com/upload/attachment/0105/9760/16d9c65c-efd5-32da-87cc-c06b694d60d7.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0105/9762/3800dc10-e987-31a8-a740-04ff97dc7978.png[/img]
使用非堵塞的DMA如下图:CPU只是发出写操作这样的指令,做一些初始化工作,DMA具体执行,从内存中读取数据,然后写到磁盘,当完成写后发出一个中断事件给CPU。这段时间CPU是空闲的,可以做别的事情。这个原理称为Zero.copy零拷贝。
[img]http://dl2.iteye.com/upload/attachment/0105/9760/16d9c65c-efd5-32da-87cc-c06b694d60d7.png[/img]