- 什么是文件系统:操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用。
- 文件系统的设计:
- 操作系统角度:怎样组织、管理文件?
- 文件的描述、分类
- 文件目录的实现
- 存储空间的管理
- 文件的物理地址
- 磁盘实际运作方式(与设备管理的接口)
- 文件系统性能
- 用户角度:文件系统如何呈现在用户面前?
- 一个文件的组织
- 如何命名
- 如何保护文件
- 可以实施的操作
- 操作系统角度:怎样组织、管理文件?
- 文件的逻辑结构:
- 流式结构:构成文件的基本单位是字符,按字符进行读写
- 记录式结构:文件由若干记录组成,可以按记录进行读写
- 树形结构
- 堆、顺序、索引、散列等结构...
- 文件的存取方式:
- 顺序存取
- 随机存取
- 磁盘访问过程:
- 一次访盘请求:读/写,磁盘地址(设备号,柱面号,磁头号,扇区号),内存地址(源/目)
- 完成整个过程的三个动作:
- 寻道:磁头移动定位到指定磁道
- 旋转延迟:等待指定扇区从磁头下旋转经过
- 数据传输:数据在磁盘和内存间的实际传输
- 以上是磁盘(机械硬盘)的访问过程,SSD没有前2个动作
- 磁盘空间管理:
- 位图
- 空闲块表
- 空闲块链表
- 成组链接法:对空闲块链表的改进算法
- 分配算法
- 回收算法:
- 文件控制块和文件目录:
- 文件控制块(FCB):为管理文件而设置的数据结构,保存管理文件所需的所有有关信息(或者叫文件属性、元数据)。常用属性:文件名、文件号、文件大小、文件地址、时间属性、所有者、文件类型等。
- 文件目录、目录项与目录文件:
- 文件目录:统一管理每个文件的元数据,以支持文件名到物理文件地址的转换。将所有文件的文件管理信息组织到一起,即构成文件目录。
- 目录文件:将文件目录以文件的形式存储在磁盘上
- 目录项:构成文件目录的基本单元。目录项可以看做是FCB,目录是FCB的有序集合。
- 文件的物理结构——文件在存储介质上的存放方式
- 主要问题:
- 如果一个文件被划分成N块,那么这N块在磁盘上如何存放?
- 其地址在FCB中怎样记录?
- 连续(顺序)结构:
- FCB中中记录该文件第一个物理块的地址和物理块的数量,这样便能够获得文件的地址。
- 优点:
- 简单
- 支持顺序存取和随机存取
- 所需的磁盘寻道次数和寻道时间最少
- 可以同时读入多个块,检索一个块也很容易
- 缺点:
- 文件不能动态增长
- 不利于文件插入和删除
- 容易产生外部碎片
- 链接结构:
- FCB中存放第一块的地址,根据该地址遍历链表即可找到其他物理块
- 优点:
- 提高了磁盘空间利用率,不存在外部碎片问题
- 有利于文件的插入和删除
- 有利于文件动态扩充
- 缺点:
- 存取速度慢,不适用于随机存取
- 可靠性问题:如指针出错
- 更多的寻道次数和寻道时间
- 链接指针占用一定的空间
- 文件分配表FAT——链接结构的变形:将块指针统一存放在文件分配表中
- FCB中存放了文件的起始块号
- 索引结构:文件的索引块中顺序存放了改文件的第1到第N块的块号
- 优点:既保持了链接结构的优点,又解决了其缺点
- 既能顺序存取,又能随机存取
- 满足了文件动态增长、插入删除的要求
- 能充分利用磁盘空间
- 缺点:
- 较多的寻道次数和寻道时间
- 索引表本身带来了系统开销
- 索引表的组织方式:
- 问题:当索引表很大,需要多个物理内存块存放时怎么办?
- 解决:采用直接索引、多级索引、或者像Unix文件系统的一样,采取综合模式,即直接索引与多级索引方式的结合
- 优点:既保持了链接结构的优点,又解决了其缺点
- 主要问题:
- 文件系统的实现
- 实现文件系统需要考虑的两方面内容:
- 在磁盘上:
- 如何启动操作系统?
- 磁盘怎样管理,怎么获取磁盘的有关信息?
- 目录文件在磁盘上怎么存放?普通文件在磁盘上怎样存放?
- 在内存中:
- 当进程使用文件时,操作系统是如何支持的?
- 文件系统提供什么样的数据结构?
- 在磁盘上:
- 相关术语:
- 磁盘分区:把一个物理磁盘的存储空间划分成几个相互独立的部分
- 文件卷:磁盘上的逻辑分区,由一个或多个物理块组成
- 一个文件卷可以是整个磁盘或部分磁盘或跨盘(RAID)
- 同一个文件卷中使用同一份管理数据进行文件分配和磁盘空闲空间管理,不同的文件卷中的管理数据是相互独立的
- 一个文件卷包括:文件系统信息、一组文件(用户文件和目录文件)、未分配空间
- 块或簇:一个或多个连续的扇区
- 格式化:在一个文件卷上建立文件系统,即建立并初始化用于文件分配和磁盘空闲空间管理的管理数据——元数据
- 磁盘上的内容:
- 引导区:包括了从该卷引导操作系统所需要的信息,每个卷(分区)一个,通常为第一个扇区
- 卷(分区)信息:包括该卷(分区)的块数、块大小、空闲块数量和指针、空闲FCB数量数量和指针
- 目录文件
- 用户文件
- 磁盘上文件系统的布局:
- UNIX文件系统:
- 空闲区:如果使用位图进行空闲区管理,则该部分存放位图;如果使用成组链接法,则该部分存放专用块...
- i 节点区:存放FCB
- 根目录区:由于根目录较为特殊,因此用专门的区域存放
- Windows-FAT文件系统:
- 文件分配表1:存放文件分配表——各文件的块指针
- 文件分配表2:表1的备份
- 根目录:同UNIX
- 内存中所需的数据结构——以Unix为例
- 系统打开文件表
- 用户打开文件表
- 实现文件系统需要考虑的两方面内容:
- 文件系统实例——Unix
- 目录文件实现时的改进:
- 问题:如何加快目录检索
- 一种解决方案:目录项分解法——把FCB分成两部分:
- 符号目录项:文件名,文件号
- 基本目录项:除文件名外的所有字段
- 例子:Unix的i-节点
- 分解前:平均访盘次数为(1 + 13) / 2 = 7次,即最佳情况和最坏情况平均
- 分解后:平均访盘次数为1.5 + 1 = 2.5次,(1 + 2) / 2 = 1.5,外加一次访问基本目录项
- Unix文件系统:
- 目录文件实现时的改进: