文件和文件系统
文件管理:把所管理的程序和数据组织成一系列的文件,并能进行合理的存储、使用等操作。
1 )基本概念
- 数据项:描述对象某种属性的字符集;是数据组织中可以命名的最小逻辑数据单位。
- 记录:一组相关数据项集合,描述对象某方面的属性;
- 关键字:一个记录中的一个或几个数据项的集合,用于唯一的标识一个记录。
- 文件:由创建者定义的、具有文件名的一组相关元素的集合。
- 有结构:由相关记录组成
- 无结构:字符流的形式
- 属性:类型、长度、物理位置、创建时间
2 ) 文件类型
- 按用途:系统、用户、库文件
- 按数据形式:源文件、目标文件、可执行文件
- 按存取控制属性:只执行、只读、读写
- 按组织和处理方式:普通文件、目录文件、特殊(设备)文件
3 )文件系统模型
文件的逻辑结构
1)类型:
-
有结构文件(记录式)
①定长记录
②变长记录
如何组织记录:
顺序文件。系统需按该类型记录“长度”,通常定长。
索引文件。系统需为文件建立索引表。(变长)
索引顺序文件。建索引表,记录每组记录的第一个记录位置。 -
无结构文件(字符流式)
字节为单位,利用读写指针依次访问。
系统对该类文件不需格式处理。
① 顺序文件:
- 串结构:按记录形成的时间顺序串行排序。记录顺序与关键字无关;
- 顺序结构:按关键字排序。
检索方法:
- 从头检索,顺序查找要找的记录,定长的计算相对快。
- 顺序结构,可用折半查找、插值查找、跳步查找等算法提高效率
优缺点:
- 不方便随机存取某条记录,但适用批量存取的场合。
- 适合磁带等特殊介质。
- 单记录的查找、修改等交互性差;增减不方便
② 索引文件:
为了方便单个记录的随机存取,为文件建立一个索引表,记录每项记录在文件的逻辑地址及记录长度;该索引表按关键字排序
- 一个索引文件可以有多个索引表
- 为方便用户根据不同记录属性检索记录,为顺序文件建立多个索引表,每种能成为检索条件的域都配备一张索引表
优缺点:
- 适用于变长记录,可提高检索速度,实现直接存取
- 索引表增加了存储开销
③ 索引顺序文件:
- 既要方便,又要降低开销
④ 直接文件:
给定键值(如学号)不需顺序检索直接得到记录的物理地址
外存分配方式
目标:有效利用外存空间,提高文件访问速度
常用三种方式:
-
连续分配
- 缺点: 会产生外存碎片、创建文件时要给出文件大小 -
链接分配(不连续)
- 优点:离散分配,消除外部碎片,提高利用率、同时适用于文件的动态增长;修改容易 -
索引分配
通常一个系统中仅采用一种方式
采用的磁盘分配方式决定了文件的“物理结构”
- 顺序结构;链接式结构;索引式结构。
- 注意与逻辑结构名类似但不是一回事
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表需内存大小为2002.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系统)