深入理解缓冲区(十七)

来源:互联网 发布:红包分析软件 编辑:程序博客网 时间:2024/06/06 06:36

4.3.2        从buf与IO看改进---异步IO

深入理解缓冲区(十七) - 那海蓝蓝 - 那海蓝蓝的博客
 

与IO相关的操作,如上图所示。

其中,分为两种方式的读写:逻辑IO和物理IO。

逻辑IO,是数据据访问层向缓存区读写数据的操作,请求数据,称为逻辑读;写入数据,称为逻辑写。

物理IO,是数据缓冲区向外存读写数据的操作,请求数据,称为物理读;写入数据,称为物理写。

物理层的读写,是通过smgr接口进行的。调用序列如下:

ReadBufferàReadBuffer_commonàsmgrreadàmdread;

FlushBufferàsmgrwriteàmdwrite

而阅读md.c中的代码,可以发现,物理读写操作,都是通过调用C的库函数read和write等实现的(注意win32.h中,read和write实际是_read和_write)。

而read和write都是同步的方式进行读写的,所以,物理IO有可能有改进的方式,改法是,在smgr层,实现异步IO[1]操作。然后在数据缓冲区层改造buf的管理方式,使之能适应异步IO(AIO)。比如,加入预读方式等。

Linux的AIO 在 2.5 版本的内核中首次出现,现在已经是 2.6 版本的产品内核的一个标准特性了。

如果数据存储层的物理IO改写为异步IO,还需要封装一套屏蔽多操作系统的接口,供上层的数据缓冲区层调用,这里不再展开。


[1]http://www.ibm.com/developerworks/cn/linux/l-async/  linux下异步IO

http://blog.csdn.net/bokee/article/details/5268894      windows下异步IO


原创粉丝点击