存储结构:每个磁盘分区可以创建一个文件系统。这些分区可以组合成更大的结构-卷。卷可以看成虚拟磁盘。
文件由文件说明和文件体两部分组成。
文件控制块:即文件说明是保存文件属性信息的数据结构。包含,文件名,文件类型,文件结构,文件物理位置,存取控制信息,管理信息
文件目录与目录文件:
目录:文件控制块的集合。即文件控制块是一个目录项。 目录文件:文件的内容为目录信息。 目录的功能: 实现“按名存取”:用户只需提供文件名就可以对文件进行操作。这是目录管理的最基本功能。 提高检索速度
允许文件同名:不同目录下的文件可以使用相同名字。 允许文件共享
目录结构:
单级目录结构(所有文件被包含在一张目录表,每个文件占一个表目)
二级目录结构(将文件目录分为,主文件目录(记录用户名以及用户文件目录的位置),用户文件目录)
多级目录结构(又称树形目录结构,在多级目录结构中,第一级目录称为根目录(树根),目录树中的非叶节点均为目录文件(又称子目录),叶结点为文件。) 图形目录结构(无环图目录,允许目录含有共享子目录和文件。通用图目录)
路径名:是一个字符串,该字符串由从根目录出发到所找文件的通路上所有各级子目录名和该文件名用分隔符连接起来构成
从根目录出发的路径称为绝对路径(absolute path name)。 相对路径(relative path name):由从当前目录出发到所找文件的通路上的所有目录名与数据文件名用分隔符连接起来而形成。 有两个特殊目录: “ .. ”:表示给定目录的父目录 “ . ”:表示当前目录
文件共享:是指不同用户可以共同使用某文件。
共享语义:是文件系统对共享文件或目录冲突访问的处理方法。不同共享语义定义了对缓存一致性问题的不同解决方案。
一致性语义 :描述多用户同时访问共享文件时的语义。这些语义规定了一个用户所修改的数据何时对另一个用户可见
UNIX语义:一个用户对已经打开的文件进行写操作,可以被同时打开同一文件的其他用户所见
会话语义 (AFS语义):一个用户对打开文件的写不能立即被同时打开同一文件的其他用户所见。
不可修改共享文件语义:一旦一个文件被其创建者声明为共享,它就不能被修改。(文件名和内容都不能被修改)
文件系统的早期实现:绕道法(绕到共享文件上方的目录),链接法(将一个目录中的链指针直接指向被共享文件所在的目录),基本文件目录表
Chapter11 文件系统的实现
分层文件系统
文件系统按层组织:I/O控制层,基本文件系统层,文件组织模块层,逻辑文件系统层
I/O控制层:由驱动程序和中断处理程序组成,实现内存与磁盘之间的信息传输。 基本文件系统层:向合适的设备驱动程序发送一般命令就可对磁盘上的物理块进行读写
文件组织模块层:将逻辑块转换为物理块,空闲空间管理器
逻辑文件系统层:管理元数据信息,管理目录结构,通过文件控制块来维护文件结构。
用于文件系统管理的内存信息:
内存安装表:包含所有安装卷的信息
内存目录结构:保存近来访问过的目录信息
系统打开文件表:包括每个打开文件的FCB(文件控制块)拷贝和其他信息 进程打开文件表:包括指向系统打开文件表中合适条目和其他信息的指针 一个典型的文件控制块(FCB)
分区与磁盘:一个磁盘可以分为多个分区,一个分区可以横跨多个磁盘 分区可以是生的或熟的
生分区:没有文件系统,没有交换空间或数据库 熟分区:有文件系统
引导信息:引导信息能保存在各个分区中,并且有自己的格式。引导信息除了包括如何启动一个特定操作系统外,还可以有其他指令。
根分区:包括操作系统内核或其他系统文件,在引导时装入内存 安装分区:使用文件系统前应安装分区
虚拟文件系统(VFS virtual file system):虚拟文件系统提供一个面向对象的文件系统实现方法。允许不同类型的文件系统使用相同的系统调用接口。API是针对VFS的接口,而非对任何特定类型的文件系统
文件系统实现的三个层次 顶层:文件系统接口
中间层:VFS虚拟文件系统 底层,不同文件系统实现
目录实现
目录分配和管理算法的选择对文件系统的效率、性能和可靠性有很大影响。 线性表,哈希表(可以快速找出给定文件名的目录项)
为文件分配磁盘块的分配方法:连续分配,链接分配,索引分配(一级索引,二级索引...)
文件存储空间的分配两种方式:静态分配(文件建立时一次性分配好),动态分配(根据需要进行分配)
文件存储空间的分配通常以块或簇(几个连续物理块称为簇,一般是固定大小)为单位
文件分配表(FAT):是以链接方式存储文件的系统中记录磁盘分配和跟踪空白盘块的数据结构。文件的首地址(第一个盘块号)存放在目录中。因此,从目录中找到文件的首地址后,就能找到文件在磁盘上的所有存放地址。 文件分配例题:
假定磁盘块的大小为1KB,对于1.2MB的软盘,其文件分配表FAT需要占用多少存储空间? 答案:
软盘大小为1.2MB,磁盘块的大小为1KB,所以该软盘共有盘块:1.2M/1K=1.2K 又 1K<1.2K<2K,
故1.2K个盘块号要用11位二进制表示(1024到2048之间),为了方便存取,每个盘块号用12位二进制描述,即文件分配表的每个表目为1.5个字节。 FAT要占用的存储空间总数为: 1.5×1.2K=1.8KB
索引分配
直接地址:为了提高对文件的检索速度,在索引节点中建立了10个直接地址项,每个地址项中存放相应文件所在的盘块号。
假定一个盘块的大小为4KB,当文件长度不大于40KB时,可以直接从索引节点中得到文件存储的所有盘块号。
一次间接地址:一次间接地址项中存放的不是存储文件数据的盘块号,而是先将多个盘块号存放在一个磁盘块中,再将该磁盘块的块号存放在一次间接地址项中。
若盘块大小为4KB,一个盘块号占4字节,则一个盘块中可以存放下:4KB/4B=1K个磁盘块号。
一次间接地址项寻址范围为:1K×4KB=4MB。
该地址结构中还有二次间接地址和三次间接地址。 二次间接地址的寻址范围是:1K×1K×4KB=4GB。
三次间接地址的寻址范围是:1K×1K×1K×4KB=4TB。
空闲空间管理方法:空闲文件目录,空闲块链,位示图
位示图:在位示图中,每个物理块用一个二进制位表示,当某位为1时表示该块已分配,当某位为0时表示该块空闲。
空闲块链方法:将文件存储设备上的所有空闲块链接起来,并设置一个头指针指向空闲块链的第一个物理块。
空闲文件目录:文件存储设备上的一个连续空闲区可以看作一个空闲文件,又称空白文件或自由文件。
文件转储的方法有两种:全量转储和 __增量转储_ 。