• 约 5 分钟

操作系统·文件管理

文件系统基础

文件的基本概念

  • 文件
  • 文件系统
  • 文件的结构(自低向高)
    • 数据项
      • 基本数据项
      • 组合数据项
    • 记录
    • 文件

文件控制块和索引结点

  • 文件的属性
    • 名称
    • 类型
    • 创建者
    • 所有者
    • 位置
    • 大小
    • 保护
    • 创建时间
  • FCB
    • 用来存放控制文件需要的各种信息的数据结构
    • FCB的有序集合称为文件目录,一个FCB就是一个文件目录项
    • 包含信息
      • 基本信息
      • 存取控制信息
      • 使用信息
  • 索引结点
    • 概念
    • 磁盘索引结点
    • 内存索引结点

文件的操作

  • 基本操作
    • 创建
    • 写
    • 读
    • 重新定位
    • 删除
    • 截断
  • 文件的打开与关闭
    • open 提供文件名,其他的不用,只需提供编号?
    • 打开文件表
      • 整个系统表
        • FCB的副本及其他信息
        • 打开计数器
        • 文件名不必需
        • 文件描述符(文件句柄)
        • 文件磁盘位置
      • 每个进程表
        • 指向系统表中适当条目的指针
        • 文件指针(读写位置)
        • 访问权限

文件保护

  • 访问类型
    • 读
    • 写
    • 执行
    • 添加
    • 删除
    • 列表清单(列出文件名和文件属性)
  • 访问控制
    • 访问控制列表ACL(在PCB中)
      • 优点
      • 缺点
    • 精简的ACL
      • 拥有者
      • 组
      • 其他
    • 口令
    • 密码(密钥)

文件的逻辑结构

  • 无结构文件(流式文件)
  • 有结构文件(记录式文件)
    • 顺序文件(默认顺序存储)
    • 索引文件
    • 索引顺序文件
    • 直接文件/散列文件(hash file)

⭐文件的物理结构

  • 连续分配
    • 特点
      • 顺序访问
      • 直接访问
    • 优点
      • 实现简单
      • 存取速度快
    • 缺点
      • 文件长度不宜动态增加
      • 外部碎片
  • 链接分配(消除了外部碎片;动态)
    • 隐式链接(手拉手)
      • 缺点
        • 只适合顺序访问
        • 稳定性
      • 簇为结点的方法(增加了内部碎片哦)
    • 显式链接
      • 文件分配表(FAT)
      • 整个磁盘只有一张FAT
      • 系统启动时读入FAT
      • 查找是在内存中进行的显著提高速度
  • 索引分配
    • 链接分配的问题
      • 除FAT,不能直接访问
      • FAT很大
    • 索引块(表),每个文件都来上一个
    • 索引块大小限制了文件大小
      • 解决方案
        • 链接方案(索引块之间的手拉手游戏)
        • 多层索引(索引的索引的索引的索引…(套娃ing))
        • 混合索引(Linux YYDS!)
  • 混合索引分配
    • 直接地址
    • 一次间接地址
    • 多次间接地址

文件系统

文件系统布局

  • FS在磁盘中的结构
    • 500
    • MBR
    • 引导块
    • 超级块
      • 分区有多少磁盘块
      • 块的大小
      • 空闲块的数量和指针
      • 空闲的FCB数量
      • FCB指针
    • 空闲块信息
  • FS在内存中的结构(存储在内存中的内核区)
    • 安装表(挂载表)
    • 目录结构的缓存
    • 整个系统的打开文件表
    • 每个进程的打开文件表

外存空闲空间管理

  • 卷
    • 逻辑概念
    • FCB区(目录区)和数据区(文件区)
  • 空闲表法
    • 表项
      • 序号
      • 第一个空闲盘块号
      • 空闲盘块数
  • 空闲链表法
    • 空闲盘块链
    • 空闲盘区链
  • 位示图法
  • ❗成组链接法
    • 成组链块
      • n多个指向空闲盘块的指针
      • 1个指向下一个链块的指针
    • 盘块的分配
    • 盘块的回收

虚拟文件系统

  • 透明化——提供统一接口
  • 对象化——面向对象的思想
    • 超级块对象
    • 索引结点对象
    • 目录项对象
    • 文件对象

分区和安装

目录

目录的基本概念

目录结构

  • 单级目录结构
  • 两级目录结构
  • 树形目录结构
  • 无环图目录结构

目录的操作

  • 搜索
  • 创建文件
  • 删除文件
  • 创建目录
  • 删除目录
  • 移动目录
  • 显示目录
  • 修改目录

文件共享

  • 静态共享方法
    • 硬链接
    • 软链接
    • 硬链接比软链接查找速度更快
  • 动态共享方法

磁盘和固态硬盘

磁盘

  • 磁盘
  • 磁道
  • 扇区
  • 盘块
  • 磁盘组
  • 柱面
  • 磁盘地址
    • [驱动器号] 柱面号 盘面号 扇区号
  • 固定头磁盘
  • 活动头磁盘
  • 固定盘磁盘
  • 可换盘磁盘

磁盘的管理

  • 初始化
  • 分区
  • 引导块
  • 坏块

磁盘调度算法

  • 一次磁盘读写时间
    • 寻道时间(占比最长)
      • 跨越数条磁道
      • 磁头启动
    • 旋转延迟时间
      • 转半圈的时间
    • 传输时间
      • 取决于转速、数据量和扇区数
  • 调度算法
    • FCFS
    • SSTF
    • SCAN
    • C-SCAN
    • LOOK

固态硬盘

  • 特性
  • 磨损均衡

FCB和inode(索引结点)

  • 二者在功能定位上大致是相同的
  • FCB主要用于Windows
  • indoe主要用于Linux
林威
林威 咖味十足的软件工程师