Linux的IO机制

1、直接IO技术

  这个技术就是在用户空间和物理磁盘之间直接操作数据(完全不经过内核空间页缓冲);也就是说应用程序自己来管理数据的缓冲,不需要经过内核空间页缓冲来管理。最典型的应用就是数据库管理系统。当然,平常我们使用的都是缓冲IO。

2、零拷贝技术,sendfile技术(当中用到了mmap技术)(socket缓冲区聚合技术)

3、mmap技术

mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。

4、异步IO技术(信号通知或者回调函数实现)

  1、glibc实现的IO(线程池+阻塞IO实现,不能称之为真正的异步)

  2、Linux内核实现的IO(只支持直接IO,不支持缓冲IO)(对于写文件的情况意义不大)(当中也用到了mmap技术)

5、异步阻塞IO,也就是IO多路复用(select,poll,epoll模型)

参考文献

Linux直接IO:https://www.ibm.com/developerworks/cn/linux/l-cn-directio/

mmap技术和sendfile技术:https://blog.csdn.net/weixin_37782390/article/details/103833306

Direct IO技术:https://www.dazhuanlan.com/2019/11/05/5dc0f35b9a621/

         https://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy2/index.html

Linux IO技术对比:https://blog.csdn.net/xiaoduanayu/article/details/83715391

原文地址:https://www.cnblogs.com/erdanyang/p/11338171.html