操作系统之基础篇-(5)文件管理与系统

  • 目录

    操作系统的文件管理

    文件的逻辑结构

    逻辑结构的文件类型

    顺序文件

    索引文件

    辅存的存储空间分配

    辅存的分配方式

    存储空间管理

    目录管理

    目录树

    Linux目录

    Linux的文件系统

    常见文件系统

    FAT(文件配置表)

    NTFS(新技术文件系统)

    EXT2/3/4(扩展文件系统)

    EXT文件系统


  • 操作系统的文件管理

  • 文件的逻辑结构

  • 逻辑结构的文件类型

  • 对于逻辑结构的文件类型,文件可以分为有结构文件无结构文件
  • 有结构文件
  • 文本文件,文档和媒体文件都属于有结构文件
  • 文件内容由定长记录和可变长记录组成
  • 定长记录存储文件格式、文件描述等结构化数据项
  • 可变长记录存储文件具体内容
  • 例(一个PNG文件):
  • PNG文件标记和文件结束标记都属于定长记录
  • PNG数据块属于可变长记录
  • 无结构文件
  • 也称为流式文件
  • 文件内容长度以字节为单位
  • 二进制文件和链接库都属于无结构文件
  • 顺序文件

  • 顺序文件是指按顺序存放在存储介质中的文件
  • 磁带只能顺序读取和读写
  • 磁带的存储特性使得磁带文件只能存储顺序文件
  • 由于是顺序存储的,顺序文件是所有逻辑文件当中存储效率最高的,因为读和写时只要按照顺序地读和写就行
  • 但也因此,它的增删改是非常没有效率的
  • 索引文件

  • 可变长文件不适合使用顺序文件格式存储
  • 索引文件是为了解决可变长文件存储而发明的一种文件格式
  • 索引文件需要配合索引表完成存储的操作
  • 辅存的存储空间分配

  • 辅存的分配方式

  • 分为连续分配,链接分配,索引分配
  • 连续分配
  • 如果文件存储时需要用一系列的扇区,那么就会把连续的扇区分配给文件
  • (优点)顺序读取文件内容非常容易,速度很快
  • (缺点)对存储要求高,要求满足容量的连续存储空间
  • 为了解决这个缺点发明了链接分配方式
  • 链接分配可以将文件存储在离散的盘块中
  • 需要额外的存储空间存储文件的盘块链接顺序
  • 按照额外存储空间的不同,把链接分配分为隐式链接分配显式链接分配
  • 隐式链接分配
  • 隐式分配的下一个链接指向存储在当前盘块内
  • 隐式分配适合顺序访问,随机访问效率很低
  • 可靠性差,任何一个链接出问题都影响整个文件
  • 显式链接分配
  • 使用一个表,这个表存储物理盘块以及物理盘块的下一盘块的数据
  • 这个表就是FAT表
  • FAT不支持高效的直接存储(FAT记录项多)
  • 检索时FAT表占用较大的存储空间(需要将整个FAT加载到内存)
  • 因此有了索引分配
  • 索引分配把文件的所有盘块集中存储(存储所有盘块的位置叫索引)
  • 读取某个文件时,将文件索引读取进内存即可,不需要把整个表加载进内存里
  • 每个文件都有一个索引块,记录所有盘块信息
  • 索引分配方式支持直接访问盘块,因为在索引里可以直接找到这个文件的对应的盘块
  • 文件较大时,索引分配方式具有明显优势
  • 存储空间管理

  • 主要有3种方法:
  • 1.空闲表
  • 2.空闲链表
  • 3.位示图
  • 空闲表
  • 有2个内容:
  • 1.第一个空闲盘块号
  • 2.空闲盘块数
  • 空闲盘区的分配与内存分配类似
  • 也是使用首次适应算法、循环适应算法、快速适应算法来分配空闲盘块的
  • 回收过程也与内存回收类似
  • 空闲链表
  • 空闲链表法把所有空闲盘区组成一个空闲链表
  • 每个链表节点存储空闲盘块和空闲的数目
  • 其分配和回收也与内存类似
  • 位示图
  • 位示图维护成本很低
  • 位示图可以非常容易找到空闲盘块
  • 位示图使用0/1比特位,占用空间很小
  • 目录管理

  • 目录树

 有了目录树使得任何文件或目录都只有唯一路径

Linux目录

  • Linux的文件系统

  • 常见文件系统

  • 1.FAT
  • 2.NTFS
  • 3.EXT2/3/4
  • FAT(文件配置表)

  • 使用一张表保存整个盘块的信息
  • NTFS(新技术文件系统)

  • Windows NT环境的文件系统
  • NTFS对FAT进行了改进,取代了旧的文件系统
  • EXT2/3/4(扩展文件系统)

  • 主要在Linux上使用,不能被Windows所识别
  • EXT文件系统

  • 如果把一个磁盘或一个U盘给格式化成EXT文件系统
  • 那么它的逻辑结构如下:
  • 每一个Block Group都是独立的,都具有各自完整的信息
  • 每一个Block Group都包含有(布局):
  • 1.Superblock(超级块)
  • 2.文件系统描述
  • 3.Inode bitmap(索引节点位图)
  • 4.Block bitmap(块位图)
  • 5.Inode table(索引节点表)
  • 6.Data block(数据块)
  • Inode
  • 存放文件及目录的基本信息,其本质是结构体
  • 如存放:
  • 文件类型,文件权限,文件物理地址,文件长度,文件连接计数,文件存取时间,索引唯一编号,文件状态,访问计数,链接指针等
  • 文件名不是存放在文件的Inode节点上的,而是存放在包含它的目录的Inode节点上
  • 这是为了列出目录文件时无需加载文件的Inode
  • Inode table(索引节点表)
  • 存放文件Inode的地方
  • 每一个文件(目录)都有一个Inode
  • Inode是每一个文件(目录)的索引节点
  • Ext文件系统管理外存的方式就是索引分配方式
  • Inode bitmap
  • Inode的位示图
  • 记录已分配的Inode和未分配的Inode
  • 当一个文件系统初始化时,Inode的数目就已经固定了,因此就可以使用位示图记录已分配的Inode和未分配的Inode
  • Data block
  • 是存放文件内容的地方
  • 每个block都有唯一的编号
  • 文件的block记录在文件的Inode上
  • 文件的物理地址其实记录的就是文件的block记录
  • Block bitmap
  • Block的位示图
  • 功能与Inode bitmap类似
  • 记录Data block的使用情况
  • 当我们需要对一个文件进行外存分配时,我们就会通过查询Block bitmap来分配相关的Data block
  • Superblock
  • 记录整个文件系统相关信息的地方
  • 包括Block和Inode的使用情况,时间信息,控制信息等
  • 使用df -T可以查看系统所挂载的磁盘信息
  • 使用dumpe2fs 指定的某一设备 查看文件系统的Inode信息

猜你喜欢

转载自blog.csdn.net/weixin_59624686/article/details/125026410