7.1 文件和文件系统
文件系统的引入
文件系统:OS存储和管理文件信息,方便用户对文件的存取、共享和保护等,有效提高系统资源的利用率。
程序和数据以文件的形式保留在外存中。
软件资源
软件资源:各种系统程序,以及标准子程序库和应用程序,数据。
软件资源都是一组相关联的信息(程序和数据)的集合。
引入文件系统的原因
方便用户,保证文件的安全性,提高资源利用率。
文件系统的功能
- 实现按名存取
- 文件的物理结构
- 文件信息的检索
- 文件的共享和保护
数据项、记录和文件
数据项
基本数据项:描述一个对象的某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,即原子数据,又称为数据元素或字段。
基本数据项=数据名+数据类型。
数据项的名字和类型两者共同定义了一个数据项的“型”。而表征一个实体在数据项上的数据则称为“值”。
组合数据项:由若干个基本数据项组成的,简称组项。例如,经理便是个组项,它由正经理和副经理两个基本项组成。
记录
记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。
在记录的各个数据项中,能惟一地标识一个记录的一个或几个数据项,称为关键字(key)。
文件
文件是指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两种。
文件属性:文件类型、文件长度、文件的物理位置、文件的建立时间等。
文件、 记录和数据项之间的层次关系
文件名
包含文件名和扩展名。
文件的类型
按用途分类
①系统文件:系统软件
②用户文件:用户的文件
③库文件:标准子例程及常用的例程
按文件中数据的形式分类
①源文件:源程序和数据
②目标文件:源程序经过编译,尚未链接的目标代码“.obj”
③可执行文件:目标代码经过链接后的文件“.exe”
按存取控制属性分类
①只执行文件
②只读文件
③读写文件
按组织形式和处理方式分类
①普通文件:由ASCII码或二进制码组成的字符文件
②目录文件:由文件目录组成的文件(检索执行下属文件)
③特殊文件:系统中的各类I/O设备
文件系统概念
OS中负责管理和存取文件信息的软件机构。负责文件的建立,撤消,存入,读写,修改和复制,还负责完成对文件的按名存取和进行存取控制。
文件系统的层次结构
文件系统接口>对对象进行操纵和管理的软件集合>对象及其属性
对象及其属性 ★★
文件、目录、磁盘存储空间
对对象进行操纵和管理的软件集合
是层次组织结构的核心部分。
包括:对文件存储空间的管理、对文件目录的管理、用于将文件的逻辑地址转换为物理地址的机制、对文件读和写的管理,以及对文件的共享与保护等功能。
文件系统接口
命令接口、程序接口
文件操作
①最基本的文件操作
创建、删除、读、写文件,设置文件的读/写位置。
②文件的“打开”和“关闭”操作
用户和文件的连接建立和断开。
③其他文件操作
允许用户直接设置和获得文件的属性
查询文件状态
设置和修改用户对文件的存取权限
建立,改变和删除目录
文件共享和设置访问路径
7.2 文件的逻辑结构
文件的逻辑结构(文件的组织):从用户角度看到的文件的全貌,也就是它的记录结构。
文件的物理结构(文件的存储结构):文件在外存上的存储组织形式。
文件逻辑结构的类型
按文件是否有结构分类
有结构文件:定长记录,变长记录
无结构文件:流式文件
按文件的组织方式分类
顺序文件
一系列记录按顺序进行存取操作,文件信息队列排列。其中记录可以是定长和变长记录。
- 串结构, 各记录之间的顺序与关键字无关。 通常的办法是由时间来决定,即按存入时间的先后排列。
- 顺序结构,指文件中的所有记录按关键字(词)排列。
优点:
- 最佳应用场合,是在对诸记录进行批量存取时, 即每次要读或写一大批记录。
- 只有顺序文件才能存储在磁带上, 并能有效地工作。
缺点:
- 查找或修改单个记录,为此系统便要去逐个地查找诸记录。
- 增加或删除一个记录, 都比较困难。
索引文件
建立对应关系的索引表,与主文件构成索引文件。
索引顺序文件
为每一个文件建立一张索引表,为一组记录中的第一个记录建立一个索引表项。
哈希(Hash)文件
7.3 文件目录
文件目录:数据结构,用于标识系统中的文件及其物理地址,供检索时使用。
对目录管理的要求如下:
- 实现“按名存取”
- 提高对目录的检索速度
- 文件共享
- 允许文件重名
文件控制块和索引结点 ★
文件控制块FCB:用于描述和控制文件的数据结构。包括:基本信息(文件名、文件物理位置、文件逻辑结构、文件物理结构)、存取控制信息、使用信息。
文件目录:文件控制块的有序集合。文件目录是一个文件(目录文件)。
索引结点:每一个索引结点保存文件系统中的一个文件系统对象的元信息数据,但不包括数据内容或者文件名。
磁盘索引结点:每个文件有唯一的磁盘索引结点。
- 文件主标识
- 文件类型
- 文件存取权限
- 文件物理地址
- 文件长度
- 文件连接计数
- 文件存取时间
内存索引结点:
- 索引结点编号
- 状态
- 访问计数
- 文件所在设备的逻辑设备号
- 链接指针:空闲链表、散列队列指针
简单的文件目录
单级文件目录
在整个文件系统中只建立一张目录表,每个文件占一个目录项。
目录项:文件名、文件扩展名、文件长度、文件类型、文件物理地址、文件说明、状态位。
目录结构:
单级目录的优点是简单且能实现目录管理的基本功能——按名存取,但却存在下述一些缺点:
- 查找速度慢
- 不允许重名
- 不便于实现文件共享
两级文件目录
主文件目录(一级,用户名、指向子目录指针),用户文件目录(二级,文件控制块)。
目录结构:
具有以下优点:
- 提高了检索目录的速度。
- 在不同的用户目录中, 可以使用相同的文件名。
- 不同用户还可使用不同的文件名来访问系统中的同一个共享文件。
树形结构目录
树形目录
树形目录:树形结构目录,主目录被称为‘根目录’(唯一),每个文件和每个目录只能有一个父目录,子目录被称为‘树节点’,数据文件被称为‘树叶’。
目录结构:
路径名和当前目录
路径名:从树的根(即主目录)开始, 把全部目录文件名与数据文件名,依次地用“/”连接起来, 即构成该数据文件的路径名(path name)。
当前目录(工作目录):当前访问工作的目录。
相对路径名:从当前目录开始直到数据文件为止所构成的路径名。
绝对路径名:从根目录开始的路径名。
目录查询技术 ★
过程
根据文件名找到其FCB或索引结点;
查找FCB或索引结点中的文件物理地址(盘块号),换算为物理位置;
启动磁盘驱动程序,将文件读入内存。
检索方法
① 线性检索法(顺序检索法) ★★★
② Hash 方法
7.4 文件共享 ★
基于有向无循环图实现文件共享(索引结点)
有向无循环图:允许每个文件都可以有多个父目录。
索引结点:文件的物理地址及其他的文件属性等信息放在索引节点中,文件目录中只设置文件名及指向相应索引结点的指针。
利用符号链接实现文件共享
符号链接:一个文件或子目录有一个主父目录和与之链接的链接父目录。创建一个新的文件。
在利用符号链方式实现文件共享时, 只是文件主才拥有指向其索引结点的指针;而共享该文件的其他用户,则只有该文件的路径名,并不拥有指向其索引结点的指针。