《操做系统》总结四(文件管理)

文件管理

主要内容:
  • 文件系统基础:包括文件概念、文件的逻辑结构(顺序文件,索引文件,索引顺序文件)、目录结构(文件控制块和索引结点,单级目录结构和两级目录结构,树形目录结构,图形目录结构)、文件共享和文件保护(访问类型,访问控制)。
  • 文件系统实现:包括文件系统层次结构、目录实现、文件实现。
  • 磁盘组织与管理:包括磁盘的结构、磁盘调度算法、磁盘的管理。

4.1 文件的概念和定义

文件(File)是操做系统中的一个重要概念。在系统运行时,计算机以进程为基本单位进行资源的调度和分配;而在用户进行的输入、输出中,则以文件为基本单位。大多数应用程序的输入都是经过文件来实现的,其输出也都保存在文件中,以便信息的长期存及未来的访问。当用户将文件用于应用程序的输入、输出时,还但愿能够访问文件、修改文件和保存文件等,实现对文件的维护管理,这就须要系统提供一个文件管理系统,操做系统中的文件系统(File System)就是用于实现用户的这些管理要求。

从用户的角度看,文件系统是操做系统的重要部分之一。用户关心的是如何命名、分类和查找文件,如何保证文件数据的安全性以及对文件能够进行哪些操做等。而对其中的细节,如文件如何存储在辅存上、如何管理文件辅存区域等关心甚少。

文件系统提供了与二级存储相关的资源的抽象,让用户能在不了解文件的各类属性、文件存储介质的特征以及文件在存储介质上的具体位置等状况下,方便快捷地使用文件。

用户经过文件系统创建文件,提供应用程序的输入、输出,对资源进行管理。首先了解文件的结构,咱们经过自底向上的方式来定义。

1) 数据项

数据项是文件系统中最低级的数据组织形式,可分为如下两种类型:
  • 基本数据项:用于描述一个对象的某种属性的一个值,如姓名、日期或证件号等,是数据中可命名的最小逻辑数据单位,即原子数据。
  • 组合数据项:由多个基本数据项组成。

2) 记录

记录是一组相关的数据项的集合,用于描述一个对象在某方面的属性,如一个考生报名记录包括考生姓名、出生日期、报考学校代号、身份证号等一系列域。

3) 文件

文件是指由建立者所定义的一组相关信息的集合,逻辑上可分为有结构文件和无结构文件两种。在有结构文件中,文件由一组类似记录组成,如报考某学校的全部考生的报考信息记录,又称记录式文件;而无结构文件则被当作是一个字符流,好比一个二进制文件或字符文件,又称流式文件。

虽然上面给出告终构化的表述,但实际上关于文件并没有严格的定义。一般在操做系统中将程序和数据组织成文件。文件能够是数字、字母或二进制代码,基本访问单元能够是字节、 行或记录。文件能够长期存储于硬盘或其余二级存储器中,容许可控制的进程间共享访问,可以被组织成复杂的结构。

4.2 文件的属性、基本操做以及文件的打开和关闭

文件的属性

文件有必定的属性,这根据系统的不一样而有所不一样,可是一般都包括以下属性:

①名称:文件名称惟一,以容易读取的形式保存。

②标识符:标识文件系统内文件的惟一标签,一般为数字,它是对人不可读的一种内部名称。

③类型:被支持不一样类型的文件系统所使用。

④位置:指向设备和设备上文件的指针。

⑤大小:文件当前大小(用字节、字或块表示),也可包含文件容许的最大值。

⑥保护:对文件进行保护的访问控制信息。

⑦时间、日期和用户标识:文件建立、上次修改和上次访问的相关信息,用于保护、 安全和跟踪文件的使用。

全部文件的信息都保存在目录结构中,而目录结构也保存在外存上。文件信息当须要时再调入内存。一般,目录条目包括文件名称及其惟一标识符,而标识符定位其余属性的信息。

文件的基本橾做

文件属于抽象数据类型。为了恰当地定义文件,就须要考虑有关文件的操做。操做系统提供系统调用,它对文件进行建立、写、读、定位和截断。.

