文件系统

介绍文件系统的实现与原理。

文件系统的基本概念

文件系统的基本要求

  • 必须能够存储大量的信息。
  • 在使用信息的进程终止时,信息必须保存下来。
  • 多个进程可以并发地存取信息。

文件

文件命名

文件是一个抽象机制,它提供了一种把信息保存在磁盘上而且便于以后读取的方法。它必须这样来实现,使用户不必了解信息存储的方法、位置以及磁盘实际运作方式等细节。

文件结构

  • 文件是一个无结构字节序列,Unix采用这种方式
  • 文件是一个固定长度记录的序列,每条记录都有内部结构
  • 文件由一棵记录树构成,每条记录长度不等。在记录的固定位置包含一个关键字域。记录树按关键字域进行排序,这便于对特定关键字进行快速查找。

文件类型

  • 常规文件(regular file)中包含有用户信息。
    • ASCII文件或者二进制文件
    • ASCII文件由多行文本组成。
    • ASCII文件的最大优点是可以原样地显示和打印,也可以用通常的文本编辑器进行编辑。
    • 二进制文件,无法直接查看,但对于使用它的程序而言,其具有一定的内部结构。
  • 目录(directory)是管理文件系统结构的系统文件。
  • 字符设备文件(character special file)和输入/输出有关,用于处理串行I/O设备。
  • 块设备文件(block special file)则用于处理磁盘。

文件访问

  • 顺序访问(sequential access)
    • 进程可以从文件开始处顺序读取文件中所有字节或者记录,但不能够略过某些内容,也不能够非顺序读取。
    • 顺序存取文件可以重绕,只要需要,可以多次读取该文件。
    • 主要用于磁带
  • 随机访问(random access)
    • 可以非顺序地读取文件中的字节或记录,或者根据关键字而不是位置来存取记录
    • 主要用于磁盘

文件属性

每个文件除了文件名和数据本身之外,操作系统还给文件赋以其他信息,比如,文件创建日期、文件长度等等。

目录

为了记录文件,文件系统通常需要用到目录,在许多系统中,目录本身也是文件。

  • 一个目录通常包含多个目录项,每个目录项代表一个文件
  • 目录项包含了文件名字、属性和文件数据存储地址等信息
  • 目录项仅包含文件名字、以及一个指向另一个数据结构的指针

目录系统

  1. 每个系统的目录数目各不相同,最简单的设计方案是维护一个单独的目录,其中包含所有用户的全部文件
  2. 对于整个系统中使用单独一个目录管理所有文件的想法的改进是,每个用户拥有一个目录
    • 这种设计消除了不同用户之间的文件名冲突,但仍然难以使那些有许多文件的用户感到满意(需要子目录)。
  3. 更进一步,需要的是一般的层次结构(即目录树)。
    • 使用层次结构,每个用户可以拥有所需的多个目录,以便自然地组织他们的文件。

路径名

  • 使用目录树来组织文件系统时,需要相应的方法指定文件名
  • 每个文件都赋予一个绝对路径名(absolute path name),它由从根目录到文件的路径组成。
  • 另一种文件名是相对路径名(relative path name)。它常和工作目录(也称作当前目录)的概念一起使用。用户可以指定一个目录作为当前的工作目录。这时,所有的路径名,如果不是从根目录开始,都是相对于工作目录的。

文件系统实现

文件系统布局

  • 主引导记录(MBR):磁盘的扇区0,用于启动计算机。
    • 在MBR未尾有一个分区表,里面记录了每个分区的起始地址和结束地址,其中有一个活动分区。
  • 机器启动后,BIOS读入并执行MBR中的代码。
  • MBR程序确定活动分区,并读入它的第一个磁盘块,即引导块,然后执行之。
  • 引导块把保存在该分区中的操作系统装入内存并运行。
  • 在类UNIX中,文件系统由超级块管理,它包含了关于文件系统的所有关键参数,当文件系统第一次被加载时,超级块的内容被装入内存。其后,是空闲空间管理,记录文件系统中的空闲物理块信息。之后是索引节点,每个索引节点对应于一个文件,记录了文件的属性信息及在磁盘上的存储地址。

文件实现

