十五、文件管理(一)

主要内容

  • 文件和文件系统
  • 文件管理要素
  • 文件命名和分类
  • 文件目录
  • 文件逻辑结构和存储方式

10.1 文件和文件系统

10.1.1 文件系统的引入
  • 所有的计算机应用程序都需要:存储信息、检索信息
  • 三个基本要求
    • 能够存储大量的信息(程序的输入/输出)
    • 长期保存信息(不会随用户注销和关系而丢失)
    • 可以共享(并发存取)信息
  • 把信息以一种单元,即文件的形式存储在磁盘、U盘、存储卡、固态硬盘或其他介质上
  • 文件是通过操作系统来管理的,包括文件的结构、命名、存取、使用、保护和实现等方法————文件(管理)系统
  • 文件典型操作:创建/删除、打开/关闭、读写
10.1.2 文件结构
  • 文件相关术语
    • 字段/域(field):基本数据单元(数据类型、长度,如姓名、年龄)
    • 记录(record):一组相关的域(如雇员的信息)
    • 文件(file):相似记录的集合(通过名字访问的实体)
    • 数据库(database):相关数据的集合(由若干类型文件组成)
  • 文件是一个抽象机制
  • 它提供了一种把信息保存在存储介质上,而且便于以后访问/存取分方法
  • 用户不必关心实现细节
文件
  • 文件:带标识(称为文件名)的在逻辑上有完整意义的一组信息项序列
    • 信息项:构成文件内容的基本单位
    • 信息项长度:单个或多个字节
    • 文件内容的意义:由文件的创建者和使用者解释
      image
10.1.3 文件[管理]系统
  • 文件系统:操作系统中管理文件的模块,提供文件存储和访问功能
  • 文件管理的目的:
    • 方便的文件访问和控制:以符号名为文件标识,便于用户使用
    • 并发文件访问和控制:在多道系统中支持对文件的并发访问和控制
    • 统一的用户接口:在不同设备(硬盘/U盘/光盘)上提供同样的接口,方便用户操作和编程
    • 多种文件访问权限:在多用户系统中的不同用户对同一文件会有不同的访问权限
    • 优化性能:存储效率、检索性能、读写性能
    • 差错恢复:能够验证文件的正确性,并具有一定的差错恢复能力
10.1.4 文件系统软件结构

image

10.1.5 文件管理要素

image

10.1.6 文件管理功能
  • 文件管理系统要向上层用户提供的服务元素
    • 文件命名:作为文件标识
    • 访问控制:并发访问和用户权限
    • 文件结构管理:划分记录、顺序、索引
    • 目录管理:用于文件访问和控制的信息,不包括文件内容
    • 文件操作:文件的创建、打开、读写和关闭
    • 文件存取:用于完成文件的修改、追加、搜索等操作
    • 限额(quota):限制每个用户能够创建的文件数目、占用外存空间大小等
    • 审计(auditing):记录对指定文件的使用信息(如访问时间和用户等),保存在日志中
  • 有关操作系统实现的功能元素
    • 文件的分块存储:与外存的存储块相配合
    • I/O缓冲和调度:性能优化
    • 文件分配:在外存上分配文件的各个存储块
    • 外存存储空间管理:包括外存空闲存储块的管理,如分配和释放。主要针对可改写的外存(如磁盘)
    • 外存设备的访问和控制:包括由设备驱动程序支持的各种基本文件系统如磁盘、软盘、光盘等
10.1.7 文件的命名
  • 文件命名规则
    • 长度
    • 合法字符(是否区分大小写)
    • 扩展名的支持(一个或多个)
      • 例子
        • .bak .c .exe .gif .hlp .html .mpg
        • .0 .ps .tex .txt .zip
  • 按文件性质和用途分:
    • 系统文件:有关OS及有关系统所组成的文件
    • 库文件:标准子程序及常用应用程序组成的文件,允许用户使用但不能修改
    • 用户文件
  • 按信息保存期限分:临时文件、永久文件、档案文件
  • 按文件保护方式分:只读文件、读写文件、可执行文件
  • 按文件的逻辑结构分:流式(无结构)文件、记录式(结构化)文件等
  • 按文件的物理结构分:顺序(连续)文件、链接文件、索引文件

