UNIX 文件系统结构 -- UFS

2015-02-15 21:42:04   最后更新: 2020-07-01 19:52:33   访问数量:1688




 

如图所示,系统由 MBR(主引导区)引导启动,载入分区表,加载 VFS,文件系统开始进入工作状态

每个分区维护自己的超级块,用于描述文件系统类型等的关键参数

空闲空间表即指向空闲块的链表或指针数组

i 节点表中的每个 i 节点对应一个文件,指向若干数据块,文件即由各个数据块连接而成,i 节点包含了文件属性、物理地址等信息(stat 数据结构除 i 节点编号和文件名的全部信息)

相同的硬链接指向同一个 i 节点,而符号链接只是数据块包含指向信息的 S_IFLINK 类型的文件,图中展示了一个硬链接的例子

目录也是文件,但指向一个目录块的 i 节点至少要被两个目录块指向(即一个目录至少包含两个目录,分别是 . 与 ..)

当进程使用某个文件时,文件对应的 i 节点被载入内存,组成一个 v 节点表,因此,每个载入内存的文件都对应一个 v 节点表

图中展示了由 fork 产生子进程后的情况,由于子进程复制父进程的地址空间,所以复制了完整的文件指针列表,所以与父进程指向了相同的文件表,但由于记录锁结构中保存的 pid 是父进程的 pid,所以记录锁不会被继承

如果描述符被设置了 close-on-exec 标志,则在子进程执行 exec 函数后,所有继承得到的 fd 均将关闭,与之对应的所有记录锁均将被释放

执行 dup 后,同一进程中的不同文件指针将指向相同文件表

同一个进程打开文件两次,或两个不同的进程同时打开一个文件,则不同的两个文件表将指向同一个 v 节点表(即内存中同一文件)

 

欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,只有全部原创,只有干货没有鸡汤

 






技术帖      操作系统      os      龙潭书斋      file      文件系统      i节点      v节点      文件      技术分享      system      vfs      file system      i node      v nod     


京ICP备15018585号