暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

详解操作系统的文件管理

海人为记 2021-09-08
4196

所有计算机当中的程序与数据都需要存储和检索信息,但是内存只适合存储计算机运行时需要的数据,并且容量十分有限,所以计算机系统必须要有能长期存储信息的外存。对外存中的数据操作,用一种抽象类数据类型来表示,即文件,而文件管理系统主要是将其管理的程序和数据通过组织为一系列文件的方式实现,简称文件系统。文件系统由文件管理、被管理文件及实施文件管理所需的数据结构所组成。

文件

文件是以计算机硬盘为载体的存储在计算机上并具有文件名的若干相关元素的集合,文件可以是文本文档、图片、程序等,用户输出输出时都是以文本为基本单位。

操作系统要管理存储空间中的数据,会为数据进行划分和设置访问权限信息,以便于对数据进行分类、索引和不同用户的不同访问权限;而用户对数据进行命名、分类、查找、安全性等方面会比较关心。存储空间中的数据即是文件。

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

用户通过文件系统建立文件,提供应用程序的输入、输出,对资源进行管理。首先了解文件的结构,通过自底向上的方式定义据组成分为数据项、记录和文件的层次关系,如下图所示。

  • 数据项。文件系统中最低级的数据组织形式,可分为以下两种类型:

    • 基本数据项。用于描述一个对象的某种属性的字符集,是数据中可命名的最小逻辑数据单位,即原子数据,又称为字段。如姓名、日期或证件号等。
    • 组合数据项。由多个基本数据项组成,简称组项。如工资,可由基本工资、工资工龄和奖励工资等基本项所组成。
  • 记录。一组相关数据项的集合,用于描述一个对象在某方面的属性。如一名考生的报名记录包括考生姓名、出生日期、包括学校代号、身份证号等数据项。对象所处的不同环境可作为不同的对象。

  • 文件。指由创建者所定义的一组相关元素的集合,逻辑上可分为有结构文件和无结构文件两种。在有结构文件中,文件由一组相似的记录组成,如包括某学校的所有考生的报考信息记录,又称记录式文件,而无结构文件则被视为一个字符流,比如一个二进制文件或字符文件,又称流式文件。

在操作系统中,通常将程序和数据组织成文件。文件可以是数字、字母或二进制代码,基本访问单元可以是字节、行或记录。文件可以长期存储于硬盘或其他二级存储器中,允许可控制的进程间共享访问,能够被组织成复杂的结构。

文件属性

文件具有一定的属性,系统不同,属性也会有所不同,但通常都包括如下属性。

  • 名称。文件名称唯一,以容易读取的形式保存。
  • 标识符。表示文件系统内文件的唯一标签,通常为数字,是对人不可读的一种内部名称。
  • 类型。被支持不同类型的文件系统所使用,如源文件、目标文件及可执行文件等。
  • 物理位置。指向文件所在设备及所在设备中地址的指针。
  • 大小。文件当前大小,也可包含文件允许的最大值。长度单位用字节、字或块表示。
  • 保护。对文件进行保护的访问控制信息。
  • 时间、日期和用户标识。文件创建、上次修改和上次访问的相关信息,用于保护和跟踪文件的使用。

所有文件的信息都保存在目录结构中,而目录结构保存在外存上。文件信息在需要时才调入内存。通常,目录条目包括文件名称及其唯一的标识符,而标识符定位其他属性的信息。

文件操作

文件属于抽象数据类型,用户可以通过文件系统提供的系统调用来实施对文件的操作。下面介绍几种基本的系统调用操作,如下所示。

  1. 创建文件。创建新文件时,要为新文件分配空间,并在文件目录中为新文件建立目录项,目录项中记录新文件的名称、物理地址及其他的信息。
  2. 删除文件。先从文件目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。
  3. 打开文件。执行系统调用,打开文件,首次打开时,将文件属性和磁盘地址表复制到内存中,并将该索引返回给用户,便于后续的快速访问。
  4. 关闭文件。执行系统调用,用户不再对文件操作时,利用系统调用关闭文件,操作系统将会把该文件从打开文件表中的表目中删除。
  5. 写文件。执行系统调用,根据文件名查找目录中的目录项,并通过写指针执行写操作。系统为该文件维护一个写指针。每当发生写操作,便更新写指针。
  6. 读文件。执行系统调用,根据文件名称查找目录中的目录项,获得要读入文件块的内存位置。系统维护一个读位置的指针,每发生读操作时,更新读指针。一个进程通常只对一个文件读或写,因此当前操作位置可作为每个进程当前文件位置的指针。由于读和写操作都使用同一指针,因此节省了空间,也降低了系统复杂度。
  7. 文件重定位,又称文件寻址。按某条件搜索目录,将当前文件位置设为给定值,并且不会读、写文件。
  8. 截断文件。允许文件所有属性不变,并删除文件内容,即将其长度设为 0 并释放其空间。

