文件的逻辑结构
从用户角度看文件,由用户的访问方式确定。
逻辑结构:文件内部的数据应该如何组织起来
- 无结构文件:文件内部的数据就是一系列二进制流或字符流组成,又称 流式文件
- 有结构文件:由一组相似的记录组成,又称 记录式文件。每条记录又有若干个数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为 关键字(作为识别不同记录的 ID)。根据每条记录是否等长,又可分为 定长记录 和 可变长记录。
- 顺序文件
- 索引文件
- 索引顺序文件
流式文件:构成文件的基本单位是字符(文件是有逻辑、无结构的一串字符串的集合) 记录式文件:文件由若干个记录组成,可以按记录进行读、写、查找等操作(每条记录有其内部结构)
- 顺序存取(访问)
- 随机存取(访问)
提供读写位置(当前位置),例如:UNIX 的 seek 操作
文件的物理结构
文件的物理结构,又称存储结构,指的是文件在存储介质上的存放方式。
主要解决两个问题:
- 假设一个文件被划分成 N 块,这 N 块在磁盘上是怎么存放的?
- 其地址(块号或簇号)在 FCB 中是怎样记录的?
因为磁盘具有直接访问的特性,所以用磁盘存放文件,有很大的灵活性。
连续结构/顺序结构
文件的信息存放在若干连续的物理块中。
- 优点
- 简单
- 支持顺序存取和随机存取
- 所需的磁盘寻道次数和寻道时间最少
- 可以同时读入多个块,检索一个块也很容易
- 缺点
- 文件不能动态增长(需要为每个文件预留若干物理块以满足文件增长的部分需要)
- 不利于文件插入和删除
- 外部碎片:紧缩技术
链接结构
一个文件的信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块。
- 优点
- 提高磁盘空间利用率,不需要为每个文件预留物理块
- 有利于文件插入和删除
- 有利于文件动态扩充
- 缺点
- 存取速度慢,不适于随机存取
- 当物理块间的连接指针出错时,数据丢失
- 更多的寻道次数和寻道时间
- 链接指针占用一定的空间,降低了空间利用率
索引结构
- 一个文件的信息存放在若干不连续物理块中
- 系统为每个文件建立一个专用数据结构——索引表,并将这些物理块的块号存放在该索引表中
- 索引表就是磁盘块地址数据,其中第 i 个条目指向文件的第 i 块
优缺点:
- 优点
- 既能顺序存取,又能随机存取
- 满足了文件动态增长、插入删除的要求
- 能充分利用磁盘空间
- 缺点
- 较多的寻道次数和寻道时间
- 索引表本身带来了系统开销,如:内存、磁盘空间、存取时间
UNIX的三级索引结构
UNIX 文件系统采用的是多级索引结构(综合模式)
- 每个文件的祝索引表有 15 个索引项(FCB中),每项 2 个字节
- 前 12 项直接存放文件的物理块号(直接寻址)
- 如果文件大于 12 块,则利用 13 项指向一个物理块,在该块中存放的是一个索引表
假设扇区大小大小为 512 字节,物理块等于扇区块大小,以及索引表可以存放 256 个物理块号。