深入理解缓冲区(十七)

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,还需要封装一套屏蔽多操作系统的接口,供上层的数据缓冲区层调用,这里不再展开。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值