电脑专家——操作系统知识详解(五)文件管理

文件与文件系统

1.文件

具有标识符(文件名)的一组相关信息的集合。

2.文件系统

所谓文件系统,就是操作系统中实现文件统一管理的一组软件、被管理的文件以及为实施文件管理所需要的一些数据结构的总称(是操作系统中负责存取和管理文件信息的机构)。

从系统角度来看,文件系统是对文件存储器的存储空间进行组织,分配和回收,负责文件的存储,检索,共享和保护。

从用户角度来看,文件系统主要是实现"按名取存",文件系统的用户只要知道所需文件的文件名,就可存取文件中的信息,而无需知道这些文件究竟存放在什么地方。

文件系统作为一个统一的信息管理机制,应具有下述功能:

①统一管理文件存储空间(即外存),实施存储空间的分配与回收。

②确定文件信息的存放位置及存放形式。

③实现文件从名字空间到外存地址空间的映射,即实现文件的按名存取。

④有效实现对文件的各种控制操作(如建立、撤销、打开、关闭文件等)和存取操作(如读、写、修改、复制、转储等)

⑤实现文件信息的共享,并且提供可靠的文件保密和保护措施。

3. 文件的类型

1)按文件性质与用途分:系统文件、库文件、用户文件

2)按操作保护分:只读文件、可读可写文件、可执行文件

3)按使用情况分:临时文件、永久文件、档案文件

4)按用户观点分:普通文件、目录文件、特殊文件

5)按存取的物理结构分:顺序(连续)文件、链接文件、索引文件

6)按文件的逻辑存储结构分:有结构的记录式文件、无结构的流式文件

7)按文件中的数据形式分:源文件、目标文件

文件的结构和组织

1.文件的逻辑结构

文件的逻辑结构是指文件的外部组织形式,即从用户角度看到的文件组织形式,用户以这种形式存取、检索和加工有关信息。文件的逻辑结构可分为两类:

1)有结构的文件

有结构的文件是指由若干个相关的记录构成的文件,又称记录式文件。

在文件中的记录一般有着相同或不同数目的数据项,按记录的长度,记录式文件可分为两类:

(1)等长记录文件:它指文件中所有记录的长度都是相等的。

(2)变长记录文件:它指文件中各记录的长度不相同.

2)无结构文件

无结构文件又称流式文件,组成流式文件的基本信息单位是字节或字,其长度是文件中所含字节的数目,如大量的源程序,库函数等采用的就是流式结构。UNIX系统采用的是流式文件结构。

2.文件的物理结构

又称文件的存储结构,是指文件在外存上的存储组织形式,是与存储介质的存储性能有关;

1)连续结构:一个逻辑文件的信息存放在外存的一片连续编号的物理块中的结构称为连续结构,或称连续文件。存放在磁带上的文件一般采用连续结构。

2)链接结构:使用非连续的物理块来存放信息,物理块之间没有物理块号的顺序,其中每个物理块中有一个指针,指向下一个连接的物理块,从而使存放该文件的物理块链接成一个串联队列,文件的最后一个物理块的指针标记为空"",表示文件至本块结束。

3)索引结构:将逻辑文 件顺序的划分成长度与物理存储块长度相同的逻辑块,并为每个文件分别建立逻辑块号与物理块号的对照表,这种表称为索引表。在很多情况下,有的文件很大,文 件的索引表也就较大。如果索引表的大小超过了一定的限度,就必须象处理其它文件一样处理索引表的存放方式。为了解决这个矛盾,一种较好的解决方法是采用间 接索引(多重索引)。

4Hash文件:Hash文件是目前应用最广的一种直接文件。它利用Hash函数(或称散列函数)将记录键值转换为相应记录在目录表中的索引,即表项位置。通常,把Hash函数作为标准数存于系统中,以供对文件存取时调用。因为散列函数不是一对一的关系,所以选择好的散列函数和冲突处理方法是散列文件的关键。

5UNIX文件系统的索引结构:UNIX文件系统采用三级索引结构,文件系统中innode是基本的构件,它表示文件系统树型结构的结点。UNIX有直接、一级间接、二级间接和三级间接四种寻址方式。

文件目录

文件系统的一个最大特点是按名存取。文件控制块FCB是系统为管理文件而设置的一个数据结构。FCB是文件存在的标志,它记录了系统管理文件所需要的全部信息。

1.文件控制块FCB的组成

文件控制块FCB包含以下3类信息:基本信息类、存取控制信息类和使用信息类。

2. 目录结构

文件目录的组织与管理是文件管理中的一个重要方面,目前大多数操作系统如UNIXDOS等都采用多级目录结构,又称树型目录结构。常见的目录结构有:

1)单级目录结构

最简单的目录结构是在整个文件系统中只建立一张目录表,每个文件占一个表目,这称为单级目录。单级目录结构简单,能实现目录管理的基本功能--按名存取,但存在查找速度慢,不允许重名和不便于实现文件共享等缺点,因此它只适用于单用户环境。

2)二级目录结构

把系统中的目录分成二级,这二级目录分别是主目录和用户文件目录。

