在磁盘文件系统是怎么 用以内存为cache加速访问 并 处理内存与实际硬盘文件系统的差异
在文件系统这一块实现了 "高速缓存" 中的 文件系统相关部分
1. dentry 高速缓存 dentry cache
2. inode 高速缓存 inode cache
3. super_block 高速缓存
4. 页高速缓存 page cache
5. 缓冲区高速缓存 buffer cache
6. 块高速缓存 block cache
superblock结构体/inode 缓存/dcache缓存/buffer cache/block cache / page cache/swap
总体描述
在关机时, 文件系统只存在于硬盘上
在开机后, 文件系统被挂载, 存在于硬盘和内存中
硬盘中是原始的文件
内存中是硬盘的copy和解析
解析出了 super_block : 文件系统的信息
解析出了 inode : 该文件系统下,文件被支持的操作及文件的属性等
解析出了 dentry : 该文件系统下,各种文件的层次目录
copy出了 address_space : 该文件系统下, 某个文件的内容
一致性问题:
可以看出,一份内容(文件系统)有两份存在(硬盘和内存)
那么保证 硬盘和 内存中 文件系统的一致性 就很有必要.
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bb9d0b9039d637903ad0ebf1c08a7656.png)
分类描述
buffer_head
随着日渐倾向于使用基于也操作实现的通用文件存取方法,block cache 作为中暑系统缓存的重要性已经逐渐失去,主要的缓存任务由 page cache 来承担.
另外,基于 块 的 IO的标准数据结构,现在已经不是缓冲区,而是 struct bio
页高速缓存
struct address_space
缓冲区高速缓存 从 linux2.4起,并入 page cache