10.2 文件组织与访问

  • 文件组织指的是文件的逻辑结构
    • 从用户角度来看文件,研究文件的组织形式
    • 它可以独立于外存上的物理存储
  • 文件逻辑结构的设计要求(原则)
    • 访问性能:访问快速(便于检索)、易于修改
    • 存储性能:节省空间、维护简单(向物理存储访问方便)、可靠
  • 常见的文件组织结构
    • 字节序列:即是无结构(字符流、流式文件)
    • 记录序列:每个记录大小相等或不等(结构化文件,如数据库)
      • 堆(顺序堆积,不等长记录)
      • 顺序文件(最常用,等长记录、按关键域、字段顺序组织,查询和更新性能差【改进:新纪录入堆、链表】)
      • 索引顺序文件
      • 索引文件
      • 直接文件或者散列文件
10.2.1 五种基本文件组织的性能等级

image

10.2.2 存取方式
  • 顺序存取
    • 从开始处顺序读取文件中的全部字节或者记录,不能跳过某些内容
    • 适合老式磁带文件
  • 随机(直接)存取
    • 可以非顺序或按关键字读取文件中的字节或者记录
    • 现代OS中文件创建后都为随机存储文件
10.2.3 字节序列
  • 构成文件的基本单位是字节,文件是一个无结构的字节序列,其逻辑意义由用户程序解释
  • 管理简单,提供很大的灵活性
  • 不便于检索
  • Unix、MS-DOS 中采用
    image
10.2.4 堆
  • 数据按它们的到达顺序收集
  • 目的是积累并存储大量数据
    • 记录可能有不同的域
    • 没有结构,通过特定的分隔符划分记录
    • 通过穷举搜索访问记录
  • 如:日志log、电子邮件的邮箱文件mailbox
    image
10.2.5 顺序文件
  • 记录格式固定
    • 字段的大小和顺序固定
    • 关键字段唯一
    • 记录按关键字顺序存储
  • 特点
    • 通常用于批处理应用(如账目)
    • 容易在磁盘和磁带上存储
    • 可组织成链表
  • 随机访问性能差
    • 必须顺序搜索
    • 插入新纪录很难(可采用日志或事务文件来解决)
      image
10.2.6 索引顺序文件
  • 记录仍然按关键字的顺序组织
  • 增加了索引以提高随机查找速度
    • 索引文件是顺序索引
    • 可以有多级索引
    • 索引文件中的每个记录由两个字段组成————关键字段和指向主文件的指针
  • 溢出区用来处理新纪录
    • 主文件在每个记录中增加一个附加字段,保存指向溢出区中新纪录的指针,初始化为空
    • 新纪录添加到溢出区
    • 修改主文件中在逻辑顺序位于该新纪录前的记录中的附加字段,使其指向溢出区中的新加记录
    • 溢出区以批处理方式合并到主文件
      image
      image
10.2.7 索引文件
  • 可以有多个索引
    • 为每个可能搜索的字段设置一个索引
  • 只通过索引来访问记录
    • 索引可以是完全索引或部分索引
  • 记录大小不必相同、不必排序
    • 索引指针可指向文件中的任意位置
  • 主要用于强调速度但很少会处理文件中所有数据的场合
    image
10.2.8 散列文件
  • 使用关键字的散列查找记录
  • 没有顺序存储的概念
  • 常用于要求快速访问记录的情形

10.2.9 B树

  • 对于大型文件/数据库,仅仅靠主键进行索引的顺序文件,访问速度慢
  • 提高访问效率的方法————使用结构化的索引文件
  • 多层树状结构————分支长短不一,导致搜索时间不均衡
  • B树————平衡树状结构,是数据库中组织索引的标准方法

10.3 文件目录

  • 从文件管理角度来看,文件由文件体(文件本身的信息,数据)和文件说明组成(元数据)
  • 文件说明(也称文件控制块)是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有相关信息
  • FAT文件系统中[32B长]的目录项/文件条目
    • 文件控制块是文件存在的标志
10.3.1 目录
  • 把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合
  • 一个FCB就称作一个目录项
  • 通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件(OS所有)
  • 主要功能是建立从文件名到文件内容的映射
