十六、文件管理(二)
10.5 文件共享
- 提供文件共享的方法有两种:
- 各用户通过唯一的共享文件路径名访问共享文件
- 访问速度慢,适用于不经常访问的文件共享
- 利用多个目录中的不同文件名来描述同一共享文件(即文件别名)
- 访问速度快,但会影响文件系统的树状结构,适用于经常访问的文件共享,同时存在一定的限制
- 各用户通过唯一的共享文件路径名访问共享文件
- 文件别名的实现方法
- 基于索引结点,也称硬链接
- 基于符号链接,也称软链接
10.5.1 硬链接
- 基于改进的多级目录结构,将文件内容分为两部分:文件名和索引结点
- 前者包括文件名和索引结点编号(符号目录项)
- 后者包括文件的其他内容(包括属主、访问权限、磁盘地址等)(基本目录项)
- 通过将多个文件名链接(link)到同一个索引结点,可建立同一个文件的多个彼此平等的别名
- 别名的数目,被记录在索引结点的链接计数中,若其减到0则文件删除
![image]()
- UNIX举例:(类Unix命令ln=link,生成文件【硬】链接)
![image]()
则该文件还存在,文件名为target - 存在问题
- 记账或配额问题:设B、C共享文件file,C是文件主,若C删除了file而B不删除,则file仍存在,且仍然是C为file记账,占的也是C的配额
10.5.2 符号链接
- 建立一个类型为Link的特殊文件,其内容是到另一个目录或文件路径的链接
- 建立符号链接文件,并不影响原文件,实际上它们各是一个文件
- 可以建立任意的别名关系,甚至原文件是在其他计算机
- UNIX举例:(ln -s:生成文件软链接,s=soft)
- 若a是文件,则文件a不存在,b能被控制但无法访问
![image]()
- 若a是目录,则当前目录是“/user”而不是“/tmp”
![image]()
- 缺点:空间开销更大
- 如果设置不当,上下级目录关系可能会形成环状
10.5.3 文件的访问控制
- 两大要点
- 文件的访问权限
- 文件的并发访问控制
- 设置文件访问权限的目的是为了在多个用户间提供有效的文件共享机制,同时对文件进行一定的安全性保护
- 实现:两级控制
- 用户验证:当用户登录时,检验其身份
- 存取控制:审查用户的权限、本次操作的合法性
- 可能授予的访问权限
- 无(none)————不知道文件的存在
- 知道(knowledge)————知道文件的存在及其属主
- 执行(execution)————可加载并执行但不能复制
- 读(read)————查看/复制内容
- 追加(append)————(在文件尾部)添加数据
- 更新(update)————修改/删除/添加数据
- 改变保护(change protection)————(文件所有者)修改授予其他用户的访问权限
- 删除(deletion)————从文件系统中去掉
- 文件属主(Owner)具有上述所有权限,并可以将不同的访问权限授予不用的用户类
- 特定用户(Specific user)
- 用户组(Group of users)
- 全部(All)(公共文件)
- 访问权限和用户类的组合
- 访问矩阵(存取控制矩阵):矩阵的一维(列)是每个目录和文件,另一维(行)是用户范围,每个元素是运行的访问方式
- 访问策略:规定每种文件访问方式所允许或禁止的用户范围
- 可以将文件访问方式推广到其他操作如用户管理、备份、网络访问等
10.5.4 文件的并发访问控制
- 提供多个进程安全有效并发访问同一文件的机制
- 访问文件前,必须先打开文件:
- 如果文件的目录内容不在内存,则将其从外存读入,否则仍使用已在内存的目录内容
- 多个进程访问同一个文件都使用内存中同一个目录内容,保证了文件系统的一致性
- 文件锁定:协调对文件指定区域的互斥访问
- 利用进程间通信,协调对文件的合作性访问
10.6 记录组块
- 文件的逻辑单位是记录(record),外存的I/O操作单位是块(block),为了进行I/O操作,需要把文件的记录组织成块
- 块大小是固定还是可变?
- 多数OS采用固定,以简化I/O操作、内存缓冲分配和外存块组织
- 块应该多大?(相对于记录)
- 块越大,一次I/O操作的存取的记录数也越多,有利于文件的顺序处理或搜索,但若随机访问文件记录,则可能造成多余的记录操作
- 块越大,要求的内存缓存越大,缓冲管理越难
10.6.1 记录组块的方法
- 固定组块:记录长度固定,每个块中存放的记录数目也固定————常用但有内部碎片
- 可变长度跨越式组块:记录长度可变,一个记录允许存放在不同块中————效率高但是难实现
- 可变长度非跨越式组块:记录长度可变,一个记录只能存放在一个块中————浪费多
![image]()
10.7 辅存管理
- 把空间分配给文件————文件分配
- 从文件在物理介质上的存放方式来研究文件,即讨论文件的物理结构
- 跟踪可用文件————空闲空间管理
10.7.1 预分配与动态分配
- 文件创建时是否一次性分配其最大空间?
- 预分配
- 文件创建时必须声明文件的最大长度
- 难以可靠估计文件可能的最大长度
- 倾向于估计大文件长度(浪费)
- 适用于从不改变的文件
- 动态分配
- 需要时才给文件分配空间
10.7.2 区块大小
- 以多大的区块为分配单位?
- 连续的空间可提高性能
- 区块数多则需要更大的文件分配表(FAT)
- FAT用来跟踪分配给文件的区块
- 固定大小简化空间的再分配
- 可变大小使空间浪费最小化
10.7.3 分配方法
- 常用的文件分配方法
- 连续分配
- 链接分配
- 索引分配
连续分配
- 一个文件的信息存放在若干连续的物理块中
![image]()
- 优点
- 简单、容易实现(只需在文件分配表FAT中记录起始块号和长度)
- 支持顺序存取和随机存取
- 顺序存取速度快,所需的磁盘寻道次数和寻道时间少
- 缺点
- 文件不能动态增长(预留空间则浪费)
- 存在外部碎片问题(需要重新分配和压缩)
链接分配
- 一个文件的信息存放在若干不连续的物理块中
- 各个块之间通过指针连接,前一个物理块指向下一个物理块(如FAT文件系统)
![image]()
- 优点
- 提高了磁盘空间利用率
- 有利于文件动态扩充
- 缺点
- 不适于随机存取
- 存取速度慢,需要更多的寻道次数和寻道时间
- 需要定期整理
索引分配
- 一个文件的信息存放在若干不连续的物理块中,系统为每个文件建立一个专用数据结构————索引表,并将这些块的块号存放在这些索引表中
![image]()
![image]()
- 优点
- 保持了链接结构的优点,又克服了其缺点
- 既能随时存取,又能随机存取
- 满足了文件动态增长、插入删除的要求,也充分利用外存空间
- 缺点
- 较多的寻道次数和寻道时间
- 索引表本身带来了系统开销:内外存空间、存取时间
![image]()
10.7.4 空闲空间管理
- 位图
- 用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,取值0和1分别表示空闲和占用
- 链式空闲表
- 每个空闲分区记录指向下一个空闲分区的指针和长度
- 索引
- 把空闲空间看作一个文件,该文件使用索引分配(即在索引表中记录各个空闲块)
- 空闲块列表
- 每个块关联一个顺序号
- 所有空闲块的顺序号记录在磁盘中
10.7.5 文件系统的性能
- 磁盘访问的速度称为计算机系统性能的主要瓶颈,设计文件系统时应尽可能地减少磁盘访问次数
- 减少磁盘访问次数的途径
- 高速缓存
- 磁盘调度
- 合理分配磁盘空间————分配块时,把有可能顺序存取的块放在一起,最好在同一柱面上,从而减少磁盘臂的移动次数
- 优化信息的分布————充分考虑磁盘访问的物理特性,优化信息在磁道上的排列方式
![image]()












浙公网安备 33010602011771号