文件系统-高速缓冲区:
首先我们为什么需要高速缓冲区而不是直接访问块设备中的数据。这是因为,IO设备和内存之间的读写速度不匹配而且有一点数据需要写入或者读出磁盘就访问磁盘,磁盘很快就会损坏,而高速缓冲区就起了一个中间过程的作用,把数据存在高速缓冲区中,需要读取磁盘上的数据时,尝试匹配高速缓冲区中的数据,匹配成功了,那就直接从高速缓冲区中取数据,然后内核再来操作,如果要存入数据,也是先经过缓冲区,再存入磁盘。这样就避免了每次都对IO设备进行操作。
高速缓冲区在整个物理内存中的位置处于内核区和主内存区之间。这里引用《linux0.11代码完全注释》中的图。
在高速缓冲区内部,分成了两个部分,一个是缓冲头结构,另一个是缓冲块。每个缓冲块的大小与块设备上的磁盘逻辑块的大小相同,而缓冲头结构用于连接起缓冲块,以及设置一些属性。结构如图:
那么内核要使用缓冲块时,是怎么和物理设备对应起来的呢?就比如向某个设备写了一些数据,存储在缓冲块中,这个缓冲块怎么才能把数据写入磁盘中。答案是在缓冲头结构中存储了块设备号和缓冲数据的逻辑块号,它们一起唯一确认