文件系统direct io 和buffer io
来源:互联网 发布:家具图纸设计软件 编辑:程序博客网 时间:2024/05/29 18:45
文件系统io分为direct io和buffer io,其中buffer io也叫normal io.
buffer io 对写IO而言有write back和write through,write back先写入到内存中,一段时间后,由内核线程写入到磁盘。由于内存比磁盘快很多,所以write back的速度很快。write back有一个缺点,就是当你掉电时,可能会丢失数据。这时候write through 就粉墨登场了, write through和write back相比,在写入内存的同时也写入到磁盘中,那为什么要写入到内存中呢,不是多此一举吗,这可能为了以后读的更快。不过我没有看到有文件系统实现 write through的,对文件系统来说,buffer io的写就是write back模式。
buffer io 对读io而言,首先查找file对于的 page cache,如果不存在,则从磁盘读入,然后再写入page cache。
direct io 不会和内存打交道,而是直接写入到存储设备中,由于存储设备的管理单元是块,所以direct io 的offset 和length必须和块大小对齐,一般物理设备的块大小是512,所以offset和length必须能被512整除。
我刚开始接触direct io时,对内存的buffer地址也要块或512对齐很难理解,后来经过看代码后,理解了为什么要这么做了,我们知道linux内核的内存是以页为单位的。direct io在内核里直接获取用户进程的虚拟地址对应的物理地址。然后我们知道存储设备都是以块为单位读取的。假如说内存的块大小和512不对齐,而是以4096-512-4 这样的内存地址给内核,那内核怎么办呢,读取512一个字节后,在这个页里已经放不下了,得再申请内存了,这有悖于 direct io 的初衷。
- 文件系统direct io 和buffer io
- direct io/buffer io
- Direct IO和Buffered IO简单分析
- 研究-Buffered IO和Direct IO
- Direct IO
- direct io
- direct-io
- Direct IO
- 文件系统IO---page cache与buffer cache
- Direct IO in linux
- 关于direct io
- 关于direct io
- 关于direct io
- 关于Direct IO
- linux direct io
- direct io优化
- Hadoop IO总结和文件系统
- nio.FileChannel 、io.Stream 和 io.buffer速度的比较
- hibernate tips3
- 欧几里德算法
- MFC中的几种播放声音的方法
- 引用
- 基于ARM的nucleus plus的执行
- 文件系统direct io 和buffer io
- service生命周期
- Windows下用Eclipse搭建C/C++开发环境
- 10进制转换为2进制和10进制转换为16进制的C实现(用到栈)
- AVRStudio5 用的是VS2010的shell而且默认就已经安装了VAssistX
- 生成每三位逗号分割的,像财务数据那样数字字符串,及相反的解析一个带分割符的串到数值
- C#基础知识整理:基础知识(8) 接口
- 关于PC下安装MAC苹果系统!
- C++面向对象的总结: