缓冲和缓存是利用一部分系统物理内存,确保最重要的、最常使用的块设备数据在操作时可直接从主存获取,而无需从低速设备读取。内核为块设备提供了两种通用的缓存方案。、
1. 页缓存:针对以页为单位的所有操作,并考虑了特定体系结构上的页长度。基本上其他类型的文件访问也是基于内核中的这一技术实现的,所以也缓存实际上会负责块设备的大部分工作。
2. 块缓存:以块为操作单位。在进行I/O操作时,存取的是设备的各个块,而不是整个内存页。
在许多场合下,页缓存和块缓存是联合使用的。页的长度对所有文件系统都是相同的,基本上为4K,但是块长度则需要取决于特定的文件系统或其设置。
曾经,缓冲区是对块设备进行I/O操作的传统方式。但在现在这个领域中,缓冲区只用于支持规模很小的读取操作,在这种场合下高级方法可能显得比较笨重。所以在内核版本2.5开发期间引入了BIO,以替换缓冲区,用于块传输的标准数据结构。
块缓存的结构