计算机操作系统 第七章:文件管理(2)

目录

7.3  文 件 目 录 

7.3.1  文件控制块和索引结点

7.3.2  简单的文件目录

 7.3.3  树形结构目录(Tree-Structured Directory) 

7.3.4  目录查询技术

7.4  文 件 共 享

7.4.1  基于有向无循环图实现文件共享

7.4.2  利用符号链接实现文件共享


7.3  文 件 目 录 

      

  (1) 实现“按名存取”。
 
(2) 提高对目录的检索速度。
 
(3) 文件共享。
 
(4) 允许文件重名。

7.3.1  文件控制块和索引结点


1. 文件控制块FCB(File Control Block)
  为了能对系统中的大量文件施以有效的管理,在文件控制块中,通常应含有三类信息,即基本信息、存取控制信息及使用信息。

1) 基本信息类
  基本信息类包括:
  
(1) 文件名。
  
(2) 文件物理位置。 
  
(3) 文件逻辑结构。
  
(4) 文件的物理结构。

2) 存取控制信息类
  存取控制信息类包括文件主的存取权限、核准用户的存取权限以及一般用户的存取权限。

3) 使用信息类
  使用信息类包括文件的建立日期和时间、文件上一次修改的日期和时间,以及当前使用信息。这些信息包括当前已打开该文件的进程数,是否被其它进程锁住,文件在内存中是否已被修改但尚未拷贝到盘上等。应该说明,对于不同
OS的文件系统,由于功能不同,可能只含有上述信息中的某些部分。 

 2. 索引结点
  1) 索引结点的引入
  文件目录通常是存放在磁盘上的,当文件很多时,文件目录可能要占用大量的盘块。在查找目录的过程中,必须先将存放目录文件的第一个盘块中的目录调入内存,然后将用户所给定的文件名,与目录项中的文件名逐一比较。若未找到指定文件,还需要将下一盘块的目录项调入内存。

 2) 磁盘索引结点
  这是存放在磁盘上的索引结点。每个文件有唯一的一个磁盘索引结点,它主要包括以下内容:
  
(1) 文件主标识符,即拥有该文件的个人或小组的标识符;
  
(2) 文件类型,包括正规文件、目录文件或特别文件;
  
(3) 文件存取权限,指各类用户对该文件的存取权限;
  
(4) 文件物理地址,每一个索引结点中含有13个地址项,即iaddr(0)iaddr(12),它们以直接或间接方式给出数据文件所在盘块的编号;

 (5) 文件长度,指以字节为单位的文件长度;
  
(6) 文件连接计数,表明在本文件系统中所有指向该(文件的)文件名的指针计数;
  
(7) 文件存取时间,指出本文件最近被进程存取的时间、最近被修改的时间及索引结点最近被修改的时间。

3) 内存索引结点
  这是存放在内存中的索引结点。当文件被打开时,要将磁盘索引结点拷贝到内存的索引结点中,便于以后使用。在内存索引结点中又增加了以下内容:
  
(1) 索引结点编号,用于标识内存索引结点;
  
(2) 状态,指示i结点是否上锁或被修改;
  
(3) 访问计数,每当有一进程要访问此i结点时,将该访问计数加1,访问完再减1
  
(4) 文件所属文件系统的逻辑设备号;
  
(5) 链接指针,设置有分别指向空闲链表和散列队列的指针。

7.3.2  简单的文件目录


1. 单级文件目录
  这是最简单的文件目录。在整个文件系统中只建立一张目录表,每个文件占一个目录项,目录项中含文件名、文件扩展名、文件长度、文件类型、文件物理地址以及其它文件属性。此外,为表明每个目录项是否空闲,又设置了一个状态位。单级文件目录如图7-9所示。

 

 2. 两级文件目录
  为了克服单级文件目录所存在的缺点,可以为每一个用户再建立一个单独的用户文件目录UFD(User File Directory)。这些文件目录具有相似的结构,它由用户所有文件的文件控制块组成。此外,在系统中再建立一个主文件目录MFD(Master File Directory);在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目录文件的指针。

 

 7.3.3  树形结构目录(Tree-Structured Directory) 


1. 树形目录
  在现代OS中,最通用且实用的文件目录无疑是树形结构目录。它可以明显地提高对目录的检索速度和文件系统的性能。主目录在这里被称为根目录,在每个文件目录中,只能有一个根目录,每个文件和每个目录都只能有一个父目录。把数据文件称为树叶,其它的目录均作为树的结点,或称为子目录。图7-11示出了树形结构目录。

 2. 路径名和当前目录
  1) 路径名(path name)
  在树形结构目录中,从根目录到任何数据文件都只有一条唯一的通路。在该路径上,从树的根(即主目录)开始,把全部目录文件名与数据文件名依次地用“/”连接起来,即构成该数据文件唯一的路径名。

