文件系统是操作系统进行信息管理的基本单位,对软件资源的管理是通过文件系统来实现的。为了实现这些功能,操作系统必须考虑文件目录的建立和维护、存储空间的分配和回收、信息的编址方法和存储次序以及如何检索用户信息等问题。
一.文件的组织结构
文件的组织结构是指文件的构造方式,通常可以从两个不同的角度来对它进行考察。其中,从用户角度看到的文件称为文件的逻辑组织,从系统的角度看到的文件称为文件的物理组织。
1逻辑结构
文件的逻辑结构是指用户概念中的文件,它独立于物理存储。逻辑文件有两种形式,分别是无结构的流式文件和有结构的记录式文件。
(1)流式文件。流式文件是相关信息项的集合。基本单位是字节或者字,它的管理比较简单,用户可以很方便地对其进行操作。因此,那些对基本单位信息操作不多的文件较适用于采用流式文件操作。在Unix系统中,所有的文件都被看成是流式文件,系统不对文件进行格式处理。
(2)记录式文件。记录式文件是数据记录的集合,其基本单位是逻辑记录,记录的长度有等长或者不等长区分。对记录式文件,所有记录描述一个实体集,有相同或不相同数目的数据项。流式文件也可以视为记录式文件的特例,即每个记录只有一个字节或者字。
记录式文件的逻辑组织有三种形式:
一种是顺序存储方式,及记录按序排列;
一种是直接存储方式,即用户对记录的存储是不按顺序的,可以指定某一记录进行存储;
还有一种是按键存储方式,即对用户文件内容的访问不是根据记录的编号或地址,而是根据记录的某一项内容来进行的。
2.物理结构
文件物理结构(物理文件)是指文件在存储介质上的组织方式,它依赖于物理的存储设备和存储空间,可以看作是相关物理块的集合。信息的逻辑位置到物理位置的映射关系也是由物理结构决定的。
常用的文件物理结构有以下几种。
(1)顺序结构。逻辑上连续的记录构成的文件分配到连续的物理块中。优点是存储速度快,管理简单,缺点是空间利用率低,文件记录插入或删除操作不方便,只能在文件末尾进行。
(2)链接结构。将信息存放在非连续的物理块中,每个物理块均设有一个指针,指向其后续的物理块,从而是的存放统一文件的物理块链接成一个串联队列。链式结构优点是空间利用率高,易于文件扩充,确定是查找效率低。
(3)索引结构。为每个文件建立一个索引表,其中每个表项指出信息所在的物理块号,表目按逻辑记录编写顺序或按记录内某一关键字顺序排列。对于大文件,检索方便,可以建立多级索引,还可以将文件索引表也作为一个文件。该方式的有点是可以满足文件动态增长的需求且存取方便,缺点是建立索引表增加了空间存储的开销。
(4)树形文件结构
文件控制块的集合称为文件目录,文件目录也本组织成文件,常称为文件目录。文件管理的一个重要方面是对文件目录进行组织和管理。文件系统一般采用一级目录结构。二级目录结构和多级目录结构,例如Unix和windows系统都采用可多级树形目录结构。
二.存储空间管理
一个大容量的文件存储器为系统本身和许多用户所共享。为方便用户按名存取所需的文件,系统自动为用户分配并管理系统和用户的存储空间以及收回不再保留的文件所占的存储空间。因此必须解决三个问题:登记空闲区的分布情况、按需要给一个文件分配存储空间,以及回收不再保留的文件所占的存储空间。以上问题都可以归纳为磁盘空闲区的管理问题,常用的磁盘空闲区管理方法有文件目录、空闲块链、位示图和组成链接法。
1.空闲文件目录
磁盘空间上一个连续的未分配区域成为空闲文件。系统为所有这些空闲文件单独建立一个目录。对每个空闲文件,在这个目录中建立一个表目。表目的内容包括第一个空闲块地址和空闲块数目等。
2.空闲块链
空闲块链是将所有空闲块用链接指针或索引结构组成一个空闲文件。释放和分配空闲块都可以在链首进行,只需要修改几个有关的链接字。该方法只要求在内存中保存一个指针,令它指向第一个空闲块,优点是实现简单,但是工作效率低。
3.位示图法
位示图是利用二进制的1位来表示文件存储空间中的1个块的使用情况。一个m行,n列的位示图,可用来描述m*n块的文件存储空间,当行号和块号都是从0开始编号时,第i行,第j列的二进制对应物理块号为i*n+j。如果“0”表示对应块空闲,“1”表示对应块已分配,则在进行存储空间的分配时,可顺序扫描位示图,从中找出一个或一组值为“0”的二进制位,将对应的块分配出去,并将这些位置“1”,而在回收某个块时,只需找到对应的位,并将其值清零即可。位示图法适合于所有的分配方式,它简单易行,而且,位示图通常较小故吋将其读入内存,从而进一步加快文件存储空间分配和回收的速度。
4.成组链接法
成组链接法是对空闲块链法的一种改进,它将一个文件卷的所有空闲盘按固定大小分成若干组,并将每一组的盘块数和该组所有盘块记入前一组的最后一个盘块中,第一组的盘块数和该组的所有盘块号则记入超级块的空闲盘块中。当系统要为用户分配文件所需的盘块时,若第一组不止一块,则将超级块中的空闲盘块数减1,并将空闲盘块栈顶的盘块分配出去;若第一组只剩一块且栈顶的盘块号不是结束标记0,则先将该块的内容读到超级块中,然后进该块分配出去;否则,若栈顶的盘块号为结束标记0,则表示该磁盘已无空闲盘块可供分配。
三.分布式文件系统
在计算机网络中,每个节点运行一个包括自己的文件系统的本地操作系统,称为本地文件系统LFS。LFS负责将磁盘块分配给文件,并维护文件分配表等信息,提供诸如新建文件、读文件、写文件和删除文件等不同服务。它为所有本地目录和文件维护目录结构、允许用户更改自己的工作目录,累出本地目录中的所有文件以及实现对本地文件和目录的访问控制。
当用户想要对远程文件执行所有操作所有这些功能时,就会出现问题,分布式文件系统DFS正好可以提供这种功能。DFS是分布式文件系统的重要组成部分,它允许通过网络互连,使不同机器上的用户共享一种文件系统。DFS不是一个分布式操作系统,而是一个相对独立的软件系统,被集成到分布式操作系统中,并为其提供远程访问服务。
1.DFS的特点
DFS具有网络透明性和位置透明性。网络透明性是指用户访问文件服务器上的文件的操作如同访问LFS的操作一样;位置透明是指用户通过文件名访问文件,但并不知道该文件在网络中的位置。
2.DFS的组成
DFS为系统中的客户机提供共享的文件系统,为分布式操作系统提供远程文件访问服务,DFS由两部分组成,分别是运行在服务器上的DFS软件和运行在每个客户机上的DFS软件。这两部分程序代码在运行中都要与本机操作系统的文件系统紧密结合,共同起作用。
3.DFS的架构
DFS目前大多数采用客户/服务架构,客户是要访问文件的计算机,服务器是存储文件并且允许用户访问这些文件的计算机。DFS中需要解决的一个问题是命名的透明性,有三种解决方式:
(1)通过机器名加路径名来访问文件;
(2)将远程文件系统安装到本机文件目录上,这样用户就可以自己定制文件名;
(3)让所有机器上看起来有相同的单一名字空间,这样实现难度大。
在客户/服务器架构中,客户使用远程方法访问文件,服务器则响应客户的请求。有些系统中的服务器能提供更多的服务,它不仅响应客户的请求,还对客户机中的高速缓存的一致性作出预测,一旦客户数据变为无效时便通知客户。