①建立文件:建立文件有两个必要步骤,一是在文件系统中为文件找到空间;二是在目录中为新文件建立条目,该条目记录文件名称、在文件系统中的位置及其余可能信息。

②写文件:为了写文件,执行一个系统调用,指明文件名称和要写入文件的内容。对于给定文件名称,系统搜索目录以查找文件位置。系统必须为该文件维护一个写位置的指针。每当发生写操做,便更新写指针。

③读文件:为了读文件,执行一个系统调用,指明文件名称和要读入文件块的内存位置。一样,须要搜索目录以找到相关目录项,系统维护一个读位置的指针。每当发生读操做时,更新读指针。一个进程一般只对一个文件读或写,因此当前操做位置可做为每一个进程当前文件位置指针。因为读和写操做都使用同一指针,节省了空间也下降了系统复杂度。

④文件重定位(文件寻址):按某条件搜索目录,将当前文件位置设为给定值,而且不会读、写文件。

⑤删除文件:先从目录中找到要删除文件的目录项,使之成为空项,而后回收该文件所占用的存储空间。

⑥截断文件:容许文件全部属性不变,并删除文件内容,即将其长度设为0并释放其空间。

这6个基本操做能够组合执行其余文件操做。例如,一个文件的复制,能够建立新文件、 从旧文件读出并写入到新文件。

文件的打开与关闭

由于许多文件操做都涉及为给定文件搜索相关目录条目,许多系统要求在首次使用文件时,使用系统调用open,将指明文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件目录表的一个表目中,并将该表目的编号(或称为索引)返回给用户。操做系统维护一个包含全部打开文件信息的表(打开文件表,open-file table)。当用户须要一个文件操做时,可经过该表的一个索引指定文件,就省略了搜索环节。当文件再也不使用时,进程能够关闭它,操做系统从打开文件表中删除这一条目。

大部分操做系统要求在文件使用以前就被显式地打开。操做open会根据文件名搜索目录,并将目录条目复制到打开文件表。若是调用open的请求(建立、只读、读写、添加等)获得容许,进程就能够打开文件,而open一般返回一个指向打开文件表中的一个条目的指针。经过使用该指计(而非文件名)进行全部I/O操做,以简化步骤并节省资源。

整个系统表包含进程相关信息,如文件在磁盘的位置、访问日期和大小。一个进程打开一个文件,系统打开文件表就会为打开的文件增长相应的条目。当另外一个进程执行open时,只不过是在其进程打开表中增长一个条目,并指向整个系统表的相应条目。一般,系统打开文件表的每一个文件时,还用一个文件打开计数器(Open Count),以记录多少进程打开了该文件。每一个关闭操做close则使count递减,当打开计数器为0时,表示该文件再也不被使用。系统将回收分配给该文件的内存空间等资源,若文件被修改过,则将文件写回外存,并将系统打开文件表中相应条目删除,最后释放文件的文件控制块(File Control Block, FCB)。

每一个打开文件都有以下关联信息:
  • 文件指针:系统跟踪上次读写位置做为当前文件位置指针,这种指针对打开文件的某个进程来讲是惟一的,所以必须与磁盘文件属性分开保存。
  • 文件打开计数:文件关闭时,操做系统必须重用其打开文件表条目,不然表内空间会不够用。由于多个进程可能打开同一个文件,因此系统在删除打开文件条目以前,必须等待最后一个进程关闭文件。该计数器跟踪打开和关闭的数量,当该计数为0 时,系统关闭文件,删除该条目。
  • 文件磁盘位置:绝大多数文件操做都要求系统修改文件数据。该信息保存在内存中以避免为每一个操做都从磁盘中读取。
  • 访问权限:每一个进程打开文件都须要有一个访问模式(建立、只读、读写、添加等)。该信息保存在进程的打开文件表中以便操做系统能容许或拒绝以后的I/O请求。

4.3 文件的逻辑结构:无结构文件(流式文件)和有结构文件(记录式文件)

