概述

文件的定义

  • 一组有意义的信息的集合

文件的属性

  • 文件名

  • 标识符: 一个系统的各文件标识符唯一

  • 类型: 指明文件的类型

  • 位置: 文件存放的路径(让用户使用), 在外存的地址(让操作系统使用)

  • 大小

  • 创建时间, 上次修改时间, 文件所有者信息

  • 保护信息: 对文件进行保护的访问控制信息

文件的逻辑结构

image-20240518211140249

文件目录结构

image-20240518211251887

文件的基本操作

  • 操作系统向上层提供的基础功能

    • 创建文件 – create系统调用

    • 读文件 – read系统调用

    • 写文件 – write系统调用

    • 删除文件 – delete系统调用

    • 打开文件 – open系统调用

    • 关闭文件 – close系统调用

文件的物理结构

image-20240518211844488

文件存储空间管理

image-20240518212009563

文件的其他操作

  • 操作系统需要提供的其他文件管理功能

    • 文件共享

    • 文件保护

文件的逻辑结构

用户视角

无结构文件

  • 文件内部的数据就是一系列二进制流或字符流组成

  • 又称"流式文件"

  • 如 .txt 文件

有结构文件

  • 由一组相似的记录组成

  • 又称"记录式文件"

  • 每条记录由若干个数据项组成

  • 定长记录

    • 每条记录占用的存储空间相等
  • 可变长记录

    • 每条记录占用的存储空间不相等

顺序文件

  • 文件中的记录一个接一个地顺序排列(逻辑上), 可定长可变长, 在物理上可以顺序存储链式存储

  • 串结构

    • 记录之间的顺序与关键字无关
    • 通常按照记录存入的时间决定记录的顺序
  • 顺序结构

    • 记录之间的顺序按关键字顺序排列
image-20240518214256648

索引文件

image-20240518214551853

索引顺序文件

image-20240518214827996

多级索引顺序文件

image-20240518215040660

文件目录

目录本身就是一种有结构文件, 由一条条记录组成. 每条记录对应一个在目录下的文件

  • 文件控制块(FCB)的有序集合称为"文件目录", 一个FCB就是一个文件目录项

文件控制块

  • 目录文件中的一条记录就是一个文件控制块(FCB)

  • FCB中包含了文件的

    • 基本信息(文件名, 物理地址, 逻辑结构, 物理结构等)
    • 存取控制信息(是否可读/可写, 禁止访问的用户名单等)
    • 使用信息(如文件的建立时间, 修改时间等)

目录结构

单级目录结构

  • 实现"按名存取", 但不允许文件重名

  • 不适用于多用户操作系统

两级目录结构

  • 主文件目录(MFD)

  • 用户文件目录(UFD)

image-20240519135739817

多级目录结构

  • 树型目录结构

image-20240519140615996 image-20240519140531005

无环图目录结构

image-20240519140832854

索引结点

  • FCB的改进

image-20240519141203583
  • 存放在外存中的索引结点称为"磁盘索引结点", 当索引结点放入内存后称为"内存索引结点"

  • 内存索引结点中需要增加一些信息, 比如: 文件是否被修改, 此时有几个进程正在访问该文件等

文件的物理结构

文件分配方式

操作系统视角

连续分配

image-20240519143357302
  • 优点

    • 支持顺序访问和直接访问
    • 读取某个磁盘块时, 需要移动磁头. 访问的两个磁盘块相隔越远, 移动磁头所需时间就越长
    • 连续分配的文件在顺序读/写时速度最快
  • 缺点

    • 不利于文件拓展
    • 存储空间利用率低, 会产生磁盘碎片

链接分配

离散分配

隐式链接

image-20240519144308433
  • 优点

    • 方便文件拓展, 不会有碎片问题, 外存利用率高
  • 缺点

    • 只支持顺序访问, 不支持随机访问, 查找效率低
    • 指向下一个盘块的指针也需要耗费少量的存储空间

显式链接

  • 文件分配表 (FAT)

    • 开机时放入内存, 并常驻内存
image-20240519145736810
  • 优点

    • 支持随机访问
    • 地址转换时不需要访问磁盘, 因此文件的访问效率更高
  • 缺点

    • 文件分配表需要占用一定的存储空间

索引分配

image-20240519155630692
  • 优点

    • 支持随机访问
    • 文件拓展容易实现
  • 缺点

    • 索引表占用一定的存储空间

链接方案

image-20240519160956691

多层索引

image-20240519161412779

混合索引

image-20240519161707754

文件存储空间管理

存储空间的划分与初始化

image-20240520101917689

存储空间管理

空闲表法

  • 适用于连续分配

image-20240520102831172

空闲链表法

image-20240520103201800
  • 空闲盘块链

    image-20240520103638186
  • 空闲盘区链

    image-20240520103906681

位视图法

image-20240520104655155 image-20240520104845898

成组链接法

image-20240520110516139 image-20240520111500921

文件的基本操作

创建文件

  • 调用create系统调用

image-20240520111752016

删除文件

  • 调用delete系统调用

image-20240520111922190

打开文件

  • 调用open系统调用

image-20240520112529523 image-20240520112901879

关闭文件

  • 调用close系统调用

image-20240520113049625

读文件

  • 调用read系统调用

image-20240520113357902

写文件

  • 调用write系统调用

image-20240520113716591

文件的其他操作

文件共享

基于索引结点的共享方式(硬链接)

image-20240520114234702

基于符号链的共享方式(软连接)

image-20240520114720392

文件保护

口令保护

image-20240520114911214

加密保护

image-20240520115143977

访问控制

image-20240520115457525 image-20240520115420086

文件系统的层次结构

image-20240520163707078

文件系统的全局结构

文件系统在外存中的结构

image-20240520164524221

文件系统在内存中的结构

image-20240520165004699

虚拟文件系统

image-20240520165858435 image-20240520165930104 image-20240520170003105 image-20240520170041522

文件系统挂载

image-20240520170357910