文件逻辑结构

Android流式历史文本记录_搜索

按文件是否有结构分类,可以分为无结构文件、有结构文件两种

  • 无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”
  • 如Windows操作系统中的.txt文件
  • 有结构文件:由一组相似的记录组成,又称“记录式文件”。每条记录由若千个数据项组成。一般来说,每条记录有一个数据项可作为关键字。根据各条记录的长度(占用的存储空间)是否相等,又可分为定长记录和可变长记录两种
  • 如:数据库表文件

有结构文件

顺序文件

顺序文件指文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储

  • 顺序文件的缺点是增加/删除一个记录比较困难(如果是串结构则相对简单)

Android流式历史文本记录_搜索_02

Android流式历史文本记录_搜索_03

索引文件

Android流式历史文本记录_搜索_04

索引顺序文件

Android流式历史文本记录_搜索_05

Android流式历史文本记录_目录结构_06

多级索引顺序文件

Android流式历史文本记录_目录结构_07


文件目录

文件控制块

Android流式历史文本记录_Android流式历史文本记录_08

需要对目录进行哪些操作?

  • 搜索:当用户要使用一个文件时,系统要根据文件名搜索目录,找到该文件对应的目录项
  • 创建文件:创建一个新文件时,需要在其所属的目录中增加一个目录项
  • 删除文件:当删除一个文件时,需要在目录中删除相应的目录项
  • 显示目录:用户可以请求显示目录的内容,如显示该目录中的所有文件及相应属性
  • 修改目录:某些文件属性保存在目录中,因此这些属性变化时需要修改相应的目录项(如:文件重命名)

索引结点(FCB改进)

Android流式历史文本记录_Android流式历史文本记录_09

Android流式历史文本记录_搜索_10

目录结构

单级目录结构

Android流式历史文本记录_目录结构_11

两级目录结构

Android流式历史文本记录_搜索_12

多级目录结构(树形目录结构)

Android流式历史文本记录_顺序文件_13

Android流式历史文本记录_顺序文件_14

无环图目录结构

Android流式历史文本记录_目录结构_15


文件物理结构

Android流式历史文本记录_Android流式历史文本记录_16

文件分配方式

连续分配

Android流式历史文本记录_搜索_17

  • 连续分配的文件在顺序读/写时速度最快
  • 物理上采用连续分配的文件不方便拓展
  • 物理上采用连续分配,存储空间利用率低,会产生难以利用的磁盘碎片可以用紧凑来处理碎片,但是需要耗费很大的时间代价

链接分配

链接分配采取离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接和显式链接两种

Android流式历史文本记录_搜索_18

隐式链接

Android流式历史文本记录_顺序文件_19

采用隐式链接的链接分配方式,很方便文件拓展。另外,所有的空闲磁盘块都可以被利用,不会有碎片问题,外存利用率高

显示链接

Android流式历史文本记录_搜索_20

Android流式历史文本记录_目录结构_21

索引分配

Android流式历史文本记录_顺序文件_22

Android流式历史文本记录_搜索_23

Android流式历史文本记录_Android流式历史文本记录_24

Android流式历史文本记录_Android流式历史文本记录_25

链接方案

Android流式历史文本记录_顺序文件_26

多层索引

Android流式历史文本记录_Android流式历史文本记录_27

采用K层索引结构,且顶级索引表未调入内存,则访问一个数据块只需要K+1次读磁盘操作

混合索引

Android流式历史文本记录_搜索_28