第七、八章 文件管理

文件和文件系统

文件管理:把所管理的程序和数据组织成一系列的文件,并能进行合理的存储、使用等操作。
1 )基本概念

  • 数据项:描述对象某种属性的字符集;是数据组织中可以命名的最小逻辑数据单位。
  • 记录:一组相关数据项集合,描述对象某方面的属性;
  • 关键字:一个记录中的一个或几个数据项的集合,用于唯一的标识一个记录。
  • 文件:由创建者定义的、具有文件名的一组相关元素的集合。
    - 有结构:由相关记录组成
    - 无结构:字符流的形式
    - 属性:类型、长度、物理位置、创建时间

2 ) 文件类型

  • 按用途:系统、用户、库文件
  • 按数据形式:源文件、目标文件、可执行文件
  • 按存取控制属性:只执行、只读、读写
  • 按组织和处理方式:普通文件、目录文件、特殊(设备)文件

3 )文件系统模型
在这里插入图片描述
在这里插入图片描述

文件的逻辑结构

1)类型:

  • 有结构文件(记录式)
    ①定长记录
    ②变长记录
    如何组织记录:
    顺序文件。系统需按该类型记录“长度”,通常定长
    索引文件。系统需为文件建立索引表。(变长
    索引顺序文件。建索引表,记录每组记录的第一个记录位置。

  • 无结构文件(字符流式)
    字节为单位,利用读写指针依次访问。
    系统对该类文件不需格式处理。

① 顺序文件:

  • 串结构:按记录形成的时间顺序串行排序。记录顺序与关键字无关;
  • 顺序结构:按关键字排序。

检索方法:

  • 从头检索,顺序查找要找的记录,定长的计算相对快。
  • 顺序结构,可用折半查找、插值查找、跳步查找等算法提高效率

优缺点:

  • 不方便随机存取某条记录,但适用批量存取的场合。
  • 适合磁带等特殊介质。
  • 单记录的查找、修改等交互性差;增减不方便

② 索引文件:
为了方便单个记录的随机存取,为文件建立一个索引表,记录每项记录在文件的逻辑地址及记录长度;该索引表按关键字排序

  • 一个索引文件可以有多个索引表
    - 为方便用户根据不同记录属性检索记录,为顺序文件建立多个索引表,每种能成为检索条件的域都配备一张索引表

优缺点:

扫描二维码关注公众号,回复: 4430294 查看本文章
  • 适用于变长记录,可提高检索速度,实现直接存取
  • 索引表增加了存储开销

③ 索引顺序文件:

  • 既要方便,又要降低开销

④ 直接文件:
给定键值(如学号)不需顺序检索直接得到记录的物理地址

外存分配方式

目标:有效利用外存空间,提高文件访问速度
常用三种方式:

  • 连续分配
    - 缺点: 会产生外存碎片、创建文件时要给出文件大小

  • 链接分配(不连续)
    - 优点:离散分配,消除外部碎片,提高利用率、同时适用于文件的动态增长;修改容易

  • 索引分配
    通常一个系统中仅采用一种方式

采用的磁盘分配方式决定了文件的“物理结构”

  • 顺序结构;链接式结构;索引式结构。
  • 注意与逻辑结构名类似但不是一回事

FAT 表的相关计算:

MS-DOS文件分配结构为例:

  • 一个1.2M的磁盘,盘块512B大小;若文件系统采用FAT格式,则FAT表大小如何?
    表项个数 = 盘块个数
    = 容量 / 盘块大小 = 1.2 *220 / 29 = 1.2 *211 个
    表项大小,决定于盘块数量编号需要的位数=12 位;
    FAT表大小 = 表项个数 * 表项大小
    = 1.2 *211 * 12 bit
    = 1.2 *211 * 1.5B = 3.6KB
    以半字节(0.5B=4b)为基本单位,表项需12位(1.5B)

  • 由上述公式,若容量为200M的磁盘,盘块仍为512B,FAT表大小如何?
    FAT表表项有200K≈218 (个)
    表项需20位,即28+4,2.5字节
    FAT表需内存大小为200
    2.5=500KB

多级索引下的文件大小

  • 若两级索引,盘块1KB,盘块号占4字节
    一个盘块可存放的盘块号数有多少个
    1KB/4B = 210/4 = 28 = 256(个)
    二级索引下的文件可分配的最大盘块数
    256 * 256 =26×210=64 K(个)
    文件最大长度为
    64K(个)*1KB=64MB
  • 若盘块大小为4KB,单级索引允许文件最大长度为4MB(4K/44KB),二级索引则文件最大可达4GB(1K1K*4KB)

存储空间的管理

为实现存储空间分配,系统需要:

  • 记住空闲存储空间使用情况;为空间设置相应的数据结构;
  • 提供对存储空间分配、回收的操作手段。
    典型的管理方法
    - 1)空闲表和空闲链表法
    - 2)位示图法
    - 3)成组链接法(UNIX系统)

猜你喜欢

转载自blog.csdn.net/qq_40199634/article/details/84916846