文件的逻辑结构是从用户观点出发看到的文件的组织形式。文件的物理结构是从实现观点出发,又称为文件的存储结构,是指文件在外存上的存储组织形式。文件的逻辑结构与存储介质特性无关,但文件的物理结构与存储介质的特性有很大关系。

按逻辑结构,文件有无结构文件和有结构文件两种类型:无结构文件和有结构文件。

无结构文件(流式文件)

无结构文件是最简单的文件组织形式。无结构文件将数据按顺序组织成记录并积累保存,它是有序相关信息项的集合,以字节(Byte)为单位。因为无结构文件没有结构,于是对记录的访问只能经过穷举搜索的方式,故这种文件形式对大多数应用不适用。但字符流的无结构文件管理简单,用户能够方便地对其进行操做。因此,那些对基本信息单位操做很少的文件较适于釆用字符流的无结构方式,如源程序文件、目标代码文件等。

有结构文件(记录式文件)

有结构文件按记录的组织形式能够分为:

1) 顺序文件。

文件中的记录一个接一个地顺序排列,记录能够是定长的或变长的,能够顺序存储或以链表形式存储,在访问时须要顺序搜索文件。顺序文件有如下两种结构:

第一种是串结构,记录之间的顺序与关键字无关。一般的办法是由时间决定,即按存入时间的前后排列,最早存入的记录做为第1个记录,其次存入的为第2个记录,依此类推。

第二种是顺序结构,指文件中的全部记录按关键字顺序排列。

在对记录进行批量操做时,即每次要读或写一大批记录,对顺序文件的效率是全部逻辑文件中最高的;此外,也只有顺序文件才能存储在磁带上,并能有效地工做,但顺序文件对查找、修改、增长或删除单个记录的操做比较困难。

2) 索引文件。

如图4-1所示。对于定长记录文件,若是要查找第i个记录,可直接根据下式计算来得到第i个记录相对于第一个记录的地址:

然而,对于可变长记录的文件,要查找第i个记录时,必须顺序地查找前i-1个记录,从而得到相应记录的长度L,而后才能按下式计算出第i个记录的首址:

注意:假定每一个记录前用一个字节指明该记录的长度。


图4-1  索引文件示意图

变长记录文件只能顺序查找,系统开销较大。为此能够创建一张索引表以加快检索速度,索引表自己是定长记录的顺序文件。在记录不少或是访问要求高的文件中,须要引入索引以提供有效的访问。实际中,经过索引能够成百上千倍地提升访问速度

3) 索引顺序文件。

索引顺序文件是顺序和索引两种组织形式的结合。索引顺序文件将顺序文件中的全部记录分为若干个组,为顺序文件创建一张索引表,在索引表中为每组中的第一个记录创建一个索引项,其中含有该记录的关键字值和指向该记录的指针。

如图4-2所示,主文件名包含姓名和其余数据项。姓名为关键字,索引表中为每组的第一个记录(不是每一个记录)的关键字值,用指计指向主文件中该记录的起始位置。索引表只包含关键字和指计两个数据项,全部姓名关键字递增排列。主文件中记录分组排列,同一个组中关键字能够无序,但组与组之间关键字必须有序。查找一个记录时,经过索引表找到其所在的组,而后在该组中使用顺序查找就能很快地找到记录。


图4-2  索引顺序文件示意图

对于含有N个记录的顺序文件,查找某关键字值的记录时平均须要查找N/2次。在索引顺序文件中,假设N个记录分为N1/2组,索引表中有N1/2个表项,每组有N1/2个记录,在查找某关键字值的记录时,先顺序查找索引表,须要查找N1/2/2次,而后再在主文件中对应的组中顺序查找,也须要查找N1/2/2次,这样总共查找N1/2/2+N1/2/2=N1/2次。显然,索引顺序文件提升了查找效率,若是记录数不少,能够釆用两级或多级索引。

索引文件和索引顺序文件都提升了存取的速度,但由于配置索引表而增长了存储空间。

4) 直接文件或散列文件(Hash File)

