浅谈文件的逻辑结构

文件的逻辑结构

文件的两种逻辑结构

  从用户观点出发观察到的文件组织结构称为文件的逻辑结构,逻辑结构的文件称逻辑文件。

(1)流式文件(无结构文件)

  把文件视为有序的字符集合,其内部不再对信息进行组织划分,是依次的一串字符流构成的文件。
   文件没有结构,由一串字符流构成。文件的长度以字节为单位,可以把流式文件看做记录式文件的一个特例:一个记录仅有一个字节。如源程序、可执行文件、库函数等。

(2)记录式文件(有结构文件)

   用户把文件内的信息按逻辑上独立的含义划分信息单位,每个单位称为一个逻辑记录(简称记录),称这种文件的逻辑结构为“记录式文件”。
  记录式文件中,每个记录都用于描述实体集中的一个实体,各记录有着相同或不同数目的数据项。
  记录 :能被某些应用程序处理的相关字段的集合, 由相同或者不同的数据项组成。
  记录号:在记录式文件中,每个记录顺序编号
  主关键字:记录文件中,总有一个数据项能够唯一地标识记录
   次关键字:记录中的其他项,利用次关键字可以对文件中的记录进行分类。
  有结构的记录式文件:由一个以上的记录构成。
  记录的长度:定长、不定长两类。

有结构文件分类

  记录式文件记录文件有顺序、索引、索引顺序、直接、分区和堆文件几种。

(1)顺序文件

  文件是记录的集合,文件中的记录按照各种不同的顺序进行排列。
  1. 串结构,记录之间的顺序与关键字无关,通常按照时间先后顺序,最先存入的记录作为第一个记录,其次,为第二个记录,以此类推。
  2. 顺序结构,文件中所有记录按照关键字排序,可以按照关键词长度从大到小排序。顺序结构的检索效率更高。
顺序文件的最佳应用场合是在对诸记录进行批量存取时,即每次要读或写一大批记录时,此时,对顺序文件的存取效率是所有逻辑文件中最高的,此外,只有顺序文件才能存储在磁带上,并能有效工作。但是想要查找单个记录或增加删除一个文件比较困难。

(2)索引文件(Indexed File)

  对于定长记录文件,可以方便的实现顺序存取和直接存取,然而,对于变长记录就很难实现。为了解决变长记录检索问题,可为变长记录文件建立一张索引表,对主文件中的每个记录,在索引表中设有一个相应的表项,用于记录该记录的长度 L 及指向该记录的指针(指向该记录在逻辑地址空间的首址),由于索引表按记录键排序的,因此,索引表本身就是一个定长记录的顺序文件。从而可以方便实现直接存取。索引表和文件是一一对应的。
  由于是按照关键字进行建立的索引,所以在对索引文件进行检索时,首先根据用户(程序)提供的关键字,并利用折半查找检索索引表,从中找到相应的表项,再利用该表项给出的指向记录的指针值,去访问所需的记录。每当要向索引文件中增加一个新纪录时,便须对索引表进行修改。索引表的问题在于除了有主文件外,还需要配置一张索引表,每个记录需要有一个索引项,因此,提高了存储的费用。
  优点:拥有较快的检索速度,适用于对及时性要求比较高的场合。

(3)索引顺序文件(Indexed Sequential File)

   索引顺序文件是顺序文件和索引文件相结合的产物。它将顺序文件中的所有记录分为若干个组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录的键值和指向记录的指针。它有效克服了变长记录不便于直接存取的缺点,而且所付出的代价也不算太大。
  在对索引顺序文件进行检索时,首先利用用户(程序)所提供的关键字及某种查找算法去检索索引表,找到该记录组中的第一个记录的表项,从中得到该记录组第一个记录在主文件中的位置,然后,再利用顺序查找法去查找主文件,从中找出所要求的记录。

(4)直接文件

   直接文件,根据给定的记录键值,直接获得指定记录的物理地址,换言之,记录键值本身就决定了记录的物理地址,这种由记录键值到记录物理地址的转换被称为键值转换。

(5)哈希文件(Hashed File)—应用最广泛的一种直接文件

  利用Hash函数可将记录键值转换为相应记录的地址,为了能实现文件存储空间的动态分配,通常由Hash函数所求得的并非是相应记录的地址,而是指向一目录表相应表目的指针,该表目的内容指向相应记录所在的物理块。

文件的存取方法

   用户通过对文件的存取来完成对文件的修改、追加和搜索等操作。常用的存取方法有顺序存取法、随机存取法(直接存取法)和按键存取法三种。
  顺序存取法是按照文件的逻辑地址顺序存取,在记录式文件中,这反映为按记录的排列顺序来存取,在无结构的字符流文件中,顺序存取反映当前读写指针的变化。
   随机存取法允许用户根据记录的编号来存取文件的任一记录,或者是根据存取命令把读写指针移到欲读写处来读写。
   按键存取法是一种用在复杂文件系统,特别是数据库管理系统中的存取方法,文件的存取是根据给定的键或记录名进行的。
   UNIX、Linux和Windows等操作系统都采用顺序存取和随机存取两种方法。

文件的物理结构

   文件在存储介质上的组织方式称为文件的存储结构或称文件的物理结构、物理文件。
   外存分配方法有连续分配、链接分配、索引分配,相应物理文件有:顺序文件、链接文件、索引文件。

(1)连续分配—顺序文件

   把逻辑文件中连续的信息存储到磁盘连续的物理盘块中所形成的文件称为顺序文件。这种文件保证了逻辑文件中逻辑记录(流式文件为逻辑块、页)顺序和存储器中文件占用盘块顺序的一致性。为使系统能查找文件中任一记录,在文件控制块FCB(或在目录)中存放文件第一个记录所存放的盘块号和文件总的盘块数N。
  优点是管理简单,顺序存取速度快。缺点是增删记录相当困难,磁盘存储空间的利用率不高,有外零头。
   顺序文件只适用于长度不变的只读文件。

(2)链接分配 —链接文件

  在将逻辑文件存储到外存上时,不要求为整个文件分配连续的空间,而是可以装入到离散的多个盘块中,只在每个盘块最后一个单元设置链接指针(这称为隐式链接) ,然后用链接指针将这些离散的盘块链接成一个队列,这样形成的物理文件称为链接文件。管理链接文件只需在文件控制块FCB中设二项,一是存储文件头块信息的盘块号,另一是存储文件尾块信息的盘块号。
  链接文件的优点是盘存储空间利用率高,文件增删改记录方便。缺点是在随机存取某一个记录前需要多次I/O操作读该记录前的文件信息以取得该记录的盘块号,才能存取该记录。如要读取逻辑块号第3块的信息,就要先进行3次盘I/O操作以读取存放第3块逻辑块信息的盘块号,所以链接文件只适用于顺序存取文件。链接文件优化—FAT表结构。

(3)索引分配 —索引文件

   索引文件是实现非连续存储的另一种方法,系统为加快记录的检索过程,为每个文件建立了一张索引表,每个逻辑块在索引表中占有一个表项,登记存放该逻辑块的盘块号。在FCB中放置了索引表指针,它指向索引表始址,索引表存放在盘块中。
  索引文件由于它既适合顺序存取记录又适合按任意次序随意存取记录,也便于增删文件的记录,所以索引结构文件应用范围较广。
  索引文件的缺点是当文件很大时索引表很庞大,占用了许多盘空间,而在文件很小时,多级索引级别又不变,带来索引块的另头和存取速度减慢。

你可能感兴趣的:(计算机操作系统)