Chapter6 文件系统 - abowloflrf/os-note GitHub Wiki
文件的结构与存取方式
逻辑结构
- 字节流文件
- 记录文件
物理结构
连续结构
文件数据存放在若干连续的物理块中
优点
- 简单,只用记住首块地址与文件长度
- 支持顺序存取与随机存取
- 顺序存取速度块
- 所需磁盘寻道时间最少
缺点
- 不利于文件的增长,若预留空间则浪费,因为预先不知道文件会多大否则需要移动并重新分配
- 不利于文件内容的插入与删除
- 存在外部碎片问题
链式结构
一个文件数据存放在若干不连续的物理块中,各块之间通过指针连接,每个物理块指向下一个物理块
优点
- 提高磁盘利用率
- 不存在外部碎片问题
- 有利于文件的插入与删除
- 有利于文件的动态扩充
缺点
- 随机存取相当缓慢
- 需要更多寻到时间
- 链接指针占用一定的孔家
文件分配表
磁盘的每个分区包含一个FAT,分区中的每个盘块在其中占用一项,指出文件中下一块的块号
索引结构
一个文件数据存放在若干不连续的物理块中,系统为每个文件建立一个专用的数据表索引表,存放着逻辑块号与物理块号的对应关系
优点
- 既能顺序存取,又能随机存取
- 能满足文件动态增长,插入,删除的要求
- 能充分利用外存空间
缺点
- 索引表本身的开销
文件存取方式
- 顺序存取:对文件中的数据按逻辑顺序进行读写
- 随机存取:对文件中的数据按照任意顺序进行读写
- 按键key存取:DBMS
文件目录
基本概念
- 文件控制块FCB
存放为了管理文件所需要的相关信息(文件属性),也称为文件说明或文件目录项,文件控制块是文件存在的标志
内容:基本信息文件名,地址,长度,结构,类型,存取控制信息文件owner,权限,口令,使用信息共享计数,创建修改日期
- 文件目录
所有FCB组织在一起构成文件目录,即文件控制块的有序集合
- 目录项
构成文件目录的项目即FCB
- 目录文件
为了实现对文件目录的管理,将文件目录以文件的形式保存在外存。这个文件就是目录文件
查目录是文件系统中最频繁的操作,因此合理组织目录很重要
目录结构
- 单级目录结构
- 二级目录结构
- 多级目录结构
文件目录检索
访问文件时需要两步,1.目录检索(根据文件名查目录确定文件的起始地址) 2.文件寻址(确定所要访问文件内容的起始地址)
文件目录的实现
-
文件的说明信息FCB都放在目录项中
-
文件说明分成两部分符号目录项与基本目录项
空闲存储空间的管理
空闲区表
将所有空闲记录在一张表中
空闲块链
将所有空闲块链成一个链,适合离散分配
位图
用一串二进制位反映磁盘空间的分配情况,每个物理块对应一位,已分配为1,否则0
文件的使用,共享,保护
使用
open->r/w->close
- open 把文件信息FCB放入内存,便于以后快速访问
根据指定文件路径名,查目录,找到文件目录项,检查权限,将文件信息装入内存,分配一个文件id,后面通过id对文件操作
- close
释放文件说明信息所占用的内存空间,把文件缓冲区中已修改的内容写回文件
共享
一个文件被多个用户或进程使用
目的:节省时间储存空间减少工作量;进程通过文件共享交换信息
普通文件共享方法
- 路径名访问共享文件
实现简单,不需要建立另外的目录项
- 链接法
在相应的目录之间建立连接,即一个目录项中含有指向另一个目录项的指针
- 基本文件目录BFD
基于I节点的文件共享方法
- 硬链接
- 软链接
存取控制
- 存取控制矩阵
读r/写w/执行x/不能执行任何操作-
- 存取控制表ACL
- 存取权限表CL