连续分配法

  • 把每个文件作为连续数据块存储在磁盘上。例如,在具有1K大小块的磁盘上,50K的文件要分配50个连续的块。

优点

  • 简单、容易实现,记录每个文件用到的磁盘块仅需记住一个数字即可,也就是第一块的磁盘地址。

  • 性能较好,在一次操作中,就可以从磁盘上读出整个文件。

缺点

  • 首先,除非在文件创建时就知道了文件的最大长度,否则这一方案是行不通的。
  • 该分配方案会造成磁盘碎片

链表分配法

  • 为每个文件构造磁盘块的链接表,每个块的第一个字用于指向下一块的指针,块的其他部分存放数据。

优点

  • 每个磁盘块都可以被利用,不会因为磁盘碎片而浪费存储空间;目录项中只需记录一个整数(起始块号)

缺点

  • 尽管顺序读取文件非常方便,但是随机存取却相当缓慢
  • 此外,因为指针占去了一些字节,每个磁盘块存储数据的字节数不再是2的幂。可能造成性能损失

文件分配表法(FAT)

  • 如果取出每个磁盘块的指针字,把它放在内存的表或索引中,就可以消除链接表法的两个不足,即文件分配表法(FAT)

优点

  • 整个磁盘块都可以存放数据;随机存取容易;目录项中只需记录一个整数(起始块号) 。MS-DOS就使用这种方法进行磁盘分配。

缺点

  • 主要缺陷是必须把整个链表都存放在内存中,占用较多的存储空间。

索引节点法

给每个文件赋予一张称为i-node(索引节点)的数据结构,其中列出了文件属性和各块在磁盘上的地址。

52989171508

目录实现

  • 在读文件前,必须先打开文件。打开文件时,操作系统利用用户给出的路径名找到相应目录项,目录项中提供了查找文件磁盘块所需的信息

  • 由于系统不同,这些信息可能是整个文件的磁盘地址(连续分配方案)、第一个块的块号(对于两种链接表分配方案)或者是i-节点号。

共享文件

提供文件共享的方法:利用多个目录中的不同文件名来描述同一共享文件(即文件别名,该方法的访问速度快,但会影响文件系统的树状结构,适用于经常访问的文件共享,同时存在一定的限制)。

硬链接

基于改进的多级目录结构,将目录内容分为两部分:文件名和索引结点

前者包括文件名和索引结点编号,后者包括文件的其他内容(包括属主和访问权限)。

通过多个文件名链接(link)到同一个索引结点,可建立同一个文件的多个彼此平等的别名。别名的数目记录在索引结点的链接计数中,若其减至0,则文件被删除。

限制:不能指向另一个文件系统中的i-node。

软链接

一种特殊类型的文件,其内容是到另一个目录或文件路径名。建立符号链接文件(软链接),并不影响原文件,实际上它们各是一个文件。可以建立任意的别名关系,甚至原文件是在其他计算机上。

当一个文件被删除时,相应的所有链接都无效。

磁盘空间管理

  • 存储n个字节的文件可以有两种策略:分配n个字节的连续磁盘空间,或者把文件分成许多个(并不一定要)连续的块。

  • 几乎所有的文件系统都把文件分割成固定大小的块来存储,各块不必相邻。

块大小

书中P352给出了块大小与访问速率、磁盘空间利用率的关系,可以发现,性能与空间利用率是相互冲突的。

52989232806

空闲块管理

  1. 使用磁盘块的链接表
    • 磁盘块中包含尽可能多的空闲磁盘块号
  2. 使用位图
    • n个块的磁盘需要n位位图。
    • 在位图中,空闲块用1表示,分配块用0表示(或者反之)。

文件系统的可靠性

备份策略

  1. 物理转储
  2. 逻辑转储

文件系统的一致性

分为数据块和文件的一致性。

52989266934

保护机制

  • 采用机制与策略分离
  • 使用参照监视器(reference monitor)
  • 52989325258
  • 保护域
  • 保护矩阵
  • 访问控制列表(按列存储保护矩阵)
  • 为权能表(capability list)或称C表(按行表存储保护矩阵)
  • 秘密通道
    • 述调节CPU使用强度
    • 调节页面率、文件锁
    • 申请和释放专用资源

参考资料

  1. Operating System:Design and Implementation,Third Edition
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值