2) 当前目录(Current Directory)
  当一个文件系统含有许多级时,每访问一个文件,都要使用从树根开始,直到树叶(数据文件)为止的、包括各中间节点(目录)名的全路径名。

3. 目录操作
(1) 创建目录。
(2) 删除目录。
① 不删除非空目录。
② 可删除非空目录。

(3) 改变目录。
(4) 移动目录。
(5) 链接(Link)操作。
(6) 查找。

7.3.4  目录查询技术


1. 线性检索法
  线性检索法又称为顺序检索法。在单级目录中,利用用户提供的文件名,用顺序查找法直接从文件目录中找到指名文件的目录项。在树形目录中,用户提供的文件名是由多个文件分量名组成的路径名,此时需对多级目录进行查找。假定用户给定的文件路径名是 /usr/ast/mbox,则查找 /usr/ast/mbox文件的过程如图7-12所示。

 2. Hash方法
  7.2.6节中曾介绍了Hash文件。如果我们建立了一张Hash索引文件目录,便可利用Hash方法进行查询,即系统利用用户提供的文件名,并将它变换为文件目录的索引值,再利用该索引值到目录中去查找,这样将显著地提高检索速度。

7.4  文 件 共 享



  在现代计算机系统中,必须提供文件共享手段,即指系统应允许多个用户(进程)共享同一份文件。这样,在系统中只需保留该共享文件的一份副本。如果系统不能提供文件共享功能,就意味着凡是需要该文件的用户,都须各自备有此文件的副本,显然这会造成对存储空间的极大浪费。

7.4.1  基于有向无循环图实现文件共享


1. 有向无循环图DAG(Directed Acyclic Graph)
  在严格的树形结构目录中,每个文件只允许有一个父目录,父目录可以有效地拥有该文件,其它用户要想访问它,必须经过其属主目录来访问该文件。这就是说,对文件的共享是不对称的,或者说,树形结构目录是不适合文件共享的。如果允许一个文件可以有多个父目录,即有多个属于不同用户的多个目录,同时指向同一个文件,这样虽会破坏树的特性,但这些用户可用对称的方式实现文件共享,而不必再通过其属主目录来访问。

 2. 利用索引结点
  为了解决这个问题,可以引用索引结点,即诸如文件的物理地址及其它的文件属性等信息,不再是放在目录项中,而是放在索引结点中。在文件目录中只设置文件名及指向相应索引结点的指针,如图7-14所示。

 

 

7.4.2  利用符号链接实现文件共享


1. 利用符号链接(Symbolic Linking)的基本思想
  利用符号链接实现文件共享的基本思想,是允许一个文件或子目录有多个父目录,但其中仅有一个作为主(属主)父目录,其它的几个父目录都是通过符号链接方式与之相链接的(简称链接父目录)

 2. 如何利用符号链实现共享
  为使链接父目录D5能共享文件F,可以由系统创建一个LINK类型的新文件,也取名为F,并将F写入链接父目录D5中,以实现D5与文件F8的链接。在新文件F中只包含被链接文件F8的路径名。这样的链接方法被称为符号链接。新文件F中的路径名则只被看做是符号链。当用户通过D5访问被链接的文件F8,且正要读LINK类新文件时,此要求将被OS截获,OS根据新文件中的路径名去找到文件F8,然后对它进行读(),这样就实现了用户B对文件F的共享。

3. 利用符号链实现共享的优点
  在利用符号链方式实现文件共享时,只是文件主才拥有指向其索引结点的指针;而共享该文件的其他用户则只有该文件的路径名,并不拥有指向其索引结点的指针。这样,也就不会发生在文件主删除一共享文件后留下一悬空指针的情况。当文件的拥有者把一个共享文件删除后,如果其他用户又试图通过符号链去访问一个已被删除的共享文件,则会因系统找不到该文件而使访问失败,于是再将符号链删除,此时不会产生任何影响。

4. 利用符号链的共享方式存在的问题
  利用符号链的共享方式也存在着一些问题:当其他用户去读共享文件时,系统是根据给定的文件路径名逐个分量()地去查找目录,直至找到该文件的索引结点。因此,在每次访问共享文件时,都可能要多次地读盘。这使每次访问文件的开销甚大,且增加了启动磁盘的频率。此外,要为每个共享用户建立一条符号链,而由于链本身实际上是一个文件,尽管该文件非常简单,却仍要为它配置一个索引结点,这也要耗费一定的磁盘空间。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重生之我是泰勒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值