ucore—21至22讲:文件系统

第二十一讲:文件系统

21.1 文件系统概念

21.1.1 文件系统和文件

  • 文件系统和文件概念
    在这里插入图片描述

  • 文件系统的功能
    1.分配文件磁盘空间
    管理文件块(位置、顺序);
    管理空闲空间(只需要管理位置,不需要管理顺序);
    分配算法/策略(类似于内存管理);
    2.管理文件集合
    定位:文件及其内容;
    命名:通过名字找到文件;
    文件系统结构:文件的组织方式
    3.数据可靠和安全
    安全:多层次保护数据安全;
    可靠:持久保存文件。避免系统崩溃、媒体错误、攻击等;

  • 文件属性
    在这里插入图片描述

21.1.2 文件描述符

  • 打开文件和文件描述符
    每个进程都有打开文件表 => 准确说是每个进程一个文件描述符表,每个表项指向打开文件表的一个表项,而打开文件表是所有进程共享的参考:csapp
    打开文件数实际上远大于真正存在的文件数量;
    文件描述符用于标志打开文件;
    在这里插入图片描述

  • 文件描述符的内容
    操作系统在进程的打开文件表中维护打开文件的状态和信息,这些信息包括:
    1.文件指针
    每个打开文件一个指针指向上次读写位置;
    每个进程分别维护自己的打开文件指针(同一个真实的文件,在不同进程中指针不同);
    2.文件打开计数
    当前打开该文件的次数;
    最后一个进程关闭该文件时,将其从打开文件中移除;
    3.文件的磁盘位置
    记录文件在磁盘上的位置(会缓存数据访问信息到内存)
    4.访问权限
    每个进程的文件访问模式信息;

  • 文件的用户视图和系统视图
    磁盘块(多个扇区构成)是文件的最小读写单位,而不是字节!!!
    在这里插入图片描述
    在这里插入图片描述

  • 访问模式
    在这里插入图片描述
    => 某种程度上说,文件系统是一个简单的小型文件系统

  • 文件内部结构
    总体来说,所谓文件内部结构,主要是对应用程序而言;对操作系统而言,文件只是字节序列而已(不过OS对可执行文件等少数文件内部结构提供接口!)
    在这里插入图片描述

  • 文件共享和访问控制
    在这里插入图片描述
    在这里插入图片描述
    注意UNIX对语义一致性的处理

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

  • 分层文件系统
    目录是特殊的文件,目录的内容是文件索引表
    在这里插入图片描述
  • 目录操作
    在这里插入图片描述
  • 目录的实现
    即如何组织目录这个文件中的内容:
    在这里插入图片描述
  • 文件别名
    注意区分软连接和硬链接!!!
    硬链接会增加文件的引用计数;而软连接不会,它只是存储文件的路径
    在这里插入图片描述
  • 名字解析(路径遍历)
    在这里插入图片描述
  • 文件系统挂载
    在这里插入图片描述
  • 文件系统种类
    目前个人的理解:以下各类文件系统,最终都需要依赖于操作系统的磁盘文件系统?
    在这里插入图片描述
  • 网络/分布式文件系统
    在这里插入图片描述

21.2 虚拟文件系统

  • 虚拟文件系统的位置
    严格说来,VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间;
    每个具体的文件系统都有自己的文件操作、数据结构。VFS 作为Linux内核中的一个软件层,用于给用户空间的程序提供文件系统接口,从而能在高层以统一的接口访问底层各种不同的文件系统

    在这里插入图片描述

  • 虚拟文件系统的作用
    在这里插入图片描述

  • 文件系统基本数据结构
    1.文件卷控制块(superblock)
    每个文件系统一个;
    描述该文件系统的详细信息;
    信息包含:块大小、空余块、计数、指针等…
    2.文件控制块(vnode/inode)
    每个文件系统;
    描述该文件的详细信息;
    信息包括:访问权限、拥有者、大小、数据块位置等…
    3.目录项
    每个目录项一个;
    将目录项数据结构及树形布局编码成树形数据结构;
    每个目录项包含指向文件控制块、父目录、子目录的指针等信息

  • 文件系统的组织视图
    在这里插入图片描述

  • 文件系统的存储结构
    在这里插入图片描述

  • 文件系统的存储视图
    在这里插入图片描述

21.3 文件缓存和打开文件(文件缓存难理解)

  • 多种磁盘缓存位置
    本节主要讨论内存中的数据块缓存
    在这里插入图片描述
  • 数据块缓存
    如何理解下述两种数据块缓存方式???
    在这里插入图片描述
  • 数据块缓存
    在这里插入图片描述
  • 页缓存
    在这里插入图片描述
    在这里插入图片描述
  • 打开文件是数据结构
    在这里插入图片描述
  • 打开文件表
    这个打开文件表与csapp的表述不同,暂时以csapp为准!
    在这里插入图片描述
  • 打开文件锁
    在这里插入图片描述

21.4 文件分配(对比内存分配)

  • 文件大小
    在这里插入图片描述
  • 文件分配
    实际应用中,通常是几种分配方式的组合!
    在这里插入图片描述
  • 连续分配
    在这里插入图片描述
  • 链式分配
    在这里插入图片描述
  • 索引分配
    在这里插入图片描述
    大文件的索引方式:链式索引块 或 多级索引块
    在这里插入图片描述
  • 文件分配示例:UFS多级索引分配
    在这里插入图片描述
    在这里插入图片描述

21.5 空闲空间管理(对比内存管理)

  • 空闲空间管理
    在这里插入图片描述
  • 位图
    在这里插入图片描述
  • 其他方式
    实际应用中,也是多种方式的组合
    在这里插入图片描述

21.6 冗余磁盘阵列RAID

  • 磁盘分区
    在这里插入图片描述
  • 一个典型的磁盘文件系统组织
    一个磁盘可分为几个分区,每个有自己的文件系统;
    也可以多个磁盘组成一个分区,对应一个文件系统;
    在这里插入图片描述
  • 多磁盘管理
    在这里插入图片描述
  • RAID 0:磁盘条带化
    条带化磁盘条带化是指利用条带化技术就是将一块连续的数据分成很多小部分并把它们分别存储到不同磁盘上去
    在这里插入图片描述
  • RAID 1:磁盘镜像
    在这里插入图片描述
  • RAID 4:带校验的磁盘条带化
    在这里插入图片描述
  • RAID 5:带分布式校验的磁盘条带化
    校验和分布在多个磁盘上,而不是专门的校验磁盘
    在这里插入图片描述
  • RAID 6
    在这里插入图片描述
  • RAID 嵌套
    在这里插入图片描述

第二十二讲(实验8):文件系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值