Linux对于文件系统的支持层解析
- Linux中使用文件系统都分几个部分
- 有关于Linux中高速缓冲区的管理程序 分页机制 每页4KB 每个程序不是所有页都读入高速缓冲区,如果执行中出现没有加入高速缓冲区的页,会触发缺页中断
- 文件系统的底层通用函数(对于硬盘的读写 分配 释放等,对于目录的几点管理 inode 内存与磁盘的映射)
- 对于文件数据进行读写操作模块(VFS:虚拟文件系统 硬件驱动和文件系统的关系 pipe 块设备的读取)
- 文件系统与其他程序的接口实现(fopen 关闭 创建等使用文件的调用方式)
-
文件系统的基本概念
磁盘中要有目录的映射,把磁盘分成盘片,每一个盘片都有一个文件系统的子系统(章节目录)一个盘片一般是8196字节
一个盘片的结构
引导块:用来引导设备,引导块可以为空,但一定要有,为了保持结构一致
超级块:是该文件子系统的描述符(记录该盘片的 逻辑块位图的地址 和 i节点位图的地址 通过设备号可以获取超级块,然后在获取逻辑块位图和 i节点位图,最后获取逻辑块和i节点)
逻辑块位图:其每一位对应一个逻辑块的使用情况,1表示对应逻辑块被使用
i节点位图:其每一位对应一个i节点的使用情况,1表示对应inode节点被使用
inode节点:有很多块,文件与磁盘的桥接 ,文件的属性描述(文件名片)
逻辑块数据区:有很多块,存储数据单元
-
i_mode 文件属性说明
crwxrwxrwx:
第一个c:表示文件类型:
-:普通文件
d:目录
s:符号链接
p:pipe管道
c:字符设备
b:块设备
l:链接文件
第一个rxw:当前用户的权限
第二个rxw:用户组的权限
第三个rxw:他人的权限
-
uid:文件的所属用户ID
-
gid:文件的所属组ID
-
i_size:文件大小
-
i_mtime:文件的修改时间
-
i_zone:该文件映射在逻辑块的数组,里边存储逻辑块号,前7个叫直接块号,一个单元存一个逻辑块号
izone[8]一次间接块号,如果占用的逻辑块较多 大于7 小于512+7 则占用一次间接块号
izone[9]二次间接块号,如果占用的逻辑块太多 大于512+7 小雨512*512+7 则启动二次间接逻辑块