知识点
通常把文件以及管理信息资源的管理程序的集合称为文件系统
Linux 支持的文件类型
- 普通文件
包括ASCII文件和二进制文件。源程序文件、数据文件、目标代码文件及操作系统文件都是普通文件。 - 目录文件
由文件目录所构成的用来维护文件系统结构的系统文件。 - 特殊文件
值各种外部设备文件,可分为块设备文件(存放在磁盘文件)和字符设备文件(打印机设备文件)
文件属性
- 基本属性
文件名和扩展名、文件属主ID等 - 类型属性
普通文件、系统文件、设备文件等,也可按文件信息分为ASCII码文件、二进制码文件 - 保护属性
用户的访问权限,文件方式访问(可读、可写、可执行、可更新、可删除等) - 管理属性
文件创建时间,修改时间等 - 控制属性
文件逻辑结构信息,如记录键,记录类型、记录个数
文件物理结构信息,如所在设备名,物理设备类型、所在盘块号等
文件存取方法
- 顺序存取
- 直接存取(随机存取)
- 索引存取
6. 文件系统分层结构
- 文件管理
实现文件的逻辑结构,为用户提供各种文件的系统调用及文件访问权限设置等 - 目录管理
查找文件描述符,进而找到需要访问的文件,并进行访问权限检查
目录的添加、删除、重排等操作 - 磁盘管理
管理文件空间
将文件的逻辑地址转换成磁盘物理地址,即由逻辑块号找到柱面号、磁头号、扇区号,设备与内存之间的数据传输操作有文件系统调用设备管理实现
文件控制块
文件控制块(FCB)是操作系统为每个文件建立的唯一数据结构,其中包含了全部文件属性,为了方便操作系统对文件的管理、控制和存取
-
一个文件由两部分组成:
FCB
文件体(文件信息)
为了加快文件查找速度,通常把FCB汇集和组织在一起形成文件目录,文件目录包含很多目录项,目录项氛围两种,分别用于描述子目录和文件
-
Linux将FCB中的文件名和其他管理信息分开,其他信息单独组成一个数据结构,成为索引节点inode,此索引结点的位置由inode号标识。
文件系统中的每个文件都有一个磁盘 inode 与之对应,这些 inode 被集中存放于磁盘上的 inode 区
-
活动 inode 表
- 背景
磁盘 inode 记录文件的属性和相关信息,文件访问过程中会频繁地用到它,不断来回于内外存之间引用它,当然是极不经济的 - 原理
- 当访问某文件时,若在活动 inode 表中找不到其 inode,就申请一个空闲活动 inode,把磁盘 inode 内容复制给它,用来控制文件读写。
- 当用户关闭文件时,活动 inode 的内容回写到对应的磁盘 inode 中,再释放活动 inode 。
- 背景
把 FCB 的主要内容与索引节点号分开,不仅能够加快目录检索速度,而且,便于实现文件共享。
8. 目录层次结构
所有文件系统都支持多级层次结构,根目录是唯一的,每一级目录可以是下一级目录的说明,也可以是文件的说明,从而形成树状目录结构。
文件目录检索
每个目录在创建时都自动含有两个特殊目录项:
-
.
指出目录本身的inode入口 -
..
指出其父目录inode入口
.
和 ..
指向同一个inode的为根目录
文件组织与数据存储
- 块是存储介质上连续信息所组成的一个区域,也叫物理记录
- 不同类型的存储介质,块大小不相同
文件逻辑结构 —— 用户角度
数据可独立于物理环境构造。
- 流式文件
一种无结构的文件,文件内的数据不再组成记录,只是一串顺序的信息集合,成为字节流文件 - 记录式文件
有结构的文件,包含若干逻辑记录,逻辑记录是文件中按信息在逻辑上的独立含义所划分的信息单位。
文件物理结构
文件的物理结构和组织是指,逻辑文件在物理存储空间中存放的方法和组织关系
-
顺序文件
将额文件中逻辑上连续的信息存放在存储介质的相邻的物理块删形成顺序结构。逻辑记录顺序和物理块顺序完全一致- 优点
存取记录速度快 - 缺点
建立文件之前需要预先确定文件长度,以便分配空间
修改和插入有一定难度
变长记录的处理困难
对磁盘作连续分配会造成空闲块浪费
- 优点
-
连接文件
使用连接字(指针),来表示文件中各条记录之间的关系。- 优点
适宜增、删、改 - 缺点
失去了一些性能
存取信息必须通过缓冲区,待获得连接字后,才能找到下一个物理块的地址,仅适合顺序存取
- 优点
-
索引文件
系统为每个文件建立索引表,利用索引表来搜索记录的文件成为索引文件
优点
记录散列存储,具有直接读写任意记录的能力,便于信息的增删改缺点
索引表的空间开销和查找的时间开销大-
Linux 操作系统多重索引结构
每个文件的 inode中规定15个索引项,每项占用4B,登记一个存放文件信息的物理块号。
前12项存放文件信息的磁盘块号(直接索引),后面的为间接索引
直接文件
利用哈希法将记录的关键字与其地址之间建立某种对应关系,以便实现快速存取的文件
11. 文件系统功能及实现
- 文件系统提供给用户程序的一组系统调用
包括:建立、打开、关闭、撤销、读、写和控制,通过这些系统调用用户能获得文件系统的各种服务。 - 在为应用程序服务时,文件系统需要沿路径查找文件目录以获得文件的FCB,把常用和正在使用的那些文件的FCB复制进内存,这样,文件被打开后,可被多次使用,直至文件被关闭或撤销,大大地减少磁盘访问次数,提高文件系统效率.