给定记录的键值或经过Hash函数转换的键值直接决定记录的物理地址。这种映射结构不一样于顺序文件或索引文件,没有顺序的特性。

散列文件有很高的存取速度,可是会引发冲突,即不一样关键字的散列函数值相同。

4.4 文件目录结构:单级、两级、多级(树形)和无环图目录结构

与文件管理系统和文件集合相关联的是文件目录,它包含有关文件的信息,包括属性、 位置和全部权等,这些信息主要是由操做系统进行管理。首先咱们来看目录管理的基本要求: 从用户的角度看,目录在用户(应用程序)所须要的文件名和文件之间提供一种映射,因此目录管理要实现“按名存取”;目录存取的效率直接影响到系统的性能,因此要提升对目录的检索速度;在共享系统中,目录还须要提供用于控制访问文件的信息。此外,文件容许重名也是用户的合理和必然要求,目录管理经过树形结构来解决和实现

文件控制块和索引结点

同进程管理同样,为实现目录管理,操做系统中引入了文件控制块的数据结构。

1) 文件控制块。

文件控制块(FCB)是用来存放控制文件须要的各类信息的数据结构,以实现“按名存取”。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。为了建立一个新文件,系统将分配一个FCB并存放在文件目录中,成为目录项

FCB主要包含如下信息:
  • 基本信息,如文件名、文件的物理位置、文件的逻辑结构、文件的物理结构等。
  • 存取控制信息,如文件存取权限等。
  • 使用信息,如文件创建时间、修改时间等。

2) 索引结点。

在检索目录文件的过程当中,只用到了文件名,仅当找到一个目录项(查找文件名与目录项中文件名匹配)时,才须要从该目录项中读出该文件的物理地址。也就是说,在检索目录时,文件的其余描述信息不会用到,也不需调入内存。所以,有的系统(如UNIX,见表4-1)釆用了文件名和文件描述信息分开的方法,文件描述信息单独造成一个称为索引结点的数据结构,简称为 i 结点。在文件目录中的每一个目录项仅由文件名和指向该文件所对应的i结点的指针构成。

表4-1 UNIX的文件目录结构
文件名 索引结点编号
文件名1
文件名2





一个FCB的大小是64字节,盘块大小是1KB,则在每一个盘块中能够存放16个FCB(注意,FCB必须连续存放)。而在UNIX系统中一个目录项仅占16字节,其中14字节是文件名,2字节是 i 结点指针。在1KB的盘块中可存放64个目录项。这样,可以使查找文件时平均启动磁盘次数减小到原来的1/4,大大节省了系统开销。

存放在磁盘上的索引结点称为磁盘索引结点,UNIX中的每一个文件都有一个惟一的磁盘索引结点,主要包括如下几个方面:
  • 文件主标识符,拥有该文件的我的或小组的标识符。
  • 文件类型,包括普通文件、目录文件或特别文件。
  • 文件存取权限,各种用户对该文件的存取权限。
  • 文件物理地址,每一个索引结点中含有13个地址项,即 iaddr(0) ~ iaddr(12),它们以直接或间接方式给出数据文件所在盘块的编号。
  • 文件长度,以字节为单位。
  • 文件连接计数,在本文件系统中全部指向该文件的文件名的指针计数。
  • 文件存取时间,本文件最近被进程存取的时间、最近被修改的时间以及索引结点最‘ 近被修改的时间。
  • 文件被打开时,磁盘索引结点复制到内存的索引结点中,以便于使用。在内存索引结点中又增长了如下内容:
  • 索引结点编号,用于标识内存索引结点。
  • 状态,指示i结点是否上锁或被修改。
  • 访问计数,每当有一进程要访问此i结点时,计数加1,访问结束减1。
  • 逻辑设备号,文件所属文件系统的逻辑设备号。
  • 连接指针,设置分别指向空闲链表和散列队列的指针。

目录结构

