第5章 文件管理

操作系统中设计了对信息进行管理的功能,称为文件管理或文件系统。文件管理的主要工作是管理用户信息的存储、检索、更新、共享和保护。用户把信息组织成文件,由操作系统统一管理,用户可不必考虑文件存储在哪里、怎样组织输入/输出等工作,操作系统为用户提供“按名存取”的功能。

5.1 文件和文件系统

5.1.1 文件

把逻辑上具有完整意义的信息集合称为文件。每个文件都要用一个名字做标识,称为文件名。

5.1.2 文件系统的组成部分

文件系统对文件统一管理,目的是方便用户且保证文件的安全可靠。面向用户,文件系统主要是实现“按名存取”。为此,文件系统应由如下一些部分组成:

1)文件目录

文件目录是实现按名存取的一种手段。

2)文件的组织

用户按信息的使用和处理方式来组织文件。

3)文件存储空间的管理

4)文件操作

为了保证文件系统能正确地存储和检索文件,系统规定了在一个文件上可执行的操作,这些可执行的操作统称为文件操作。文件操作是文件系统提供给用户使用文件的一组接口。

5)文件的安全措施

5.2 文件的存储介质

把可用来记录信息的磁带、硬磁盘组、软磁盘片、光盘、卡片等称为存储介质。把可按照存储介质的设备统称为存储设备。

把存储介质的物理单位定义为卷。把存储介质上可连续存储信息的一个区域称为块,或称为物理记录。块是主存储器与存储设备之间进行信息交换的物理单位。

磁盘机是一种按地址直接存取的存储设备。把所有的读写磁头按从上到下的次序进行编号,称其为磁头号。

在磁头位置下的各个盘面上的磁道在同一个圆柱面上,我们称这些磁道组成了一个柱面。

把盘面上的磁道编号作为柱面号。每个盘面被划分成若干相等的扇区,每个扇区中的各个磁道都是可存放相等字节数的一个块,沿与磁盘旋转相反方向给各扇区编号,称为扇区号。

5.3 文件的存取方式

从对文件信息的存取次序考虑,存取方式可以分成两种:顺序存取和随机存取。顺序存取是指对文件中的信息按顺序依次进行读写的存取方式。随机存取是指对文件中的信息不一定要按顺序读写,而是可以按任意的次序随机读写的存取方式。

采用那种存取方式,主要取决于两个方面的因素:

1)与文件的使用方式有关

2)与存储介质的特性有关

5.4 文件目录

文件目录适用于检索文件的,它是文件系统实现按名存取的重要手段。文件目录由若干目录项组成,每个目录项记录一个文件的有关信息。

5.4.1 一级目录结构

一级目录结构是最简单的目录结构。这种目录结构是把一卷存储介质上的所有文件都登记在一个文件目录中。

一级目录结构一般只适用于微型计算机的单用户系统。

5.4.2 二级目录结构

二级目录结构是为每个用户设置一张目录表,称为用户文件目录。用户文件目录为本用户的每一个文件设置一个目录项。再用一张总的目录表来登记各个用户的目录表存放地址。这张总的目录表称为主文件目录。

5.4.3 树形目录结构

UNIX系统和Windows系统中都采用了多级目录结构。这种目录结构像一棵倒置的有根树,故也称树形目录结构。在树形目录结构中,每一个节点都是一个目录或一个文件,主文件目录是树根,常常称它为根目录。

5.4.4 文件目录的管理

由于文件目录也是在逻辑上有完整意义的信息集合,因此为了对文件目录进行管理,通常把文件目录也作为文件保存在存储介质上。由文件目录组成的文件称为目录文件。

5.5 文件的组织

文件的组织是指文件的构造方式。用户是从使用的角度来组织文件,用户把能观察到的且可以处理的信息根据使用要求构造成文件,这种构造方式是独立于物理环境的,所以称为文件的逻辑结构。文件系统要从文件的存储和检索的角度来组织文件,文件系统根据存储设备的特性、文件的存取方式来决定以怎样的形式把用户文件存放到存储介质上,在存储介质上的文件构造方式称为文件的存储结构。

5.5.1 文件的逻辑结构

用户组织的文件称为逻辑文件,简称文件。逻辑文件可以有如下两种形式:

1)流式文件

流式文件是指用户对文件中的信息不再划分可独立的单位,整个文件是由依次的一串信息组成。

2)记录式文件

记录式文件是指用户对文件中的信息按逻辑上独立的含义再划分信息单位。每个单位称为一个逻辑记录,简称记录。也就是说,一个逻辑文件是由若干个逻辑记录组成的,我们把这种文件称为记录式文件。记录式文件中的逻辑记录可依次编号,其序号称为逻辑记录号,简称为记录号。

