OS(十二):文件管理之 文件的逻辑结构
文件存在两种形式的结构:
逻辑结构:又称为文件组织,用户角度的文件组织形式,用户可直接处理数据及其结构,独立于文件的物理特性。
物理结构:又称为文件的存储结构,值文件在外存上的存储组织形式。
1、文件逻辑结构的类型
文件逻辑结构分为两大类:有结构文件,也被称为记录式文件,由一个以上的记录构成的文件;无结构文件,也被称为流式文件,由字符流构成的文件。
1.1、有结构文件
记录式文件,每个记录都用于描述实体集的一个实体。记录的长度可分为 定长 和 不定长 两类。
·定长记录:文件中所有记录的长度都相同,所有记录中的各数据项都处在记录中相同的位置,具有相同的顺序和长度。
·变长记录:文件中各记录的长度不相同,
常采用组织记录的方式:
·顺序文件:一系列记录按某种顺序排列所形成的文件,定长记录。
·索引文件:记录为可变长度时,建立一张索引表,并为每个记录设置一个表项,以加快对记录检索的速度。
·索引顺序文件:为文件建立一张索引表,为每一组记录中的第一个记录设置一个表项。
1.2、无结构文件
源程序、可执行文件、库函数等,采用的就是无结构的文件形式,即流式文件。长度以字节为单位。对流式文件的访问,采用读/写指针来指出下一个要访问的字符。
2、顺序文件(Sequential File)
2.1、逻辑记录的排序
文件是记录的集合,可按照不同的顺序进行排列。可归纳为两种:
串结构,各记录之间的顺序与关键字无关。
顺序结构,文件中的所有记录按关键字排列。顺序结构文件有更高的教唆效率。
2.2、对顺序文件的读/写操作
读一个文件时,设置读指针Rptr,令它指向下一个记录的首地址,每当读完一个记录时,便执行 Rptr = Rptr + L 操作,使指向下一个记录的首地址,L为记录长度。
写一个文件时,设置写指针Wptr,令它指向要写的记录的首地址,每当写完一个记录时,便执行 Wptr = Wptr + L 操作,L为记录长度。
对于变长记录的顺序文件,在顺序读或写时,分别为他们设置读或写指针,每次读或写完一个记录后,将读或写指针加上L,L为记录的长度。
2.3、优缺点
顺序文件适用于对记录进行批量存取,顺序文件的存取效率是所有逻辑文件中最高的。
查找或修改单个记录,逐个查找记录,性能差;增加或删除一个记录较为困难。
3、索引文件(Index File)
对于变长记录文件,建立一张索引表,对主文件中的每个记录,在索引表中舍友一个相应的表项,用于记录该记录的长度L及指向该记录的指针(指向该记录在逻辑空间的首址)。
索引表是按记录键排序,索引表本身是一个定长记录的顺序文件,方便的实现直接存取。
索引文件的组织形式:
对索引文件检索时,根据用户提供的关键字,利用折半查找法去检索索引表,从中找到相应的表项;再利用该表项中给出的指向记录的指针值,去访问锁需的记录。
4、索引顺序文件
索引顺序文件,是顺序文件和索引文件的产物,将顺序文件中的所有记录分为若干个组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录键值和指向该记录的指针。