在理解一个文件系统的需求前,咱们首先来考虑在目录这个层次上所须要执行的操做,这有助于后面文件系统的总体理解。
  • 搜索:当用户使用一个文件时,须要搜索目录,以找到该文件的对应目录项。
  • 建立文件:当建立一个新文件时,须要在目录中增长一个目录项。
  • 删除文件:当删除一个文件时,须要在目录中删除相应的目录项。
  • 显示目录:用户能够请求显示目录的内容,如显示该用户目录中的全部文件及属性。
  • 修改目录:某些文件属性保存在目录中,于是这些属性的变化须要改变相应的目录项。

操做时,考虑如下几种目录结构:

1) 单级目录结构。

在整个文件系统中只创建一张目录表,每一个文件占一个目录项,如图4-3所示。


图4-3单级目录结构

当访问一个文件时,先按文件名在该目录中查找到相应的FCB,经合法性检查后执行相应的操做。当创建一个新文件时,必须先检索全部目录项以确保没有“重名”的状况,而后在该目录中增设一项,把FCB的所有信息保存在该项中。当删除一个文件时,先从该目录中找到该文件的目录项,回收该文件所占用的存储空间,而后再清除该目录项。

单级目录结构实现了 “按名存取”,可是存在查找速度慢、文件不容许重名、不便于文件共享等缺点,并且对于多用户的操做系统显然是不适用的。

2) 两级目录结构。

单级目录很容易形成文件名称的混淆,能够考虑釆用两级方案,将文件目录分红主文件目录(Master File Directory, MFD)和用户文件目录(User File Directory, UFD)两级,如图4-4所示。


图4-4  两级目录结构

主文件目录项记录用户名及相应用户文件目录所在的存储位置。用户文件目录项记录该用户文件的FCB信息。当某用户欲对其文件进行访问时,只需搜索该用户对应的UFD,这既解决了不一样用户文件的“重名”问题,也在必定程度上保证了文件的安全。

两级目录结构能够解决多用户之间的文件重名问题,文件系统能够在目录上实现访问限制。可是两级目录结构缺少灵活性,不能对文件分类。

3) 多级目录结构(树形目录结构)。

将两级目录结构的层次关系加以推广,就造成了多级目录结构,即树形目录结构,如图4-5所示。

用户要访问某个文件时用文件的路径名标识文件,文件路径名是个字符串,由从根目录出发到所找文件的通路上的全部目录名与数据文件名用分隔符连接起来而成。从根目录出发的路径称绝对路径。当层次较多时,每次从根目录查询浪费时间,因而加入了当前目录,进程对各文件的访问都是相对于当前目录进行的。当用户要访问某个文件时,使用相对路径标识文件,相对路径由从当前目录出发到所找文件通路上全部目录名与数据文件名用分隔符“/”连接而成。


图4-5  树形目录结枸

图4-5是Linux操做系统的目录结构,“/dev/hda”就是一个绝对路径。若当前目录为 “/bin”,则“./ls”就是一个相对路径,其中符号表示当前工做目录。

一般,每一个用户都有各自的“当前目录”,登陆后自动进入该用户的“当前目录”。操做系统提供一条专门的系统调用,供用户随时改变“当前目录”。例如,UNIX系统中, “/etc/passwd”文件就包含有用户登陆时默认的“当前目录”,可用cd命令改变“当前目录”。

树形目录结构能够很方便地对文件进行分类,层次结构清晰,也可以更有效地进行文件的管理和保护。可是,在树形目录中查找一个文件,须要按路径名逐级访问中间结点,这就增长了磁盘访问次数,无疑将影响查询速度。

4) 无环图目录结构。

树形目录结构可便于实现文件分类,但不便于实现文件共享,为此在树形目录结构的基础上增长了一些指向同一结点的有向边,使整个目录成为一个有向无环图。引入无环图目录结构是为了实现文件共享,如图4-6所示。

当某用户要求删除一个共享结点时,若系统只是简单地将它删除,当另外一共享用户须要访问时,却没法找到这个文件而发生错误。为此能够为每一个共享结点设置一个共享计数器,每当图中增长对该结点的共享链时,计数器加 1;每当某用户提出删除该结点时,计数器减1。仅当共享计数器为0时,才真正删除该结点,不然仅删除请求用户的共享链。