对于记录式文件,逻辑记录是文件中可以独立存取的最小信息单位。

能用来唯一地标识某个记录的数据项称为记录的主键。

逻辑记录中除主键外的其他各个数据项都称为次键。

5.5.2 文件的存储结构

存放在存储介质上的文件称为物理文件。

1.磁带文件的组织

顺序结构的文件称为顺序文件。

磁带上的每个文件都有文件头标、文件信息和文件尾标三个组成部分。

2.磁盘文件的组织

文件在磁盘上可以有多种组织方式。常用的组织方式有顺序结构、链接结构和索引结构。

1)顺序结构

2)链接结构

将顺序的逻辑结果结构放在不相邻的磁盘块上,再用指针把这些磁盘块按逻辑记录的顺序链接起来,便形成了文件的链接结构。链接结构的文件称为链接文件,又称为串联文件。

链接结构的特点是每个磁盘块中必须留出若干单元用来存放磁盘之间的链接指针。

3.存取方式与存储结构之间的关系

一般来说,对顺序存取的文件,文件系统可以把它组织成顺序文件或链接文件;对随机存取的文件,文件系统可把它组织成索引文件。

5.5.3 记录的成组与分解

1.记录的成组

把若干个逻辑记录合成一组存入一块的工作称为记录的成组。每块中的逻辑记录个数称为块因子。

2.记录的分解

从一组逻辑记录中把一个逻辑记录分离出来的操作称为记录的分解。

记录的成组与分解是以设立主存缓冲区和操作系统增加成组与分解操作的功能为代价,来提高存储介质的利用率和减少设备启动的次数。

5.6 磁盘存储空间的管理

5.6.1 位示图法

确定空闲块地址的通用公式:

块号=字号*字长+位号

柱面号=[块号/柱面上的块数]

磁头号=[(块号 mod 柱面上的块数)/盘面上的扇区数]

扇区号=(块号 mod 柱面上的块数) mod 盘面上的扇区数

归还一块时,寻找位视图中位置的通用公式:

块号=柱面号*柱面上的块数+磁头号*盘面上的扇区数+扇区号

字号=[块号/字长]

位号=块号 mod 字长

5.6.2 空闲块表法

系统为每个磁盘建立一张空闲块表,表中每个登记项纪录一组连续空闲块的首块号和块数。空闲块数为“0”的登记项为无效登记项。

5.6.3 空闲块链法

把所有的磁盘空闲块用指针连接在一起构成空闲块链。

5.7 基本文件操作及其使用

5.7.1 基本文件操作

1.“建立”操作

2.“打开”操作

3.“读”操作

4.“写”操作

5.“关闭”操作

6.“删除”操作

5.7.2 文件操作的使用

一个文件使用前必须先调用“打开”。一个被打开的文件不允许非打开者使用。

一个文件被“打开”或“建立”后,允许打开者或建立者多次调用“读”操作或“写”操作来使用该文件。文件使用结束后必须调用“关闭”操作来归还文件的使用权。关闭的文件不能再使用。若要再使用,必须再次调用“打开”操作。

“打开”、“建立”、“关闭”是文件系统中的特殊操作。用户调用“打开”和“建立”来申请对文件的使用权。只有当系统验证符合使用权力时,用户才能使用文件。用户调用“关闭”来归还文件的使用权。

5.8 文件的安全性

文件的安全性体现在文件的保护和文件的保密两个方面。

5.8.1 文件的保护

文件的保护是指防止文件被破坏。

造成文件可能被破坏的原因大致有四个方面:天灾人祸(如地震、洪水、存储介质损坏、磁带或磁盘安装错误);硬件故障或软件失误;共享文件时引起错误;计算机病毒的侵害。

1.防止天灾人祸造成的破坏

为了这种意外而造成的文件破坏,通常采用建立多个副本的办法来保护文件。

2.防止系统故障造成的破坏

(1)建立副本

(2)定时转储

UNIX系统就采用定时转储来保护文件,提供文件的安全性。

3.防止文件共享时造成的破坏

UNIX采用把用户分类的方法防止文件共享造成的破坏。

4.防止计算机病毒的侵害

5.8.2 文件的保密

文件的保密是指防止他人窃取文件。常用的保密措施有以下几种。

(1)隐蔽文件目录

(2)设置口令

(3)使用密码

5.9 UNIX系统的文件管理

5.9.1 UNIX的文件和文件系统