将上述操作组合起来就执行文件操作。例如,为文件赋值,可以创建新文件、从旧文件读出并写入新文件。

文件结构

文件的逻辑结构是从用户观点出发看到的文件的组织形式,即文件是由一系列的逻辑记录组成,文件的逻辑记录是能够被存取的基本单位。文件的物理结构是从实现观点出发看到的文件在外存上的存储组织形式。文件的逻辑结构与存储介质特性无关,但文件的物理结构与存储介质的特性有很大关系。文件的逻辑结构实际上是指在文件的内部,数据逻辑上是如何组织起来的。

按照逻辑结构,可将文件划分为无结构文件和有结构文件两种。

无结构文件

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

有结构文件

有结构文件又称为 记录式文件,每个记录都用于描述实体集中的一个实体,各记录有着相同或不同的数目的数据项,而记录的长度也分为定长和不定长两类。

  • 定长记录。指文件中各记录的长度都是相同的,各数据项都处在记录中相同的位置,具有相同的顺序和长度,文件长度用记录数目表示。定长记录能有效地提高检索记录的速度和效率,能方便对文件进行处理和修改,所以这是目前较常用的一种记录格式,被广泛用于数据处理中。
  • 变长记录。指文件中各记录的长度不相同,产生变长记录的原因可能是各数据项数目不相同,也可能是数据项本身的长度不定。变长记录的检索速度慢,不便于对文件进行处理和修改,但由于变长记录很适合于某些场合,所以也是目前较为常用的一种记录格式,被广泛用于许多商业领域。

有结构文件根据记录的组织形式可以分为顺序文件、索引文件与索引顺序文件等。

顺序文件

顺序文件 指由一系列记录按某种顺序排列所形成的文件,其中的记录可以是定长或可变长,可以顺序存储或以链表形式存储,在访问时需要顺序搜索文件。

顺序文件中的记录按照不同顺序排列方式可分为两种结构,如下所示。

  1. 串结构,通常按存入时间的先后排列, 记录之间的顺序与关键字无关。对串结构文件检索时,每次都要从头开始,直至查到或查完为止,因此,对串结构文件检索较为费时。
  2. 顺序结构,指文件中的所有记录按关键字顺序排列,每个记录的关键字值在文件中具有唯一性。对顺序结构文件检索时,可以利用有效的查找算法提高检索效率,因此,顺序结构文件可有更高的检索速度和效率。

在对记录进行批量存取时,顺序文件的存储效率是所有逻辑文件中最高的。此外,也只有顺序文件才能存储在磁带上,并能有效地工作,但顺序文件对查找、修改、增加或删除单条记录的操作比较困难。

索引文件

要查找定长记录文件中的记录,根据公式 就可以查找到第 i 条记录相对于第 1 条记录的地址 ,L 为定长记录的长度。但对于可变长记录的文件,要查找第 i 条记录,必须顺序地查找前 i-1 条记录,从而获得相应记录的长度 L,进而按 公式计算出第 i 条记录的首址 。下图为索引文件示意图。

变长记录文件只能顺序查找,系统开销较大。为此,可以为变长记录文件建立一张索引表来加快索引速度,实现直接存取,为每个记录在索引表中设置一个表项,记录指向记录的指针以及记录的长度 L。索引表本身是定长记录的顺序文件,即 索引文件

在记录很多或访问要求高的文件中,需要引入索引以提供有效的访问。利用索引文件插入和删除记录也非常方便,但除了主文件外,还须配置一张索引表,而且每个记录都要有一个索引项,因此增加了存储开销。

索引顺序文件

索引顺序文件是顺序和索引两种组织形式相结合。索引顺序文件将顺序文件中的所有记录分为若干组,并建立一张索引表,在索引表中为每组中的第一条记录建立一个索引项,其中含有该记录的关键字值和指向该记录的指针,并增加了溢出文件,用它来记录新增加的、删除的和修改的记录,能有效地克服变长记录文件不能随机访问,以及不便于记录的删除和插入的缺点。

