文件存储方式 :
- 连续空间存放方式
- 非连续空间存放方式
非连续空间存放方式分 : 链表方式 , 索引方式
方式 | 访问磁盘次数 | 优点 | 缺点 |
---|---|---|---|
顺序分配 | 访问磁盘1次 | 顺序存取速度快,当文件定长时 , 能根据文件起始地址 , 记录长度进行随机访问 | 要求连续的存储空间,会产生外部碎片,不利于文件的动态扩充 |
链表分配 | 访问磁盘 n 次 | 无外部碎片,提高了外存空间的利用率,动态增长较方便 | 只能按文件指针链顺序访问,查找效率低,指针信息存放消耗内存或磁盘空间 |
索引分配 | m 级需访问磁盘 m + 1次 | 随机访问,易文件增删 | 引表增加存储空间的开销 , 索引表的查找策略对文件系统效率影响较大 |
连续空间
连续空间存放方式 : 连续放在磁盘上 , 读写效率高
缺点 :
- 磁盘空间碎片 : 空缺数据 与申请数据不匹配
- 文件长度不易扩展 : 扩大文件 , 要移动数据 , 效率较低
非连续空间
链表
链表方式 : 离散,不连续
- 好处 : 提高磁盘空间的利用率,文件长度能动态扩展
链表实现方式 : 隐式链表 , 显式链接
隐式链表的实现方式 : 文件头中有第一块 , 最后一块位置
- 每个数据块都空出一个指针空间,存放下个数据块的位置
缺点 :
- 无法直接访问数据块,只能通过指针顺序访问文件
- 数据块指针消耗一定存储空间
- 稳定性较差,当链表的指针丢失,会导致数据丢失
显式链接 : 链接文件各数据块的指针,放在内存的链接表 (文件分配表 (File Allocation Table , FAT) ) 中
在内存中查找记录 :
- 优点 : 提高了检索速度,减少访问磁盘的次数
- 缺点 : 不适用大磁盘
索引
索引实现 : 给每个文件创建个索引数据块,存放指向文件数据块的指针列表
- 通过文件头的索引数据块指针,找到索引数据块的位置,再通过索引数据块的索引信息找到对应的数据块
索引优点 :
- 文件的创建、增大、缩小很方便
- 无碎片问题
- 支持顺序读写 , 随机读写
- 缺点 : 存储索引开销
大文件 , 索引数据块放不下 , 用组合处理
链式索引块 : 链表 + 索引
- 实现方式 : 在索引数据块中留出存放下一个索引数据块的指针 , 用完 , 找下个存放
多级索引块 : 索引 + 索引方式
- 实现方式 : 索引块放多个索引数据块