6.3目录管理
操作系统对文件管理通常有以下几个方面的要求:
- 实现按名存取
- 提高目录检索速度
- 允许文件重名
- 允许文件共享
6.3.1文件目录的概念
1.文件控制块
- 一个文件包括两个部分:一个是文件体,另一个是文件控制块(FCB)。每个文件都有一个文件控制块,它是文件存在的唯一标识。
- 通常包括三类信息:基本信息、存取控制信息、使用信息。
2.索引结点
- 索引结点引入:
- 每个文件都有一个文件控制块,那么文件目录就会占用大量的磁盘块。
- 检索目录的时候实际上只用到了文件控制块中的文件名。所以不需要将其他描述信息加载到内存中。
- 索引结点的分类:分为磁盘索引节点和内存索引节点。
- 磁盘索引节点是存放磁盘上的索引节点,每个文件都有唯一的磁盘索引节点,包含了文件控制块中除文件名以外的文件属性信息。
- 内存索引节点:每打开一个文件时,都会在内存中为该文件打开一个内存索引节点,索引节点主要内容是复制磁盘索引节点的,也会增加若干使用状态信息。
6.3.2文件目录结构
全部由文件目录项组成的文件称为目录文件。常用的有单级目录结构、两级目录结构、多级目录结构。
- 单级目录结构实现和管理简单,且能实现按名存取,缺点是查找速度慢、不允许有重名的文件、不便于实现文件共享。
- 两级目录结构,分为主目录文件和用户目录文件。提高了检索速度,允许文件重名、不同用户可以使用不同文件名来访问同一个共享文件。
- 多级目录结构,在两级目录加以推广,就是允许用户目录下再建立下级目录。又称为树型目录结构。优点是层次清晰、解决了文件重名的问题、便于实现文件共享、查询速度更加快。
6.3.3目录检索技术
当用户要访问一个文件时,系统首先要根据路径名对目录进行查找,然后再进行操作。目前主要有线性检索法和Hash方法。对于线性检索法只要任何一个文件分量没有找到就停止查找。如果是Hash方法文件名如果允许使用“*” “?”,此时就无法使用Hash方法。
6.4文件存储空间管理
常用的磁盘存储空间管理方法有:空闲表法、空闲链表法、位示图法、成组链接法。
- 空闲表法:建立一张空闲表,每个表项有序号、空闲区起始块号、空闲块的数量等信息。,常用于外存空间连续分配方式,仅当空闲区较少时比较有效。
- 空闲块链表法:磁盘的每个空闲盘块中放置一个指针,指向另一个空闲盘块。
- 位示图:利用一个二进制位来表示磁盘中的一个盘块使用情况。
- 位于第i行,第j列,对应的盘块号为b = n(i-1)+j,n为每一行的列数,i、j都是从1开始的。
- 回收时,i= (b-1)div n + 1;j = (b-1)mod n + 1.
- 成组链接法:适用于大型的文件系统,Unix就是使用这种方法。
6.5文件共享和保护
6.5.1文件共享方法:
- 一是基于索引节点的共享方式;(硬链接),新建一个目录项,填入共享索引节点的指针,只有count=1时,文件主才可以删除文件,其用户不可以删除文件,只可以断开链接。不能实现跨文件卷的文件共享??
- 二是通过符号链接的方式;(软连接)共享该文件的路径,新建一个目录项,分配空间,写入文件路径,只有文件主才有文件索引节点指针。增加了存储开销。
6.5.2文件保护
- 文件备份:批量备份和同步备份。
- 批量备份:又分为全量转储和增量转储。
- 同步备份:镜像盘支持;双机动态文件备份
- 文件访问保护
- 口令保护
- 加密保护
- 设置访问权限