主目录由用户名和用户文件目录首地址组成;用户文件目录由用户文件的所有目录组成。

若一个新用户要建立一个文件,系统在主目录中为其开辟一项,并为其分配一个存放用户文件目录的存储空间,同时要为新建立的文 件在用户文件目录分配一个目录项,分配文件存储空间,然后把用户名和用户文件目录首地址填放到主目录中,将文件的有关信息填到用户文件目录项中。若一个老 用户要建立一个文件,在对应的空的用户文件目录项中填入相应的内容即可。

用户要访问一个文件:先根据用户名在主目录中找到用户文件目录的首地址,然后再去查用户文件的目录项即可找到要访问的文件。

二级目录结构的优点有:

1)搜索文件的时间变短;

2)较好地解决了重名问题:在二级目录结构中,搜索文件时需给出对应的用户名和文件名,即区别文件除了文件名以外还有用户名,由于用户名不同,因此即使不同的用户使用的文件名相同,也不会造成混乱。

二级目录结构的缺点是缺乏灵活性,不能反映现实世界中的多层次关系。

3)多级目录结构

在多道程序设计系统中常采用多级目录结构,MS-DOSUNIX等 操作系统都采用多级目录结构。这种目录结构象一棵倒置的有根树,该树根向下,每一个节点是一个目录,最末一个结点是文件,在多级目录中要访问一个文件时, 必须指出文件所在的路径名,路径名从根目录开始到该文件的通路上所有各级目录名拼起来得到,各目录名之间与文件名之间可用分隔符隔开。在MS-DOS中分隔符为"\",在UNIX中分隔符为"/"。例如访问命令文件man的路径名为/usr/lib/man,这也称为文件全名。

多级目很好地解决了录重名问题:在多级目录中存取一个文件需要用文件全名,这就允许用户在自己的目录中使用与其它用户文件相同的文件名,由于各用户使用不同的目录,虽二者使用了相同的文件名,但它们的文件全名仍不相同,这就解决了重名问题。

一般情形下文件目录项包括以下信息:(1)文件名:文件的标识符。(2)文件的逻辑结构;(3)文件在辅存上的物理位置;(4)文件建立修改日期及时间;(5)文件的类型;(6)存取控制信息:指明用户对文件的存取权限。

文件的存取方法和存储空间管理

1.文件的存取方法
文件的存取方法是指读写文件存储器上的一个物理块的方法。有:
1)顺序存取:它严格按照文件信息单位排列的顺序依次存取,后一次存取总是在前一次存取的基础上进行,所以不必给出具体的存取位置。
2)随机存取:又称直接存取,在存取时必须先确定进行存取时的起始位置(如记录号,字符序号等)。
在对实际的设备上的文件进行存取时采取不同的方式。如磁带一般只采用顺序存取方式,磁盘,磁鼓既可采用顺序存取也可采用随机存取方式。
2.文件存储空间的管理
只有有效合理的进行外存空间的管理,才能保证多用户共享外存和快速地实现文件的按名存取。常用的管理方法有:
1)空闲块表
文件系统建立一张空闲块表,该表记录了全部空闲的物理块:包括首空闲块号和空闲块个数。空闲块表方式特别适合于文件物理结构为顺序结构的文件系统。
优点:当有少量的空闲区时有好的效果,适用于连续文件的存储分配及回收。
缺点:(1)增加了目录的大小;
(2)增加了目录管理的复杂性。
2)位示图法
基本思想是利用一串二进制位(bit)的值来反映磁盘空间的分配使用情况。每一个磁盘物理块对应一个二进制位,如果物理块为空闲,则相应的二进制位为0;如果物理块已分配,则相应的二进位为1。
优点:占用空间少,位示图几乎可以全部进入内存。
缺点:分配时需顺序扫描空闲区,且物理块号并未在图中直接反映出来,需要进一步计算。
3)空闲块链表
系统将所有的空闲物理块连成一个链,用一个指针(空闲块首指针)指向第一个空闲块,然后每个空闲块含有指向下一个空闲块的指针,最后一块的指针为空,表示链尾。
优点:简单
缺点:工作效率低,因为在空闲块链上增加或移动空闲块时需要做许多I/O操作。
4)成组链接法
在UNIX系统中,将空闲块分成若干组,每100个空闲块为一组,每组的第一个空闲块登记了下一组空闲块的物理块号和空闲块总数。如果一个组的第一个空闲块号为零,则意味着该组是最后一组,即无下一个空闲块。
文件的使用

对文件的操作可分为两类:一类是对文件自身的操作;另一类是对文件中记录的操作。

1.对文件的操作

1)创建文件:系统要为文件分配一个目录项及存放新文件的外存空间,并在目录项中记录文件的有关信息,如文件名,物理地址等。

2)删除文件:系统根据用户给出的路径名,找到对应的文件,并回收该文件占用的全部资源,且将其目录项置空。

3)打开文件:用户想访问一个文件时,必须向系统提出打开文件的请求,并给出文件的路径名,操作类型等信息,系统则把其相应目录拷入内存.文件打开后才能对文件进行操作。

4)读文件:系统根据用户指定的路径名,将文件读入到内存指定的地址中。