如下图所示,主文件名包含姓名和其他数据项。姓名为关键字,索引表中为每组的第一条记录的关键字值,用指针指向主文件中该记录的起始位置。索引表只包含关键字和指针两个数据项,所有姓名关键字递增排列。主文件中记录分组排列,同一个组中的关键字可以无序,但组与组之间的关键字必须有序。查找一条记录时,首先通过索引表找到其所在的组,然后在该组中使用顺序查找,就能很快地找到记录。

对于含有 N 条记录的顺序文件,查找某关键字值的记录时,平均需要查找 N/2 次。在索引顺序文件中,假设 N 条记录分为 组,索引表中有 个表项,每组有 条记录,在查找某关键字值的记录时,选顺序查找索引表,需要查找 次,然后在主文件中对应的组中顺序查找,也需要查找 次,因此共需查找 次。显然,索引顺序文件提高了查找效率,若记录数很多,则可采用两级或多级索引。

索引文件和索引顺序文件都提高了存取的速度,但因为配置索引表而增加了存储空间。

直接与哈希文件

直接文件根据给定的关键字通过键值转换直接获得指定记录的物理地址,利用哈希函数或散列函数的哈希文件是应用最广泛的一种直接文件,通过哈希函数求得某一目录表相应表目的指针,该表目的内容指向相应的记录所在的物理块,如下图所示。

例如,若令 K
为记录键值,用 V
作为通过哈希函数 H
的转换所形成的该记录在目录表中对应表目的位置,则有关系 V = H(K)
。通常,把哈希函数作为标准函数存于系统中,供存取文件时调用。

哈希文件有很高的存取速度,但是会引起冲突,即不同关键字的哈希函数值相同。

文件目录

文件目录将文件管理系统和文件集合关联上,它包含有关文件的信息如属性、位置和所有权等,这些信息主要由操作系统进行管理。对目录管理的要求如下所示。

  • 实现按名存取。从用户的角度看,目录在程序所需要的文件名和文件之间提供一种映射,通过文件名便能快速准确地找到指定文件在外存上的存储位置。
  • 提高目录检索速度。通过合理地组织目录结构加快对目录的检索速度,从而提高对文件的存储速度。
  • 文件共享。多用户系统的目录需要提供用于控制访问文件的信息,以实现多用户共享文件。
  • 文件允许重名。目录管理通过树形结构解决和实现不同用户对不同文件采用相同名字的要求。

文件控制块

为实现目录管理,在操作系统中引入了描述和控制文件的数据结构,即文件控制块(File Control Block)。文件控制块主要包含以下几类信息:

  • 基本信息类
    • 文件名,指用于标识一个文件的符号名,利用文件名进行文件的存取。
    • 文件的物理位置,指文件在外存上的存储位置,包括存放文件的设备名、文件在外存上的起始盘块号、指示文件所占用的盘块数,或字节数的文件长度。
    • 文件的逻辑结构,指示文件是流式文件还是记录式文件、记录数,文件是定长记录还是变长记录等。
    • 文件的物理结构,指示文件是顺序文件还是链接式文件或索引文件。
  • 存取控制信息类,包括文件和用户的存取权限。
  • 使用信息类,包括文件建立时间、修改时间,以及当前使用信息。

文件管理程序借助于文件控制块的信息操作文件,文件与文件控制块一一对应。把文件控制块的有序集合称为文件目录,即一个文件控制块就是一个文件目录项。为创建一个新文件,系统分配一个文件控制块并存放在文件目录中,成为目录项。文件目录也可看成文件,称为目录文件。

索引结点

在检索目录文件的过程中,只用到了文件名,仅当找到一个目录项时,才需要从该目录项中读出该文件的物理地址,文件的其他描述信息不会用到,也不需要调入内存。因此,有的系统中,如 Unix 系统采用了文件名和文件描述信息分开的方法,使文件描述信息单独形成一个称为索引结点的数据结构,简称 i 结点。在文件目录中的每个目录项仅由文件名和指向该文件所对应的 i 结点的指针构成,如下所示。

文件名索引结点编号
文件名1
文件名2
······
···

