文件管理学习之概念
计算机系统对系统中软件资源:无论是程序或数据、系统软件或应用软件都以文件方式来管理。文件是存贮在某种介质上的(如磁盘、磁带等)并具有文件名的而且在逻辑上具有完整意义的一组有序信息的集合。
文件系统就是操作系统中实现对文件的组织、管理和存取的系统程序,或则说文件系统是管理软件资源的软件,文件系统是用户和外存的接口。文件系统的功能有:
(1)实现文件按文件名存取,实现从文件名到物理存储地址的转换
(2)管理文件存储空间的分配和回收
(3)实现文件的基础操作:新建、删除、修改等操作
(4)实现文件共享和安全性
(5)实现文件目录的管理
(6)向用户提供文件系统的接口
-----------------------------------------------------------------------------------
文件的组织形式和存取方式
文件的组织是指文件的构造方式,从用户观点出发观察到的文件组织结构称为文件的逻辑结构,而文件在外存上的存储组织形式称为文件的物理结构,又称文件的存储结构。
逻辑结构:
由用户确定的文件结构称逻辑文件,逻辑文件从结构上分成二种形式,一种是无结构的流式文件,另一种是有结构的记录式文件。流式文件是指对文件内信息不再划分单位,它是依次的一串字符流构成的文件。记录式文件是用户把文件内的信息按逻辑上独立的含义划分信息单位,每个单位称为一个逻辑记录(简称记录)。所有记录通常都是描述一个实体集的,有着相同或不同数目的数据项,记录的长度可分为定长和不定长记录两类。
记录文件有堆、顺序、索引、索引顺序和直接文件几种。
(1)堆文件(连续结构)。堆文件是最简单的记录文件。数据按先来后到的次序组织,每个记录所包含的数据项是自我标识的,数据项的长度可以明确指定或使用界定符区分。在堆文件中访问所需要的记录需穷尽搜索,这种文件组织不适合大多数应用。
(2)顺序文件。顺序文件的记录定长,记录中的数据项的类型长度与次序固定,一般还有一个可以唯一标识记录的数据项,称为键(key),记录按键值的约定次序组织。顺序文件常用于批处理应用,对于查询或更新某个记录的请求的处理性能不佳。
(3)索引文件。索引文件对主文件中的记录按需要的数据项(一个或几个)建索引表,对记录不需要进行排序。这时记录可为不定长的,它为每个记录设置一个表项。索引文件本身是顺序文件组织。
(4)索引顺序文件(多重结构)。索引顺序文件是基于键的约定次序组织的(先进行按键排序),为之建立一张索引表,为每个不同键值的记录组的第一个记录设置一个表项,为该组的其它记录设置了记录链表,链表记录按顺序文件方式组织。它是顺序文件和索引文件的结合。索引顺序文件既适用于交互方式应用,也适用于批处理方式应用。
(5)直接文件。直接文件又称哈希文件,它可以对记录在直接访问存储设备上的物理地址直接(随机)访问。直接文件常用于需要高速访问文件而且每次访问一条记录的应用中。
逻辑结构的存取方法
用户通过对文件的存取来完成对文件的修改、追加和搜索等操作。常用的存取方法有顺序存取法、随机存取法(直接存取法)和按键存取法三种。顺序存取是按照文件的逻辑地址顺序存取,在记录式文件中,这反映为按记录的排列顺序来存取,在无结构的字符流文件中,顺序存取反映当前读写指针的变化。随机存取法允许用户根据记录的编号来存取文件的任一记录,或者是根据存取命令把读写指针移到欲读写处来读写。按键存取是一种用在复杂文件系统(用索引顺序文件搜索),特别是数据库管理系统中的存取方法,文件的存取是根据给定的键或记录名进行的。UNIX、Linux和Windows等操作系统都采用顺序存取和随机存取两种方法。
文件的物理结构:
文件在存储介质上的组织方式称为文件的存储结构或称为物理结构、物理文件。常用的物理文件有:顺序文件、链接文件、索引文件。
1.顺序文件
把逻辑文件中连续的信息存储到磁盘连续的物理盘块中所形成的文件称为顺序文件。这种文件保证了逻辑文件中逻辑记录(流式文件为逻辑块、页)顺序和存储器中文件占用盘块顺序的一致性。为使系统能查找文件中任一记录,在文件控制块FCB(或在目录)中存放文件第一个记录所存放的盘块号ADRR和文件总的盘块数N。
顺序文件的优点是管理简单,顺序存取速度快。它的缺点是增删记录相当困难,磁盘存储空间的利用率不高,有外零头。所以顺序文件只适用于长度不变的只读文件。
2.链接文件
在将逻辑文件存储到外存上时,不要求为整个文件分配连续的空间,而是可以装入到离散的多个盘块中,只在每个盘块最后一个单元设置链接指针,然后用链接指针将这些物理上离散的逻辑上连续的盘块链接成一个队列,这样形成的物理文件称为链接文件。管理链接文件只需在文件控制块FCB中设二项,一是存储文件头块信息的盘块号,另一是存储文件尾块信息的盘块号。链接文件结构如图5-2所示。
链接文件的优点是盘存储空间利用率高,文件增删改记录方便,它的缺点是在随机存取某一个记录前需要化多次盘I/O操作读该记录前的文件信息以取得该记录的盘块号,才能存取该记录。如要读取逻辑块号第3块的信息,就要先进行3次盘I/O操作以读取存放第3块逻辑块信息的盘块号,所以链接文件只适用于顺序存取文件。
3、索引文件
索引文件是实现非连续存储的另一种方法,系统为加快记录的检索过程,为每个文件建立了一张索引表,每个逻辑块在索引表中占有一个表项,登记存放该逻辑块的盘块号。在FCB中放置了索引表指针,它指向索引表始址。索引表存放在物理盘块中,当索引表很大时,需要用多个盘块,这些盘块也要离散分配。管理有多个盘块的索引表有二种方法:一种方法是将存放索引表的盘块用链接指针链接起来称为链接索引。链接索引可以顺序地读取索引表各索引表项,但读取后面的索引表项类同链接文件需要化费多次盘I/O操作。另一种方法是采用多级索引,即为索引表本身建立索引表,从而形成了两级索引,图5-3所示为两级索引。如所形成的两级索引表还不能存放在一个盘块中,则需要为二级索引表建索引表,而形成三级索引。
系统采用多级索引的级别由系统管理的最大文件所决定。如果每个盘块的大小为4KB,每个盘块号占4B,则一个盘块可有1K个索引表项。一级索引可以管理的最大文件为4KB×1K=4MB, 二级索引可以管理的最大文件为4KB×1K×1K=4GB,而三级索引可以管理的最大文件为4TB。
采用链接索引读取大文件的最前和最后索引表项时需要盘I/O操作次数相差很大,读取第一逻辑块只需一次盘I/O操作即取得所在盘块号,而读取最后逻辑块需要多次才能取得所在盘块号。而对于多级索引,不论对大文件还是小文件,不论是大文件开始或结尾处,读取文件某个逻辑块的盘I/O操作次数是固定的,例如对二级索引要读取文件第N号逻辑块信息,必须根据逻辑块号分别进行三次盘I/O操作,第一次先读取主索引表相应索引表项取得二级索引表项所在盘块号。第二次读二级索引的盘块,读得第N号逻辑块所在盘块号,第三次读取文件第N号逻辑块信息。
索引文件由于它既适合顺序存取记录又适合按任意次序随意存取记录,也便于增删文件的记录,所以索引结构文件应用范围较广。索引文件的缺点是当文件很大时索引表很庞大,占用了许多盘空间,而在文件很小时,多级索引级别又不变,带来索引块的另头和存取速度减慢。
以上是对文件内部结构的解析,当用户查找到相应的文件后,如何访问文件内的内容则必须由文件的逻辑和物理结构所决定。