文章目录
  1. 文件系统与文件
  2. 文件描述符
  3. 目录 文件别名 文件系统种类
  4. 虚拟文件系统
    1. 文件系统基本数据结构
  5. 文件缓存与打开文件
    1. 文件缓存
    2. 打开文件
  6. 文件分配
  7. 冗余磁盘阵列
    1. RAID-0
    2. RAID-1
    3. RAID-4
    4. RAID-5

文件系统与文件

文件系统是操作系统中管理持久性数据的子系统,提供数据存储与访问功能。文件是具有符号名,由字节序列构成的数据项集合。文件是文件系统的基本数据单位,文件名是文件的标识符号。

文件系统的功能

  • 分配文件磁盘空间:管理文件数据块、管理空闲空间、分配存储区域;
  • 管理文件集合:文件定位、文件命名、文件系统结构——文件的组织;
  • 数据可靠与安全:安全(多层次保护数据安全)、可靠(持久保存数据,避免系统崩溃、媒体错误、攻击等等);

文件属性

文件属性包括名称、类型、位置、大小、保护、创建者、创建时间、最近修改时间等等。

文件头

文件系统元数据中的文件信息。其中包括文件属性以及文件的存储位置与顺序。

文件描述符

操作系统维护的打开的文件的状态与信息。包括文件指针、文件打开次数、文件在磁盘上的位置、访问权限等等。

目录 文件别名 文件系统种类

目录是一种特殊的文件,用来表示其他文件的信息,目录的内容为文件索引表(每个索引项为<文件名, 指向文件的指针>)。

日志文件系统:文件系统的所有修改,都会记录。

虚拟文件系统

对所有不同文件系统的抽象。主要实现以下四个功能:

  • 提供相同的文件与文件系统接口;
  • 管理所有文件和文件系统关联的数据结构;
  • 高效的查询;
  • 与特定文件系统模块的交互;

文件系统基本数据结构

  • 文件卷控制块;一个文件系统有一个文件卷控制块,包含文件系统详细信息(块大小、空余块、计数/指针等)。
  • 文件控制块;一个文件有一个文件控制块,包含文件详细信息(访问权限、所有者、大小、数据块位置等)。
  • 目录项;一个文件有一个目录项,将目录项数据结构及树型布局编码成树型数据结构(指向文件控制块、父目录、子目录等)。

整个文件系统的组织视图如下:

文件缓存与打开文件

文件缓存

在计算机系统中存在多处缓存:

 

数据块有两种缓存方式:数据块缓存与页缓存(将数据块与内存页缓存起来)。

  • 数据块缓存:虚拟页对换与文件读写分开。最终合并为数据块缓存。

 

  • 页缓存:在虚拟地址空间中虚拟页面可映射到本地外存文件中。

 

其中文件数据块被映射为页,文件的读/写操作被转换成对内存的访问。

打开文件

每个打开的文件都有一个文件描述符,记录文件的状态信息,包括目录项、当前文件指针、文件操作设置等;

每个进程有一个打开文件表,记录进程单独打开的文件描述符;

同时操作系统还有一个打开文件表,其中记录的文件描述符由多个进程共享;

 

一些文件系统提供文件锁,用于协调多进程的文件访问;文件系统有两个处理方式:强制与劝告。

  • 强制:根据锁的状态与访问请求确定是否拒绝访问;
  • 劝告:进程查看锁的状态,由进程决定下一步操作;

文件分配

本质为如何表示分配给一个文件数据块的位置与顺序。与内存分配类似,文件分配也有连续、链式、索引分配。所谓索引分配,就是用存储文件数据块的指针来表示分配给一个文件数据块的位置与顺序(这个存储文件数据块的指针的数据块称为索引数据块)。这3种分配方式各有优缺点,实际的文件分配方案会将这三种分配方式结合起来,下面介绍UFS文件系统的文件分配方案。

 

文件头包含13个指针,前10个指针(直接)指向文件数据块、第11个指针指向索引块、第12个指针指向2级索引块、第13个指针指向3级索引块;对于小文件:这种文件分配退化为连续分配,对于大文件:这种文件分配就是多级索引分配。

冗余磁盘阵列

使用多磁盘可改善吞吐量(并行),增加可靠性(冗余)。

RAID-0

磁盘条带化技术。将数据分成多个子块,存储在独立的磁盘中。增加了读写的磁盘带宽,读写数据的性能提升。

 

RAID-1

向两个磁盘写入,从任何一个读取。增加了可靠性与读数据的性能。

 

RAID-4

带校验的磁盘条带化——数据块级别的磁盘条带化加专用奇偶校验磁盘。

RAID-5

带分布式校验的磁盘条带化。减小了带校验和磁盘的读写压力。

 

此外,这些RAID技术还可以嵌套使用。比如RAID-0与RAID-1的嵌套: