存储映射
普通读写文件方式的缺点
使用文件IO的read、write来进行文件的普通读写时,函数经过层层的调用后,才能够最终操作到文件,比如我们可以读
效率低
(read函数)为例:
应用层 read(fd, buf, sizeof(buf)); //buf应用缓存
-------------------|------------------------------------------
OS层 |
xxx1_read(**, xxx1_buf, **); //xxx_buf1内存缓冲
xxx2_read(**,xxx2_buf, **); //xxx_buf2内存缓冲
xxxn_read(**,xxxn_buf, **); //xxx_bufn内核缓冲
--------------------|-----------------------------------------
文件
以上画的只是一个示意的过程,不是说这些函数就一定叫这样的名字,但是不管怎么说上图能够很好反映出。
在读写时中间会有很多的调用过程,数据需要在不同的缓存间倒腾,最终才能从文件到应用缓存,或者从应用缓存到文件,效率很低。
疑问:为什么中间经过一系列的折腾后效率会很低呢?
- cpu执行一堆函数,很耗费cpu资源,而且浪费时间。
- 中间一堆的缓存都是函数从内存开辟的,浪费内存资源,而且数据在各缓存间折腾时也很耗费时间
总之read、write这种普通读写文件的方式效率不高,那效率不高