目录
③The Indexed Sequential File 索引顺序文件
⑤The Direct or Hashed File 直接文件或者散列文件
Structure 1:简单目录结构 Simple Structure for a Directory:目录项列表
Structure 2:两级目录 Two-level Scheme for a Directory
Structure 3:层次/树状结构目录 Hierarchical, or Tree-Structured Directory
0.前言
本系列文章旨在记录操作系统的知识点,可用于期末复习,笔者理解尚浅,文中不正之处静待批正。加粗高亮部分为重点。
1.Overview
文件系统的特性:
- 长期存在
- 进程共享
- 结构化存储
File Management Systems 文件管理系统:用户和程序使用文件的唯一方式
2.文件的组织方式
文件组织评价标准:
- 短的存取时间
- 易于修改
- 存储经济性
- 维护简单
- 可靠性
文件基础知识:
- 文件操作:Create/Delete/Open/Close/Read/Write
- 术语:Field (域) < Record (记录) < File (文件) < Database (数据库)
- 文件的存储结构是指文件在外存上的组织方式
5种不同的组织方式:
①The Sequential File 顺序文件
- 域都是相同的(长度,顺序)
- 第一个域为关键域(key filed)
- 新记录被放在日志文件(log file)或事务文件(transaction file)中
- Batch update (成批更新):合并log file与主文件
- 顺序文件多用于磁带
- 顺序存储器(磁带)只能顺序查找
- 直接存取存储器(磁盘)可以顺序查找,也可以分块查找或二分查找
②The Pile堆
- 按到达时间存放
- 域的长度不一定相同
- 缺点:搜索不方便,只能穷举搜索(exhaustive search);无结构
③The Indexed Sequential File 索引顺序文件
- Sequential file + index + overflow file
- 新纪录加入溢出文件中(overflow file)
- 索引提供了快速查询的能力,索引查找关键字小于或者等于目标关键字的最大记录
- 只有一个关键域
- 采用batch update
- Multiple level indexes 多级索引对于相同域可提高效率
- 缺点:基于单个域
④The Indexed File 索引文件
- 对于不同域用多级索引
- 索引本身是顺序的,但记录是非顺序的
- 用索引查找记录
- 可能包含完全索引exhaustive index、部分索引partial index
⑤The Direct or Hashed File 直接文件或者散列文件
- 每个记录均有一个关键域
- 哈希函数基于关键域
- 优点:文件可随机存放,不用排序;插入删除方便;存取速度快;不用索引区,节省存储空间
- 缺点:不能进行顺序存取,只能按关键字随机存取
3.文件目录
目录:
- 一个目录本身是一个文件
- 提供文件名和文件之间的映射
结构:Directory entry 目录表项
操作:Search搜索、Create file创建、Delete file删除、List directory目录列表、Update directory更新目录
Structure 1:简单目录结构 Simple Structure for a Directory:目录项列表
- 用顺序文件代表目录,该目录下的文件名做该顺序文件的关键字
- 文件不能重名
Structure 2:两级目录 Two-level Scheme for a Directory
- master directory 主目录+One directory for each user 用户目录(简单列表)
- 不能建子目录,可重名
Structure 3:层次/树状结构目录 Hierarchical, or Tree-Structured Directory
- 主目录下有用户目录
- 每个文件均有路径名pathname,每个用户目录有子目录及可作为主目录的文件
- 不同路径下文件可重名
文件系统挂载:启动时挂入根节点
4.文件共享
两个问题:存取权限、同时存取控制
Access Rights:
- None 无
- Knowledge 知道
- Execution 执行
- Reading 读
- Appending 追加
- Updating 更新
- Changing protection 更改保护
- Deletion 删除
- Owners 所有者(最大)
Simultaneous Access:更新时要上锁文件,更新中可锁定个人记录,需要考虑互斥与死锁
5.辅助存储管理
5.1 文件分配
portions 文件分区:
- 一个分区对于一组连续的块,大小为block的倍数
- 一个文件对应一个或多个分区
- 用文件分配表(FAT)来追踪文件分区
- 预分配 Preallocation:需知道创建文件时的文件最大大小
- 动态分配 Dynamic allocationallocation:当需要时再分配
分配策略:
①连续分配 Contiguous allocation
- 文件创建时分配一组连续的块(预分配适用)
- 文件分配表中只有一个项:起始块及文件长度
- 优点:支持顺序访问和直接访问(随机访问)
- 缺点:会产生外部碎片(利用压缩),不便于扩展
②链式分配 Chained allocation
- 基于单个块进行分配
- 每个块都包含指向链中下一个块的指针
- 文件分配表中只有一个项:起始块及文件长度
- 优点:无外部碎片,适合顺序文件
- 缺点:不支持随机访问,会破坏局部性,查找效率低
③索引分配 Indexed allocation
- 每个文件在文件分配表中有一个一级索引
- 文件分配表指向该文件在磁盘上的索引块
- 分配给文件的每个分区都在索引中都有一个表项
- 优点:可顺序访问,也可直接访问
变长索引分配:
多层索引:
混合索引:
5.2 空闲空间管理
①Bit tables 位表
使用一个包含磁盘上每个块一个比特的向量(vetcor)
②Chained free portions 链式空闲区
通过在每个空闲部分中使用指针和长度值(pointer and length),可将空闲部分串联起来
③Indexing 空闲索引表
使用index table
④Free block list 空闲列表
Maintain the list of the numbers of all free blocks