目录
2.0文件控制块和索引结点
2.1目录的结构
2.1.1单级目录结构
2.1.2两级目录结构
2.1.3树形目录结构
2.1.4有向无环图目录结构
2.2目录的操作
2.4文件共享
2.4.1基于索引结点(硬链接)
2.4.2基于符号链(软链接)
2.0文件控制块和索引结点
除了文件数据,操作系统还会保存与文件相关的信息,如所有者、创建时间等,这些附加信息称为文件属性或文件元数据。
文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构,以实现用户“按名存取”。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。一个文件具有一个FCB。
一个文件目录也被视为一个文件,称为目录文件。
FCB(File Control Block)主要包含以下信息:
- 基本信息,如文件名、文件的物理位置、文件的逻辑结构、文件的物理结构。
- 存取控制信息,包括文件拥有者的存取权限、核准用户的存取权限和一般用户的存取权限。
- 使用信息,如文件创建时间、最后一次修改时间和最后一次存取时间等。
在检索目录的过程中,只需用文件名,当找到一个目录项(其中的文件名与要查找的文件名匹配)时,才需从该目录项中读出该文件的物理地址。
因此有的系统(如UNIX)便采用了文件名和文件描述信息分开的方法,使文件描述信息单独形成一个称为索引结点的数据结构,简称 i 结点(inode)。这种方法可以减少查找文件的平均启动磁盘次数,节省系统开销。
在文件目录中的每个目录项仅由文件名和指向该文件所对应的索引结点的指针构成。
存放在外存中的索引结点称为“磁盘索引结点”,当索引结点放入内存后称为“内存索引结点”。相比之下内存索引结点中需要增加一些信息,如:文件是否被修改、此时有几个进程正在访问该文件等。
2.1目录的结构
计算机中除了要存储各种数据文件外,还要存储目录(文件),用于实现目录管理,即“按名存取”、对访问文件的控制等功能。
2.1.1单级目录结构
早期的操作系统在系统中只建立一张目录表,每个文件占一个目录项,不允许文件重名。
2.1.2两级目录结构
早期的多用户操作系统 ,分为主文件目录和用户文件目录。只允许不同用户文件重名。
2.1.3树形目录结构
又称多级目录结构,从根目录出发的路径是绝对路径。
可以把某个目录表调入内存,设为当前目录。从当前目录出发的路径是相对路径。可以减少磁盘I/O次数。
2.1.4有向无环图目录结构
树型目录结构不便实现相同文件的共享。为此提出了无环图目录结构。
不同的文件名可以指向相同的文件(包括目录文件)。
2.2目录的操作
- 移动目录。将文件或子目录在不同的父目录之间移动,文件的路径名也会随着改变。
- 删除目录。先删除目录中所有文件再删除子目录;或同时删除文件和子目录。
- 创建目录。在树形目录结构中,用户可以创建自己的用户文件目录,并可再创建子目录。
2.4文件共享
共享: 多个用户共享同一个文件,系统中只有一份文件数据。文件数据的修改可以被所有用户感知。
复制:某个用户复制一份文件,系统中增加一份相同的文件数据。该用户修改自己的那份文件数据对其他用户无影响。
2.4.1基于索引结点(硬链接)
调入内存的索引结点中有一个链接计数变量,表明当前有几个用户在共享这个文件,当count=0时才可能被允许删除文件。
2.4.2基于符号链(软链接)
类似于Windows系统中的快捷方式,使用Link类型文件的用户不能第一时间感知到原文件的删除,只有访问时才会发现访问失效。且软链接磁盘操作更多,速度更慢。