10.3.2 目录内容
  • 目录中的部分内容是用户可获取的文件属性
  • 基本信息
    • 文件名:字符串,不同系统有不同命名规则;可以修改;有些系统允许一个文件有多个别名
    • 文件类型:可有多种不同划分方法
    • 文件结构(如顺序、索引等)
    • 文件类型:可以有多种不同划分方法,如:
      • 有无结构(记录文件/流式文件)
      • 内容(二进制/文本)
      • 用途(源代码/目标代码/可执行文件/数据/音频/视频)
      • 属性(如系统/隐含等)
  • 文件结构(如顺序、索引等)
  • 地址信息
    • 存放位置:包括哪个设备或文件卷(如C:、D:等)、起始位置、以及各个存储块位置
    • 文件长度(当前和上限):以字节、字或存储块为单位,可以通过写入或创建、打开、关闭等操作而改变
  • 访问控制信息
    • 文件的所有者:通常是创建文件的用户,或者改变已有文件的属主
    • 访问权限(控制各用户可使用的访问方式):如读、写、执行、删除等
  • 使用信息
    • 创建时间(FAT有)
    • 最晚一次读访问的时间(新FAT有访问日期,NTFS有访问时间)和用户(FAT和NTFS无)
    • 最晚一次写访问的时间(新FAT和NTFS都有)和用户(FAT和NTFS无)
10.3.3 目录操作
  • 文件访问的两大步骤
    • 目录检索(根据用户给出的文件名,按名寻找目录项)
    • 文件寻址(根据目录项中的文件物理地址等信息,计算出文件的任意记录或字节在存储介质上的地址)
  • 目录上执行操作的类型
    • 查找文件项(打开)
    • 创建新文件
    • 删除文件
    • 列出目录中的文件
    • 修改目录中的文件
10.3.4 目录结构
  • 目录的设计目标主要是提高检索效率
  • 常见目录结构
    • 一级目录
    • 二级目录
    • 多级目录
    • 改进的多级目录
10.3.5 一级目录
  • 整个目录组织是一个线性结构
  • 系统中的所有文件都建立在一张目录表中
    • 如CP、M、DOS 1.0、Orang's
  • 主要用于非常简单的单用户操作系统
    image
  • 优缺点
    • 结构简单、容易实现
    • 文件多时目录检索时间长,从而平均检索时间长
    • 有命名冲突:如多个文件有相同的文件名(不同用户的相同作用的文件)或一个文件有多个不同的文件名(不同用户对同一文件的命名)
10.3.6 二级目录
  • 在根目录(第一级目录,主文件目录MFD)下,每个用户对应一个目录(第二级目录,用户文件目录UFD)
  • 用户目录下是该用户的文件,而不再有下级目录
    image
  • 适用于多用户系统,各用户可有自己的专用目录
  • 优缺点
    • 降低了平均检索时间
    • 部分克服了命名冲突问题
    • 不利于用户对文件的分类管理
10.3.7 多级目录
  • 采用层次结构
  • 每个用户可在其用户目录下自主创建若干层次的子目录(树)
  • 也称为树形目录
  • 当前主流OS采用
    image
    image
  • 几个与目录相关的概念
    • 目录名:可以修改
    • 目录树:中间节点是目录,叶节点是目录或者文件
    • 目录的上下级关系:
      • 当前目录,一般用单个句点表示:.
      • 父目录,一般用双句点表示:..
      • 子目录
      • 根目录,一般用单斜线表示:/(类Unix)、\(DOS&Windows)
  • 优缺点
    • 层次结构清晰、便于管理和保护,适用于较大的文件系统
    • 解决了命名冲突问题
    • 目录级别太多时,会增加路径检索时间(目录文件存放在外存)
10.3.8 改进的多级目录
  • 为了提高目录检索速度,可以把目录项(FCB,文件控制块)中的文件说明(文件描述符)信息分成两个部分:
    • 符号目录项(次部):文件名、文件内部标识号
    • 基本目录项BFCB(主部):其他文件说明信息
      image
  • 把符号目录项构成的符号文件目录组织成树状结构,按文件名排序
  • 把基本目录项构成的基本文件目录组织成线性结构,按文件内部标识排序
    image
  • 举例
    • 设一个FCB有48个字节,其中文件名6字节,文件号2字节(所以符号目录项占8字节)
    • 一个目录文件有128个目录项
    • 物理块(扇区)大小512字节
    • 分解前
      • 一个物理块(扇区)可放512/48=10个FCB,则目录文件共占13个物理块
      • 查找一个文件的平均访问磁盘次数为(1+13)/2=7次
    • 分解后:
      • 一个物理块可放512/8=64个符号目录项
      • 或512/40=12个基本目录项
      • 符号目录项占2个物理块,基本目录文件占11个物理块
      • 查找一个文件的平均访盘次数为(1+2)/2+1=2.5次
posted @ 2024-12-25 13:02  韦飞  阅读(125)  评论(0)    收藏  举报