5)写文件:系统根据用户指定的路径名,将内存中的数据信息写入到相应文件中。

6)关闭文件:文件不使用时,可申请系统将指定的文件关闭,系统则把其相应内存目录信息删除.文件关闭后只有再打开才能对其进行操作。

2.对记录的操作

1)读操作:将文件中的一条或多条记录读入到进程中。

2)写操作:进程将其输出的数据项写入到文件的一条记录或多条记录中。

3)查找:检索文件,在其中查找一条或多条满足条件的记录.

4)修改:检索文件,在其中找到一条满足条件的记录后,对其中的一个或多个数据进行修改,修改完毕后再将记录写回到文件中。

5)插入:将一个新记录插入到文件的某记录之前或之后。

6)删除:从文件中删除一个满足条件的记录。

文件的共享和保护

1.文件的共享
文件的共享是指一个文件可以允许多个用户共同使用。文件的共享有很多方法。其中常用的有链接法。
2.文件的保护
由于文件实现了共享,文件的安全性就遭到了威胁,因此必须对文件进行保护。
文件保护:文件不得被未经文件主授权的任何用户存取,对于授权用户也只能在允许的存取权限内使用文件。对文件进行保护,主要有以下几项措施:
1)存取控制矩阵
整个系统一个表,是一个二维矩阵B[i,j]。其中,行代表系统中的全部用户,用i(1,2,……N)表示;列表示系统中的全部文件,用j(1,2,……M)表示。如系统允许用户i访问文件j,则B[i,j]=1,否则B[i,j]=0。
优点:简单,一目了然.
缺点:在实际的应用中有很多问题,如在系统中有很多用户和很多文件,矩阵就很大,将占据很大的存储空间。另外,B[i,j]值1或0表示的是文件j是否允许用户i访问,不能表示用户对文件的访问类型,是只读还是只写等都不能反映出来。所以存取控制矩阵是一种不完善的措施。
2)存取控制表
一个文件一个表。按用户对文件的访问权力对用户进行分类,通常分以下几类:
(1)文件主:一般情况下,它是文件的创建者;
(2)指定的用户:由文件主指定的允许使用此文件的用户;
(3)同组用户:与文件主属于某一特定项目的成员,同组用户与此文件是有关的;
(4)其他用户:上述之外的用户。
用存取控制表对文件保护时,需要做:
(1)将所有对某一文件有存取要求的用户按某种关系或工程项目的类别分成若干组,
(2)另外的用户归入其他用户类,
(3)规定每一组用户的存取权限。
所有用户组的存取权限的集合就是该文件的存取控制表。常见的文件的存取权限一般有以下几种:
(1)E:只执行;(2)R:只读;(3)W:只写;(4)B:只在文件尾写;(5)D:删除。
3)口令
一个文件一个。用户为自己的每个文件规定一个口令,并附在用户文件目录中。凡请求该文件的用户必须先提供口令,只有当提供的口令与目录中的口令一致才允许用户存取该文件。当文件主允许其他用户使用他的文件时,必须将口令告诉其他用户。
优点:简便,节省空间。
缺点:(1)可靠性差.口令易被窃取.。
(2)存取控制不易改变。
(3)保护级别少:只有允许和不允许两种。对于允许,没有指明只读,只写等权限.。
4)密码
对文件进行保护的另一项措施是密码技术。一般一个文件对应一个密码。一个简单的做法是:
(1)编码:当用户建立一个文件时,利用一个代码键来启动一个随机数发生器,产生一系列随机数,由文件系统将这些相继的随机数依次加到文件的字节上去;
(2)译码:使用相同的代码键启动随机数发生器,从存入的文件中依次减去所得到随机数,文件就还原了。
在此种措施下,代码键不存入系统。只有当用户存取文件时,才需将代码键送入系统。文件主只将代码键告诉允许访问该文件的用户,而系统程序员是不知道的。
优点:保密性强,节省存储空间。
缺点:必须花费大量的编码和译码时间,从而增加了系统的开销。
系统的安全与可靠性

1.系统的安全

系统的安全涉及二类不同的问题,一类涉及到技术、管理、法律、道德和政治等问题。另一类涉及操作系统的安全机制,一般从四个级别对文件进行安全性管理:

1)系统级:用户需注册登记、并配有口令。每次使用系统时,都需要进行登录、输入口令,方能进入系统。

2)用户级:系统对用户分类并限定各类用户对目录和文件的访问权限。

3)目录级:系统对目录的操作权限作限定。如读、写等。

4)文件级:系统设置文件属性来控制用户对文件的访问。如只渎、执行、共享等。

2.文件系统的可靠性

比起计算机 的损坏,文件系统的破坏往往要糟糕得多。如果计算机的文件系统被破坏了,恢复所有信息将是一件困难而又费时的工作,有些时候,这根本是不可能的。对于那些 程序、文档、客户文件、税收记录、数据库、市场计划或者是其他数据丢失的用户来说,这不啻为一次大的灾难。尽管文件系统无法防止设备和媒体的物理损坏,但 它至少应能保护信息。可采取的方法有备份、记日志、文件系统的一致检查等。

0 评论:

发表评论