UNIX中,文件的逻辑结构是由一串顺序的字符流组成的流式文件,即用户组织的文件是不划分记录的。文件的存储结构是采用索引结构方式,即把文件按一定的长度分块后存放到磁盘上,并建立索引表。

UNIX中,把外围设备也当做文件看待,称为设备文件。所以,UNIX中的文件包括普通文件、目录文件和设备文件。

UNIX的文件系统分为基本文件系统和可装卸的子文件系统两部分。

5.9.2 UNIX的文件结构

UNIX中,文件的逻辑结构是由一串顺序的字符组成的流式文件,文件的存储结构采用索引结构方式。由于用户的逻辑文件是不划分记录的,所以UNIX就把用户的逻辑文件按一定的长度分块后存放到磁盘上,组织成索引文件。

UNIX把磁盘空间划分成长度为512个字节的许多块,文件信息和索引表都可以存放在这些块中。

UNIX操作系统对索引表作了精心设计,采用多级索引结构。规定每个文件的索引表使用13个登记项(每个登记项有4个字节)。

5.9.3 UNIX的文件目录

UNIX采用树形目录结构。

根目录下有8个子目录,分别登录不同类型的文件,其中

/vmunix UNIX的二进制引导文件

/dev 是设备特殊文件

/bin 是包含UNIX外壳层中的二进制代码文件

/lib 是库文件,如C.PASCAL的子文件库

/usr 是含有已安装的子文件系统以及用户的各种文件

/user 是用户的私有文件

/etc 是管理性文件

/tmp 是临时性文件

UNIX中,对目录文件的存取权限也有读、写、执行三种,但他们的含义与普通文件的存取含义不同。它们的含义是:

读——可以读该目录

写——可以增删这个目录中的目录项,从而改变目录内容。

执行——可以为寻找一个文件而搜索这个目录。

5.9.4 UNIX的索引节点

UNIX中每个文件有一个唯一的索引节点。UNIX经常把索引及诶单称为i节点或i-node。通常索引节点是放在磁盘上的索引节点区中,当要对文件进行各种操作时,必须把该文件的索引节点从磁盘读到主存储器中。

1.索引节点区

UNIX把可分配的磁盘块分成两类,一类是存放索引节点的索引节点区,另一类是存放文件信息的文件存储区。

2.磁盘索引节点

存放在磁盘上的索引节点区中的索引节点称为磁盘索引节点。磁盘索引节点实际上是描述文件的第一个抽象数据结构。

3.活动索引节点表

为了加快访问文件的速度,当要对文件进行各种操作时,就要把该文件的索引节点读取到主存储器。为此,UNIX在主存开辟了一个索引节点缓冲区,用来建立活动索引节点表inode[]

活动索引节点表中的节点称为活动索引节点。

寻找和释放活动索引节点分别由两个过程igetiput来完成。

4.目录索引

5.9.5 UNIX的打开文件表

UNIX在整个系统运行期间维护一张系统打开文件表file[]。每个用户进程各有一张进程打开文件表,以实现对文件读、写操作的动态管理。

1.系统打开文件表

UNIX中,一个文件可以被同一进程或不同进程多次打开。在请求打开时,可以提出相同或不同的打开方式。UNIX设置一张系统打开文件表file[],以反映对被打开文件进行操作的动态信息。

系统打开文件表主要用于对文件读写操作的控制。

2.进程打开文件表

UNIX还运行一个进程同时打开多个文件,但规定每个进程最多同时打开15个文件。UNIX为每个进程设置一张进程打开文件表。该表是进程扩充控制块user的组成部分。

5.9.6 UNIX的文件操作

UNIX中,对文件的操作是通过系统调用来实现的。文件操作类的系统调用主要有createopenreadwritecloselinkunlink等。

1.建立文件create

2.打开文件open

用户程序要使用一个已经存在的文件时,必须先用系统调用open将它打开。

3.系统调用read

4.系统调用write

5.系统调用close

6.系统调用link

用系统调用link可以为一个文件再取一个新文件名。

7.系统调用unlink

用系统调用unlink可删除文件的一个文件名。

5.9.7 UNIX的文件存储空间管理

UNIX把磁盘上的用开存放文件信息的磁盘块采用成组链接的方法进行管理。成组链接法把空闲块分成若干组,把指向一组中各空闲块的指针集中在一起。

UNIX规定,每100个空闲块为一组,每组的第一个空闲块中登记下一组空闲块的磁盘物理块号和空闲块数,最后不足100块的那部分磁盘物理块号及块数记入专用块中。

猜你喜欢

转载自bsr1983.iteye.com/blog/1483107