本文参考~http://hi.baidu.com/_kouu/item/4e9db87580328244ef1e53d0和http://blog.yufeng.info/archives/751两篇博客,主要是对两篇内容进行总结。
普通磁盘文件的读写流程:
1.VFS:用户下发read或者write操作,然后在VFS层调用f_op->read/f_op->write
2.高速缓存:用于将磁盘的内容缓存在内存中,加速文件的读写,实际上,read,write只跟缓存打交道,只有读的数据不在缓存中,则触发读盘操作,。cache中存储inode节点信息,每个inode都内嵌一个address_space结构,维护一颗radix树,用于磁盘高速缓存的内存页面就挂在这棵树上,inode被载入内存的时候,对应的磁盘高速缓存是空的(radix树上没有页面),随着文件的读写,磁盘上的数据被载入内存,相应的内存页被挂到radix树相应位置。如果文件打开时,指定了O_DIRECT选项选项,则表示绕开磁盘高速缓存