前言

这篇文章将会介绍mmap, 以及mmap在DBMS中的应用. 包括mmap的优缺点分析, mmap与其他一些IO方式的对比.

mmap是什么?

mmap与read, write和直接IO等IO的对比

mmap除了可以减少read,write等系统调用以外,还可以减少内存的拷贝次数,比如在read调用时,一个完整的流程是操作系统读磁盘文件到页缓存,再从页缓存将数据拷贝到read传递的buffer里,而如果使用mmap之后,操作系统只需要将磁盘读到页缓存,然后用户就可以直接通过指针的方式操作mmap映射的内存,减少了从内核态到用户态的数据拷贝。

mmap的优点

相对read, write等减少系统调用

避免一次在内核缓存空间到用户空间的数据拷贝

受操作系统的内核缓冲区管理, 方便

mmap的问题(缺点)

mmap的简单在DBMS中会带来一些问题, 而要解决这些问题, DBMS需要做很多工作, 以致于影响性能, 以及带来复杂性, 还不如直接IO的设计.

除了mmap, 其他的选择