Linux文件系统锁示意图
字节偏移锁:file结构体是内核对于打开文件的结构体表示,可以在其上对指定的偏移量进行加锁,只锁定需要读写的部分,主要为了避免加锁整个文件。
文件加锁:直接对inode结构体进行加锁,因为inode结构体代表了一个文件,从而实现对文件的加锁。
page加锁:page是文件系统在内存中的表示结构,inode通过address_space来管理其对应的各个page,可以对指定page进行加锁,比如在进行磁盘I/O的时候。
缓冲区加锁:buffer是直接和文件系统磁盘中的块对应,在内存中被映射进page结构中,buffer_head中记录了其在磁盘中的各个属性,在某些情况下I/O可以以buffer为单位进行,所以需要对其进行加锁。