文件系统

文件系统

在这里插入图片描述

什么是文件系统?
  • 文件:文件是有名字的记录在外存中的一组有逻辑意义的数据项序列。(数据项:构成文件内容的基本单位。各数据项之间具有顺序关系)
  • 文件系统:OS用来管理文件的那一部分软件。
  • 文件系统有什么用:
    ---- 统一管理文件的存储空间,实施存储空间的分配与回收 + 实现文件信息的共享,提供文件的保护和保密措施 + 实现文件的按名访问(访问的透明性:用户不用关心文件的物理位置和存储结构) + 向用户提供一个方便的接口,提供对文件系统操作的命令 + 提供I/O的统一接口
  • 如何看待文件系统?
    ---- 用户观点:(尽可能方便用户使用)文件系统如何呈现在用户面前:一个文件由什么组成、如何命名、如何保护文件、如何对文件进行操作
    ---- 系统观点: (尽可能提高时间/空间效率)文件目录怎样实现、怎样管理文件存储空间、文件的存储位置、与设备的接口…
文件的结构和存取方式
  • 文件结构
    • 文件的逻辑结构 : 字节流文件 + 记录文件
      ---- 字节流文件(无结构文件):一个无结构的字节序列,其含义由使用者解释,非常灵活
      ---- 记录文件(有结构文件):记录的序列,每条记录有其内部结构,定长/不定长
    • 文件的物理结构: 连续结构(顺序结构)+链式结构(串联结构)+ 索引结构
      ---- 文件的存取结构是指文件在外存上的存放方式,即从系统的角度看文件的组织方式。
文件存取结构连续结构链式结构文件分配表FAT索引结构
含义文件的数据存放在若干连续的物理块中一个文件的数据块存放在若干不连续的物理块中,各块之间通过指针相连,每个物理块指向下一个物理块链式结构的变形:一般以簇为单位分配空间,簇由若干连续的物理块组成。磁盘的每个分区包含一个FAT,分区中的每个盘块在其中占有1块,指出文件的下一块的块号一个文件的数据存放在若干不连续的物理块中,系统为每个文件建立一个专用数据结构----索引表。索引表存放逻辑块号和物理块号的对应关系,一个索引表就是磁盘块地址数组。文件目录的目录项中指出索引表的物理地址
文件目录内容文件名+起始地址+块数文件名+起始地址+末地址文件名+起始地址(FAT:起始地址 和 对应的物理块文件名+索引表地址(索引表:磁盘块地址(块号)数组)
优点实现简单,只需记住首块的地址和文件长度即可;支持顺序存取和随机存取;顺序存取速度快;所需要磁盘寻道时间少提高了磁盘的利用率;解决了外部碎片的问题;有利于文件的插入和删除;有利于文件的动态扩充减少了读盘次数既能顺序存取又能随机存取;能满足文件的动态扩充、插入、删除;能充分利用外存空间
缺点不利于文件的动态增长;不利于文件内容的插入和删除;存在外部碎片问题随机访存相当缓慢;需要更多的寻道时间;链接指针占用一定的空间FAT占用外存索引表本身带来了系统开销
应用一般适合只读文件,不修改随机存取效率太低,一般不用小文件的索引表保存在一个单独的物理块中;大文件的索引表若超过一个物理块,则需考虑索引表的组织方式:连续方式、链接方式、多级索引
  • 存取方式
    ---- 顺序存取
    ---- 随机存取
    ---- 按键(key)存取
文件目录
  • 文件控制块FCB(也称文件说明或文件目录项),文件控制块是文件存在的标志
    ---- 文件控制块的内容:基本信息(文件名、地址(起始物理块号)、长度、结构、类型)+ 存取控制信息(文件属主、存取权限)+使用信息(共享计数、文件的建立、修改日期)
  • 把所有的FCB组织在一起就构成了文件目录
  • 为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存中,这个文件就叫目录文件,查目录是文件系统最频繁的操作
  • 目录结构:单级目录结构 + 二级目录结构 + 多级目录结构(树型目录:层次结构清晰,便于管理和保护;有利于文件分类;能很好地避免重名问题;提高了文件检索速度;有利于访问权限的控制)
  • 访问文件的步骤:目录检索 + 文件寻址
  • 文件目录的实现:
    • 把文件说明信息(FCB)都放在目录项中
    • 目录项分解法:符号目录项 (文件名,文件号(基本目录项编号))+ 基本目录项
      ---- 目录项分解法的经典实现:①符号文件目录+基本文件目录 ②目录项+I节点(Unix/Linux采用此方法,它把符号目录项称为目录项,而把基本目录项称为I节点,目录项中的文件号就是I节点号)
    • Hash表
    • B+树
空闲存储空间的管理
  • 空闲块表
  • 空闲块链(实现:①每个空闲块中指出下一空闲块的块号+②采用多个空闲块构成的链表存放空闲块号)
  • 位图
文件的使用、共享和保护
  • 文件的使用
    • 基本操作:打开、关闭、读、写文件
      ---- Open():把文件说明信息装入内存,便于以后的快速访问(找到相应文件的目录项,检查权限 – 将FCB装入内存 – 分配一个文件ID,便于后续对文件的操作)
      ---- Close():释放FCB所占内存空间–将文件缓冲区已修改的内容写回文件
  • 文件共享
    • 普通的文件共享方法:按路径名访问共享文件 + 链接法 +基本文件目录BFD
    • 基于I节点的文件共享方法(Unix采用)
      ---- 硬链接
      ---- 符号链接
  • 文件保护
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值