一个文件控制块的大小是 64B,盘块大小是 1KB,因此在每个盘块中可以连续存放
16 个文件控制块。而在 Unix 系统中,一个目录项仅占 16 个字节,其中 14 个字节是文件名,2个字节 是 i 结点指针。在 1KB 的盘块中可存放 64 个目录项。这样,就可使查找文件时的平均启动磁盘次数减少到原来的 1/4,大大节省了系统开销。

每个文件存放到磁盘上时,都会有唯一的一个索引结点,称为磁盘索引结点。主要包括以下内容:

  • 文件主标识符,拥有该文件的个人或小组的标识符。
  • 文件类型,包括普通文件、目录文件或特别文件。
  • 文件存取权限,指各类用户对该文件的存取权限。
  • 文件物理地址,每个索引结点中含有 13 个地址项,即 iaddr(0)
    ~iaddr(12)
    ,它们以直接或间接方式给出数据文件所在盘块的编号。
  • 文件长度,指以字节为单位的文件长度。
  • 文件链接计数,指在本文件系统中所有指向该文件的文件名的指针计数。
  • 文件存取时间,指本文件最近被进程存取的时间、最近被修改的时间及索引结点最近被修改的时间。

文件被打开时,为了便于使用,会将磁盘索引结点拷贝到内存的索引结点中,称为内存索引结点。内存索引结点又增加了以下内容:

  • 索引结点编号,用于标识内存索引结点。
  • 状态,指示 i 结点是否上锁或被修改。
  • 访问计数,每当有一进程要访问此 i 结点时,计数加 1,访问完再减 1。
  • 逻辑设备号,文件所属文件系统的逻辑设备号。
  • 链接指针,设置分别指向空闲链表和散列队列的指针。

目录结构

目录结构的组织,关系到文件系统的存取速度、文件的共享性和安全性,而目录结构所执行的操作如下所示。

  • 搜索。当用户使用一个文件时,需要搜索目录,以找到该文件的对应目录项。
  • 创建文件。当创建一个新文件时,需要在目录中增加一个目录项。
  • 删除文件。当删除一个文件时,需要在目录中删除相应的目录项。
  • 显示目录。用户可以请求显示目录的内容,如显示该用户目录中的所有文件及属性。
  • 修改目录。某些文件属性保存在目录中,因而这些属性的变化需要改变相应的目录项。

单级目录结构

单级目录结构在整个文件系统中只建立一张目录表,每个文件占一个目录项,目录项中含文件名、文件扩展名、文件长度、文件类型、文件物理地址、其它文件属性和表示每个目录项是否空闲的状态位,如下图所示。

当访问一个文件时,先按文件名在该目录中查找到相应的文件控制块,经合法性检查后执行相应的操作。当建立一个新文件时,必须先检索所有目录项以确保新文件名在目录中是唯一的,然后在该目录中增设一项,把文件控制块的全部信息保存在该项中,当删除一个文件时,先从该目录中找到该文件的目录项,回收该文件所占用的存储空间,然后清除该目录项。

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

两级目录结构

单级目录容易造成文件名称的混淆,因此考虑采用两级方案,按文件目录分成主文件目录(Master File Directory,MFD)和用户文件目录(User File Directory,UFD)两级,如下图所示。

主文件目录项记录用户名及相应用户文件目录所在的存储位置。用户文件目录项记录该用户文件的文件控制块信息。当某用户欲对其文件进行访问时,只需搜索该用户对应的用户文件目录,即可解决不同用户文件关于重名的问题,并一定程度上保证了文件的安全。

两级目录结构可以解决多用户之间的文件重名问题并提高了检索目录的速度,文件系统可以在目录上实现访问限制。但是两级目录结构缺乏灵活性,不能对文件分类。

多级目录结构

将两级目录结构的层次关系加以推广,就形成了多级目录结构,即树形目录结构,它提高了对目录的检索速度和文件系统的性能。主目录被称为根目录,每个文件目录中只有一个根目录,每个文件和每个目录都只能有一个父目录。把数据文件称为树叶,其它目录均作为数的结点,或称为子目录,如下图所示。

树形结构目录中,根目录到任何数据文件都只有一条唯一通路。从根目录开始,把全部目录文件名与数据文件名用操作系统规定的分隔符
连接起来,构成数据文件的 唯一路径名。用户访问某个文件时,会用文件路径名标识文件,从根目录出发的路径称为绝对路径。

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

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

无环图目录结构

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