图4-6  图形目录结构

共享文件(或目录)不一样于文件拷贝(副本)。若是有两个文件拷贝,每一个程序员看到的是拷贝而不是原件;但若是一个文件被修改,那么另外一个程序员的拷贝不会有改变。对于共享文件,只存在一个真正文件,任何改变都会为其余用户所见。

无环图目录结构方便实现了文件的共享,但使得系统的管理变得更加复杂。

4.5 共享文件:硬连接和软连接

文件共享使多个用户(进程)共享同一份文件,系统中只需保留该文件的一份副本。若是系统不能提供共享功能,那么每一个须要该文件的用户都要有各自的副本,会形成对存储空间的极大浪费。随着计算机技术的发展,文件共享的范围已由单机系统发展到多机系统,进而经过网络扩展到全球。这些文件的分享是经过分布式文件系统、远程文件系统、分布式信息系统实现的。这些系统容许多个客户经过C/S模型共享网络中的服务器文件。

现代经常使用的两种文件共享方法有:

基于索引结点的共享方式(硬连接)

在树形结构的目录中,当有两个或多个用户要共享一个子目录或文件时,必须将共享文件或子目录连接到两个或多个用户的目录中,才能方便地找到该文件,如图4-7所示。


图4-7  基于索引结点的共享方式

在这种共享方式中引用索引结点,即诸如文件的物理地址及其余的文件属性等信息,再也不是放在目录项中,而是放在索引结点中。在文件目录中只设置文件名及指向相应索引结点的指针。在索引结点中还应有一个连接计数count,用于表示连接到本索引结点(亦即文件) 上的用户目录项的数目。当count=2时,表示有两个用户目录项连接到本文件上,或者说是有两个用户共享此文件。

当用户A建立一个新文件时,它即是该文件的全部者,此时将count置为1。当有用户 B要共享此文件时,在用户B的目录中增长一个目录项,并设置一指针指向该文件的索引结点。此时,文件主仍然是用户A,count=2。若是用户A再也不须要此文件,不能将文件直接删除。由于,若删除了该文件,也必然删除了该文件的索引结点,这样便会便用户B的指针悬空,而用户B则可能正在此文件上执行写操做,此时用户B会没法访问到文件。所以用户A不能删除此文件,只是将该文件的count减1,而后删除本身目录中的相应目录项。用户B仍可使用该文件。当COunt=0时,表示没有用户使用该文件,系统将负责删除该文件。如图4-8给出了用户B连接到文件上的前、后状况。

利用符号链实现文件共享(软连接)

为使用户B能共享用户A的一个文件F,能够由系统建立一个LINK类型的新文件,也取名为F,并将文件F写入用户B的目录中,以实现用户B的目录与文件F的连接。在新文件中只包含被连接文件F的路径名。这样的连接方法被称为符号连接。


图4-8  文件共享中的连接计数

新文件中的路径名则只被看作是符号链,当用户B要访问被连接的文件F且正要读 LINK类新文件时,操做系统根据新文件中的路径名去读该文件,从而实现了用户B对文件 F的共享。

在利用符号链方式实现文件共享时,只有文件的拥有者才拥有指向其索引结点的指针。而共享该文件的其余用户则只有该文件的路径名,并不拥有指向其索引结点的指针。这样,也就不会发生在文件主删除一共享文件后留下一悬空指针的状况。当文件的拥有者把一个共享文件删除后,其余用户经过符号链去访问它时,会出现访问失败,因而将符号链删除,此时不会产生任何影响。固然,利用符号链实现文件共享仍然存在问题,例如:一个文件釆用符号链方式共享,当文件拥有者将其删除,而在共享的其余用户使用其符号连接访问该文件以前,又有人在同一路径下建立了另外一个具备一样名称的文件,则该符号链将仍然有效,但访问的文件已经改变,从而致使错误。

