h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; font-size: 18pt; }h1.cjk { font-family: "微软雅黑"; font-size: 18pt; }h1.ctl { font-family: "AR PL UMing CN"; font-size: 18pt; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }p { margin-bottom: 0.25cm; line-height: 120%; }
文件管理
--文件系统基础
一、文件的概念
1.文件定义
文件是具有符号名的一组信息的集合。
2.文件属性
文件的属性是指与文件记录的数据相关的所有相关信息,包括:
基本信息:文件名,文件别名,文件类型等;
存储地址信息:文件物理位置,文件长度;
文件访问控制信息:文件的创建者,所有者,许可那些用户能够读写或运行[类Linux/UNIX];
文件使用信息:文件创建的时间日期,最近的使用日期时间等。
3.文件操作【一般通过系统调用完成】
对文件操作有创建文件、读文件、写文件、截断文件、设置文件的访问位置等。
对记录的操作有插入记录、修改记录、删除记录、检索记录等[增删改查]。
二、文件结构
1.文件逻辑结构
文件的逻辑结构是从用户观点出发看到的文件的组织形式。文件的物理结构是从实现观点出发,又称为文件的存储结构,是指文件在外存上的存储组织形式。文件的逻辑结构与存储介质特性无关,但文件的物理结构与存储介质的特性有很大关系。
按逻辑结构,文件有两种类型:
(1)无结构文件(流式文件)
这是最简单的文件组织形式。流式文件将数据按顺序组织成记录并积累保存,它是有序相关信息项的集合,以字节(Byte)为单位。由于流式文件没有结构,因而对记录的访问只能通过穷举搜索的方式,故这种文件形式对大多数应用不适用。但字符流的无结构文件管理简单,用户可以方便地对其进行操作。所以,那些对基本信息单位操作不多的文件较适于采用字符流的无结构方式,例如,源程序文件、目标代码文件等。
(2)有结构文件(记录式文件)
有结构文件按记录的组织形式可以分为:
1)顺序文件
记录是定长的且按关键字顺序排列。可以顺序存储或以链表形式存储,在访问时需要顺序搜索文件。顺序文件有两种结构:
第一种是串结构,各记录之间的顺序与关键字无关。通常的办法是由时间来决定,即按存入时间的先后排列,最先存入的记录作为第一个记录,其次存入的为第二个记录,依此类推。
第二种是顺序结构,指文件中的所有记录按关键字顺序排列。在对记录进行批量操作时,即每次要读或写一大批记录,对顺序文件的效率是所有逻辑文件中最高的;此外,也只有顺序文件才能存储在磁带上,并能有效地工作。但顺序文件对查找、修改、增加或删除单个记录的操作比较困难。
2)索引文件
对于定长记录文件,如果要查找第i个记录,可直接根据下式计算来获得第i个记录相对于第一个记录的地址:
p { margin-bottom: 0.25cm; line-height: 120%; }
然而,对于可变长记录的文件,要查找第i个记录时,必须顺序地查找前i-1个记录,从而获得相应记录的长度L,然后才能按下式计算出第i个记录的首址:
(假定每个记录前用一个字节指明该记录的长度)
p { margin-bottom: 0.25cm; line-height: 120%; }
变长记录文件只能顺序查找,系统开销较大。为此可以建立一张索引表以加快检索速度,索引表本身是顺序文件。在记录很多或是访问要求高的文件中,需要引入索引以提供有效的访问。实际中,通过索引可以成百上千倍地提高访问速度。
p { margin-bottom: 0.25cm; line-height: 120%; }
3)索引顺序文件
顺序和索引两种组织形式的结合。索引顺序文件将顺序文件中的所有记录分为若干个组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录的关键字值和指向该记录的指针。
4)直接文件或散列文件(哈希文件,HashFile)
给定记录的键值或通过Hash函数转换的键值直接决定记录的物理地址。这种映射结构不同于顺序文件或索引文件,没有顺序的特性。
散列文件有很高的存取速度,但是会引起冲突,即不同关键字的散列函数值相同。
2.文件物理结构
文件物理结构是指文件在存储介质上的组织方式,它依赖于物理的存储设备,又称物理文件。
常用的文件物理结构有:
(1)顺序结构:是把一个逻辑上连续的记录构成的文件分配到连续的物理块中。
(2)链接结构:把文件信息存放在非连续的物理块中,每个物理块均设有一个指针指向其后续连续的另一个物理块,从而使得存放同一文件的物理块链接成一个串联队列。链接方式又分为显式链接和隐式链接。显式链接的链接指针在专门的链接表中,隐式链接的指针在存放文件信息的物理块中。
(3)索引结构:指为每个文件建立一个索引表,其中每一个表项指出文件记录所在的物理块号,表项按逻辑记录编写,顺序或按记录内某一关键字顺序排列,对于大文件,为检索方便,可以建立多级索引,还可以把文件索引表也作为一个文件,称为索引表文件。
多重索引结构(混合索引结构)采用了间接索引方式,第一级索引表的表项指出下一级索引表的位置(物理块号),下一级索引表的表项指出再下一级索引表的位置,这样间接几级,最末—级索引表的表项则指向相应记录所在的物理块号。
三、目录结构
为实现“按名存取”,必须建立文件名与外存空间中的物理地址的对应关系,体现这种对应关系的数据结构称为目录。
1.文件目录管理基本要求
实现“按名存取”:用户只需提供文件名,即可对文件进行存取,这是目录管理基本功能。实现文件共享:允许不同的用户使用同一个文件。
允许文件重名:采用多级目录。
2.文件组成
文件包含两部分内容:文件说明(或称文件头)与文件体。文件体是文件本身的信息,可能是记录式文件或是字符流式文件。文件说明就是文件控制块。目录是由一组文件的文件说明(即文件控制块FCB)组成的文件,它本身也是一种文件。
3.文件控制块(FCB)组成
(1)基本信息类:文件名、文件外存地址、文件逻辑结构、文件物理结构。
(2)存储控制信息类:文件拥有者的权限、核准用户的权限、一般用户的权限。
(3)使用信息类:文件建立的日期与时间,上一次修改的日期与时间、当前的使用信息。
4.文件目录组织形式
(1)单级目录结构
(2)二级目录结构
(3)多级目录结构
多级目录由称为树形目录,将文件的多级目录结构以图形化表示,即是图形化目录。
四、文件共享
文件共享是指在不同用户之间共同使用某些文件。实现文件共享主要有三种方式:
(1)绕道法(软链接法):路径名是由当前目录到信息文件通路上所有各级目录的目录名加上该信息文件的符号名组成[类似于Windows系统中快捷方式,他没有物理上的链接数的概念]。
(2)链接法(硬链接法):即一个目录中的一个表项直接指向被共享文件所在的目录表项,而不是直接指向文件【该文件同属于多个用户,一个用户对文件所做出的操作需要经过其他几个用户的同意】。
(3)基本目录表方法
基本文件目录和符号文件目录结构是把所有文件目录的内容分成两部分:一部分包括文件的结构信息、物理块号、存取控制和管理信息等文件说明,并用文件系统赋予的唯一的内部标识符来标识;另一部分包括符号文件名和系统赋予的该文件的内部标识符组成。这两部分分别称为基本文件目录表(BFD)和符号文件目录表(SFD)。
五、文件保护
1.访问类型
通过限制可进行的文件访问类型,保护机制可提供控制访问(特别地为防止文件被破坏,一般对写和修改操作需要特别控制)。访问类型有:读;写;修改;运行;添加;删除;列表清单。
2.访问控制
解决文件保护问题最为常用的是根据用户身份进行控制。实现基于身份访问的最普通方法是为每个文件或目录增加一个访问控制列表。所有用户组对文件权限的集合形成了一个二维表即文件访问控制表,不同用户对同一文件或目录需要不同类型的访问。
3.文件系统安全
为了尽量减少在系统发生故障时文件信息破坏,最简便的措施是为重要的文件保存多个副本,即“定期转储”,当系统出现故障,就可以装入转储的文件来恢复文件系统。
(1)全量转储:把文件存储器中的全部文件定期(例,每周、每天)复制到备份磁带上。
(2)增量转储:全量转储只能恢复上次转储时的状态