文件管理

文件的逻辑结构

mindmap
  root((文件的逻辑结构))
    无结构文件--流式文件
    有结构文件--定长/变长
      顺序文件
      索引文件
      索引顺序文件
      直接文件-散列文件
mindmap
  root((文件的逻辑结构))
    无结构文件--流式文件
    有结构文件--定长/变长
      顺序文件
      索引文件
      索引顺序文件
      直接文件-散列文件
mindmap
  root((文件的逻辑结构))
    无结构文件--流式文件
    有结构文件--定长/变长
      顺序文件
      索引文件
      索引顺序文件
      直接文件-散列文件

文件控制块FCB

文件控制块FCB

一个文件对应一个FCB,其中包括文件的基本信息(文件位置,逻辑/物理结构),存取控制信息,使用信息等

FCB的集合构成目录文件

理解索引节点

传统FCB目录占用大量空间,查找也不方便,为此Unix等系统采用文件名与FCB分离,即将某个FCB独立为索引节点(inode节点)

而目录精简结构为<文件名,inode编号>

索引节点有两种形态:磁盘上为[磁盘索引节点]调入内存后–>添加额外信息转化为[内存索引节点]


文件的物理结构

mindmap
  root((文件的物理结构))
    连续分配
    链接分配
      隐式链接
      显式链接-通过FAT分配表
    索引分配
      单级索引
      多级索引
      混合索引
mindmap
  root((文件的物理结构))
    连续分配
    链接分配
      隐式链接
      显式链接-通过FAT分配表
    索引分配
      单级索引
      多级索引
      混合索引
mindmap
  root((文件的物理结构))
    连续分配
    链接分配
      隐式链接
      显式链接-通过FAT分配表
    索引分配
      单级索引
      多级索引
      混合索引

混合索引

inode采用混合索引

文件管理-i41pmg1


创建文件

  • 阶段 01:检验
    检查文件名,权限
  • 阶段 02:分配索引节点
    从空闲的inode区域中分配一个空闲块,初始化元数据,标记为已占用
  • 阶段 03:分配磁盘块
    分配后将地址记录在inode中
  • 阶段 04:新建目录项
    <文件名,索引节点编号>
  • 阶段 05:更新文件系统数据
    空闲inode表数据,空闲磁盘数据,目录大小,修改时间等
  • 阶段 06:打开并返回文件描述符
    可选

删除文件

  • 阶段 01:获取inode
  • 阶段 02:检查使用状态和硬链接计数
  • 阶段 03:移除目录中的目录项
  • 阶段 04:释放inode
  • 阶段 05:释放磁盘块
  • 阶段 06:释放内存资源,更新元数据

文件的打开与关闭

现代操作系统多采用两级打开文件表:

系统打开文件表:全局共享,文件属性,位置,大小,打开计数

进程打开文件表:每个进程独有,每一项都指向系统打开文件表的某一项

打开过程的最后一步将进程打开文件表某项的索引号作为文件描述符返回给用户

文件名不是打开文件表的组成部分

一旦系统通过文件名完成对FCB的定位,后续便不再使用文件名,而是文件描述符

文件共享

两种方式

硬链接基于索引节点

软连接基于Link文件,Link文件里记录了某文件的路径


相关内容