在符号链的共享方式中,当其余用户读共享文件时,须要根据文件路径名逐个地查找目录,直至找到该文件的索引结点。所以,每次访问时,均可能要屡次地读盘,使得访问文件的开销变大并增长了启动磁盘的频率。此外,符号链的索引结点也要耗费必定的磁盘空间。符号链方式有一个很大的优势,即网络共享只需提供该文件所在机器的网络地址以及该机器中的文件路径便可。

上述两种连接方式都存在一个共同的问题,即每一个共享文件都有几个文件名。换言之,每增长一条连接,就增长一个文件名。这实质上就是每一个用户都使用本身的路径名去访问共享文件。当咱们试图去遍历整个文件系统时,将会屡次遍历到该共享文件。

硬连接和软连接都是文件系统中的静态共享方法,在文件系统中还存在着另外的共享需求,即两个进程同时对同一个文件进行操做,这样的共享能够称为动态共享。

4.6 文件保护:文件访问类型和访问控制

为了防止文件共享可能会致使文件被破坏或未经核准的用户修改文件,文件系统必须控制用户对文件的存取,即解决对文件的读、写、执行的许可问题。为此,必须在文件系统中创建相应的文件保护机制。

文件保护经过口令保护、加密保护和访问控制等方式实现。其中,口令保护和加密保护是为了防止用户文件被他人存取或窃取,而访问控制则用于控制用户对文件的访问方式。

访问类型

对文件的保护能够从限制对文件的访问类型中出发。可加以控制的访问类型主要有如下几种:
  • 读:从文件中读。
  • 写:向文件中写。
  • 执行:将文件装入内存并执行。
  • 添加:将新信息添加到文件结尾部分。
  • 删除:删除文件,释放空间。
  • 列表清单:列出文件名和文件属性。

此外还能够对文件的重命名、复制、编辑等加以控制。这些高层的功能能够经过系统程序调用低层系统调用来实现。保护能够只在低层提供。例如,复制文件可利用一系列的读请求来完成。这样,具备读访问用户同时也具备复制和打印的权限了。

访问控制

解决访问控制最经常使用的方法是根据用户身份进行控制。而实现基于身份访问的最为普通的方法是为每一个文件和目录增长一个访问控制列表(Access-Control List, ACL),以规定每一个用户名及其所容许的访问类型

这种方法的优势是可使用复杂的访问方法。其缺点是长度没法预期而且可能致使复杂的空间管理,使用精简的访问列表能够解决这个问题。

精简的访问列表釆用拥有者、组和其余三种用户类型。
  • 拥有者:建立文件的用户。
  • 组:一组须要共享文件且具备相似访问的用户。
  • 其余:系统内的全部其余用户。

这样只需用三个域列出访问表中这三类用户的访问权限便可。文件拥有者在建立文件时,说明建立者用户名及所在的组名,系统在建立文件时也将文件主的名字、所属组名列在该文件的FCB中。用户访问该文件时,按照拥有者所拥有的权限访问文件,若是用户和拥有者在同一个用户组则按照同组权限访问,不然只能按其余用户权限访问。UNIX操做系统即釆用此种方法。

口令和密码是另外两种访问控制方法。

口令指用户在创建一个文件时提供一个口令,系统为其创建FCB时附上相应口令,同时告诉容许共享该文件的其余用户。用户请求访问时必须提供相应口令。这种方法时间和空间的开销很少,缺点是口令直接存在系统内部,不够安全。

密码指用户对文件进行加密,文件被访问时须要使用密钥。这种方法保密性强,节省了存储空间,不过编码和译码要花费必定时间。

口令和密码都是防止用户文件被他人存取或窃取,并无控制用户对文件的访问类型。

注意两个问题:
  • 现代操做系统经常使用的文件保护方法,是将访问控制列表与用户、组和其余成员访问控制方案一块儿组合使用。
  • 对于多级目录结构而言,不只须要保护单个文件,并且还须要保护子目录内的文件, 即须要提供目录保护机制。目录操做与文件操做并不相同,所以须要不一样的保护机制。