前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UNIX 文件系统结构 -- UFS

UNIX 文件系统结构 -- UFS

作者头像
用户3147702
发布2022-06-27 15:26:24
8010
发布2022-06-27 15:26:24
举报
文章被收录于专栏:小脑斧科技博客

1. 图示

2. 磁盘存储

如图所示,系统由 MBR(主引导区)引导启动,载入分区表,加载 VFS,文件系统开始进入工作状态。 每个分区维护自己的超级块,用于描述文件系统类型等的关键参数。 空闲空间表即指向空闲块的链表或指针数组。 i 节点表中的每个 i 节点对应一个文件,指向若干数据块,文件即由各个数据块连接而成,i 节点包含了文件属性、物理地址等信息(stat 数据结构除 i 节点编号和文件名的全部信息) 相同的硬链接指向同一个 i 节点,而符号链接只是数据块包含指向信息的 S_IFLINK 类型的文件,图中展示了一个硬链接的例子。 目录也是文件,但指向一个目录块的 i 节点至少要被两个目录块指向(即一个目录至少包含两个目录,分别是 . 与 ..)

3. 内存存储

当进程使用某个文件时,文件对应的 i 节点被载入内存,组成一个 v 节点表,因此,每个载入内存的文件都对应一个 v 节点表。 图中展示了由 fork 产生子进程后的情况,由于子进程复制父进程的地址空间,所以复制了完整的文件指针列表,所以与父进程指向了相同的文件表,但由于记录锁结构中保存的 pid 是父进程的 pid,所以记录锁不会被继承。 如果描述符被设置了 close-on-exec 标志,则在子进程执行 exec 函数后,所有继承得到的 fd 均将关闭,与之对应的所有记录锁均将被释放。 执行 dup 后,同一进程中的不同文件指针将指向相同文件表。 同一个进程打开文件两次,或两个不同的进程同时打开一个文件,则不同的两个文件表将指向同一个 v 节点表(即内存中同一文件)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小脑斧科技博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 图示
  • 2. 磁盘存储
  • 3. 内存存储
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档