当某用户要求删除一个共享结点时,若系统只是简单地将它删除,则当另一共享用户需要访问时,会因无法找到这个文件而发生错误。为此,可为每个共享结点设置一个共享计数器,每当图中增加对该结点的共享链时,计数器加 1;每当某用户删除该结点时,计数器减 1。仅当共享计数器为 0 时,才真正删除该结点,否则仅删除请求用户的共享链。共享文件或目录不同于文件拷贝。若有两个文件拷贝,则每个程序员看到的是拷贝而不是原件;然而,若一个文件被修改,则另一个程序员的拷贝不会改变。对于共享文件,只存在一个真正的文件,任何改变都会为其他用户所见。

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

文件共享

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

常用的两种文件共享方法如下所示。

基于索引结点

在树形结构的目录中,当有两个或多个用户要共享一个子目录或文件时,必须将共享文件或子目录链接到两个或多个用户的目录中,才能方便地找到该文件,但会破坏树的特性,因此,引用了索引结点来解决该问题。

在基于索引结点的共享方式中,诸如文件的物理地址及其他的文件属性等信息,不再放在目录项中,而放在索引结点中。在文件目录中只设置文件名及指向相应索引结点的指针,如下图所示。

在索引结点中还应有一个链接计数 count
,用于表示链接到本索引结点上的用户目录项的数目,索引结点即文件;当 count=3
时,表示有三个用户目录项链接到本文件上,或者说有三个用户共享此文件;当 count=2
时,则会删除相应目录中的目录项,链接到本索引结点上的其它用户目录项仍可以使用该索引结点;当 count=0
时,表示没有用户使用该索引结点,系统负责删除该索引结点,如下图所示,给出了用户链接到文件上的前后情况。

基于符号链

允许一个文件或子目录有多个父目录,但其中仅有一个作为主(属主)父目录,其他的通过链接方式链接到父目录,即基于符号链的共享方式。如下图所示,主父目录使用实线链接,而其它的父目录用虚线链接,这样做的最大好处是,用实现链接起来的属主结构仍然是简单树,对文件的删除、查找等都更为方便。

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

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

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

在符号链的共享方式中,当其他用户读共享文件时,需要根据文件路径名逐个地查找目录,直至找到该文件的索引结点。因此,每次访问时,都可能要多次地读盘,使得访问文件的开销变大并增加了启动磁盘的频率。此外,符号链的索引结点也要耗费一定的磁盘空间。

符号链方式还有一个很大的优点,即网络共享只需提供该文件所在机器的网络地址及该机器中的文件路径。

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

硬链接是多个指针指向一个索引结点,保证只要还有一个指针指向索引结点,索引结点就不能删除, 基于索引结点的共享方式就是硬链接方式;软链接是把到达共享文件的路径记录下来,当要访问文件时,根据路径寻找文件,基于符号链的共享方式就是软链接。硬链接的查找速度要比软链接的快。

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

文件保护

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

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

访问类型

对文件的保护可从限制对文件的访问类型中出发。可加以控制的访问类型主要有以下几种。

  • 读。从文件中读。
  • 写。向文件中写。
  • 执行。将文件装入内存并执行。
  • 添加。将新信息添加到文件结尾部分。
  • 删除。删除文件,释放空间。
  • 列表清单。列出文件名和文件属性。

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

访问控制

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

这种方法的优点是可以使用复杂的访问方法,缺点是长度无法预计并且可能导致复杂的空间管理,使用精简的访问列表可以解决这个问题。

精简的访问列表采用拥有者、组和其他三种用户类型。

  1. 拥有者。创建文件的用户。
  2. 组。一组需要共享文件且具有类似访问的用户。
  3. 其他。系统内的所有其他用户。

这样,只需用三个域即可列出访问表中这三类用户的访问权限。文件拥有者在创建文件时,说明创建者用户名及所在的组名,系统在创建文件时也将文件主的名字、所属组名列在该文件的文件控制块中。用户访问该文件时,按照拥有者所拥有的权限访问文件,若用户和拥有者在同一个用户组,则按照同组权限访问,否则只能按其他用户权限访问。

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

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

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

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

注意两个问题:

  1. 现代操作系统常用的文件保护方法是,将访问控制列表与用户、组和其他成员访问控制方案一起组合使用。
  2. 对于多级目录结构而言,不仅需要保护单个文件,还需要保护子目录内的文件,即需要提供目录保护机制。目录操作与文件并不相同,一次需要不同的保护机制。




文章转载自海人为记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论