概述
- 运行在用户态的应用程序需要经常访问磁盘数据,进行读写操作,由于磁盘(HDD)相对较慢,没有任何缓存的情况下,每次应用读写操作时延页非常慢;在内核设计之初,添加了缓存设计,将磁盘数据保存在RAM中,后续的读写操作转换为在RAM中的操作,从而加快应用读写操作的速度。
- 页高速缓存(
Page Cache
)的用途是加速访问文件数据,给定inode索引节点和文件的页面的偏移量,快速的在内存中找到文件页的内容。这个Page Cache
是存在于VFS
和实际文件系统之间。如果应用指定了O_DIRECT
方式访问文件,则直接绕开Page Cache
直接访问块设备层。Page Cache
中缓存的Page
大小为4K。Page Cache
高速缓存使用的是物理页帧,以页为单位将文件内容缓存,逻辑文件(struct file
)中每一个页可以划分为块单位,将每个块映射到磁盘的盘块,因此一个文件的页可以和多个Buffer Cache
中块缓存关联,每个块缓存和磁盘的盘块进行关联。 - 块缓存中缓存的单个块大小是以磁盘扇区大小,默认是512个字节。无论应用程序读取多少个字节,在最终访问磁盘的时候,都必须以扇区大小(512个字节)读取;对应的块缓存中缓存块大小页是扇区的大小。