文件系统知识复习
文件系统结构
连续结构
![](/2023/08/28/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%9F%A5%E8%AF%86%E5%A4%8D%E4%B9%A0/pic1.png)
链接结构
- 链表分配
- 内存表分配 文件的起始块号从文件目录(FCB)中得到
索引结构
![](/2023/08/28/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%9F%A5%E8%AF%86%E5%A4%8D%E4%B9%A0/pic4.png)
多级索引:块大小4KB,索引指针大小为4B,则二级索引支持最大文件为1K * 1K * 4KB
![](/2023/08/28/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%9F%A5%E8%AF%86%E5%A4%8D%E4%B9%A0/pic5.png)
文件权限
第一个字符代表这个文件时目录、文件或链接文件等
![](/2023/08/28/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%9F%A5%E8%AF%86%E5%A4%8D%E4%B9%A0/pic6.jpg)
Linux命令实现
Linux手册页节
- Section 1:用户命令(User Commands):包括常见的用户可执行命令,如ls、mkdir、grep等。
- Section 2:系统调用(System Calls):包括操作系统提供的底层系统调用接口,如fork、open、read等。
- Section 3:C库函数(Library Functions):包括C语言库函数,如printf、malloc、strlen等。
- Section 4:设备和特殊文件(Devices and Special Files):包括设备驱动程序和特殊文件的手册页。
- Section 5:文件格式(File Formats):包括常见文件格式的描述,如passwd文件、man页格式等。
- Section 6:游戏和演示(Games and Demos):包括一些游戏和演示程序的手册页。
- Section 7:其他(Miscellaneous):包括一些其他类型的手册页,如宏包、协议等。
硬链接与符号链接
- 符号链接:如果A是B的软链接,则A对应的目录项中的inode节点号与B对应的目录项中的inode节点号不相同,A的inode指向的数据块存的是B的路径
- 硬链接:而如果A是B的硬链接,则A的inode与B的inode一样
- 不允许硬链接到目录的原因:允许目录的硬链接可能会打破文件系统目录的有向无环图结构,可能创建目录循环,这可能会导致fsck以及其他一些遍历文件树的软件出错。
- inode的链接数的增减时机:
- 创建文件
- 创建硬链接
- 创建符号链接
- 删除文件或硬链接
- 文件夹一创建,其链接数便为2(根目录除外),原因:新建文件夹的父文件夹有一个目录项指向此文件夹,其次,新建文件夹的目录中有一个指向自身的目录项
- 普通文件一创建,链接数便为1
参考
文件系统知识复习
http://bugeater.space/2023/08/28/文件系统知识复习/