文件和文件系统
- 数据项、记录和文件
数据组成可分为数据项、记录和文件三级- 数据项
在文件系统中,数据项是最低级的数据组织形式,可以分为基本数据项和组合数据项两种类型。 - 记录
记录是一组相关数据项的集合,用于描述一个对象在某方面的属性, - 文件
文件是指由创建者所定义的、具有文件名的一组相关元素的集合,它是文件系统中一个最大的数据单位
文件属性:- 文件类型
- 文件长度
- 文件的物理位置
- 文件的建立时间
- 数据项
- 文件类型
- 按用途分类
按照用途分将文件分为系统文件、用户文件、库文件。 - 按文件中数据的形式分类
按文件中数据的形式将文件分为源文件、目标文件(后缀名是“.obj”)、可执行文件(后缀名是.exe)。 - 按存取控制属性分类
按存取类型属性将文件分为只执行文件、只读文件、读写文件。 - 按组织形式和处理方式分类
按组织形式和处理方式分为普通文件、目录文件、特殊文件。 - 按照逻辑结构分类
按照逻辑结构将文件分为无结构文件((流式文件)和有结构文件(记录式文件)
- 按用途分类
- 文件系统的层次结构
其中,文件系统的接口分为命令接口和程序接口 - 文件操作
- 最基本的文件操作
- 创建文件
- 删除文件
- 读文件
- 写文件
- 设置文件的读/写位置
- 文件的“打开’和“关闭”操作
- “打开”操作(open)
调用完open操作后,操作系统对文件的任何操作都不会再使用文件名,只需要 open调用返回的指针 - “关闭”操作(close)
调用“关闭”系统调用来关闭此文件,OS将会把该文件从打开文件表中的表目上删除掉
- “打开”操作(open)
- 最基本的文件操作
文件的逻辑结构
-
文件逻辑结构的类型
- 按文件是否有结构分类
- 有结构文件(记录式文件)
- 定长记录
- 变长记录
- 无结构文件(流式文件)
- 有结构文件(记录式文件)
- 按文件的组织方式分类
- 顺序文件
- 索引文件
- 索引顺序文件
- 按文件是否有结构分类
-
顺序文件
- 顺序文件的排列方式
- 串结构
- 顺序结构
- 顺序文件的优缺点
- 优点
- 所有逻辑文件中顺序文件的存取效率是最高的;
- 对于顺序存储设备(如磁带),也只有顺序文件才能被存储并能有效地工作。
- 缺点
- 若要求查找或修改单个记录,顺序文件所表现出来的性能就可能很差;
- 对记录的增删操作困难
- 优点
- 顺序文件的排列方式
-
记录寻址
- 隐式寻址方式
- 显式寻址方式
可以通过两种方式对定长记录实现随机访问: - 通过文件中记录的位置
- 利用关键字
-
索引文件
- 按关键字建立索引
主要用于对信息处理的及时性要求较高的场合 - 具有多个索引表的索引文件
满足不同的用户,为了不同的目的,希望能按不同的关键字来检索一条记录的要求
- 按关键字建立索引
-
索引顺序文件
-
索引顺序文件的特征
- 保留了顺序文件的关键特征;
- 引入了文件索引表,可以实现对索引顺序文件的随机访问
- 增加了溢出文件,用它来记录新增加的、删除的和修改的记录
-
一级索引顺序文件
最简单的索引顺序文件只使用了一级索引
-
两级索引顺序文件
为索引文件再建立一张索引表,从而形成两级索引表,进一步提高了检索效率
-
-
直接文件和哈希文件
- 直接文件
直接文件可根据给定的关键字直接获得指定记录的物理地址 - 哈希(Hash)文件
哈希 (Hash)文件利用 Hash 函数(或称散列函数)将关键字转换为相应记录的地址
- 直接文件
文件目录
- 文件目录管理的要求
- 实现“按名”存取、
- 提高对目录的检索速度
- 文件共享
- 允许文件重名
目录管理最基本的功能是-实现按名存取
- 文件控制块和索引结点
- 文件控制块(FCB)
在文件控制块中,通常应含有三类信息:- 基本信息类
- 存取控制信息类
- 使用信息类
- 索引结点
- 索引结点的引入
采用了把文件名与文件描述信息分开的办法,即,使文件描述信息单独形成一个称为索引结点的数据结构,简称为i结点 - 磁盘索引结点
这是存放在磁盘上的索引结点。每个文件有唯一的一个磁盘索引结点 - 内存索引结点
这是存放在内存中的索引结点 - 作用
可以降低平均启动磁盘的次数,节省系统开销
- 索引结点的引入
- 文件控制块(FCB)
- 简单的文件目录
- 单级文件目录
- 概述
在整个文件系统中只建立一张目录表,每个文件占一个目录项 - 优点
单级文件目录的优点是简单 - 缺点
- 查找速度慢
对于一个具有N个目录项的单级目录,为检索出一个目录项,平均需查找 N/2个目录项 - 不允许重名
- 不便于实现文件共享,只适用于单用户环境
- 查找速度慢
- 概述
- 两级文件目录
- 概述
在系统中建立一个主文件目录MFD,为每一个用户再建立一个单独的用户文件目录UFD。在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目录文件的指针 - 特点
- 提高了检索目录的速度
如果在主目录中有n个子目录,每个用户目录最多为"个目录项,则为查找一指定的目录项,最多只需检索n+m个目录项 - 在不同的用户目录中,可以使用相同的文件名
- 不同用户还可使用不同的文件名访问系统中的同一个共享文件
- 提高了检索目录的速度
- 概述
- 单级文件目录
- 树形结构目录
- 树形目录概念
在每个文件目录中,只能有一个根目录(主目录),每个文件和每个目录都只能有一个父目录。把数据文件称为树叶,其他的目录均作为树的结点,或称为子目录。 - 路径名和当前目录
- 路径名
由树的根目录开始到指定数据文件的通路上全部目录文件名与数据文件名依次地用”\“连接起来,即构成该数据文件唯一的路径名 - 当前目录
- 定义
为了提高文件的检索速度,文件系统向用户提供了一个当前正在使用的目录,称为当前目录 - 相对路径
把从当前目录开始直到数据文件为止所构成的路径名称为相对路径名 - 绝对路径
把从树根开始的路径名称为绝对路径名
- 定义
- 路径名
- 目录操作
- 创建目录
- 删除目录
- 改变目录
- 移动目录
- 链接操作
- 查找
- 树形目录概念
- 目录查询技术
- 线性检索法(顺序检索法)
- Hash 方法
文件共享
-
基于有向无循环图实现文件共享
- 有向无循环图DAG
DAG实现了文件共享,但是使得文件系统的管理变得复杂 - 基于索引结点的共享方式(硬链接)
索引节点中count的值说明有几个用户共享此文件
- 有向无循环图DAG
-
利用符号链接实现文件共享(软链接)
- 利用符号链接的基本思想
允许一个文件或子目录有多个父目录,但其中仅有一个作为主父目录,其他的几个父目录都是通过符号链接方式与之相链接的 - 利用符号链实现共享的优点
- 只有文件主才拥有指向其索引结点的指针;而共享该文件的其他用户则只有该文件的路径名
- 不会发生在文件主删除一共享文件后留下一悬空指针的情况
- 当文件的拥有者把一个共享文件删除后,其他用户再访问时会访问失败,再将符号链删除,此时不会产生任何影响
- 利用符号链的共享方式存在的问题
- 每次访问共享文件时都可能多次读盘,访问文件的开销大,增加了启动磁盘的频率
- 符号链的索引结点耗费一定的磁盘空间
- 利用符号链接的基本思想
文件保护
- 确保文件安全性的措施
- 通过存取控制机制,防止由人为因素所造成的文件不安全性
- 采取系统容错技术,防止系统部分的故障所造成的文件不安全性
- 建立后备系统,防止由自然因素所造成的不安全性
- 保护域
用于对系统中资源进行保护的保护机制是“访问权”和“保护域”- 访问权
把一个进程能对某对象执行操作的权力,称为访问权 - 保护域
简称为“域”。“域”是进程对一组对象访问权的集合,进程只能在指定域内执行操作。 - 进程和域间的静态联系
在进程和域之间可以一一对应,即一个进程只联系着一个域 - 进程和域间的动态联系方式
在进程和域之间,也可以是一对多的关系,即一个进程可以联系着多个域
- 访问权
- 访问矩阵
- 基本的访问矩阵
- 具有域切换权的访问矩阵
- 访问矩阵的修改
经常对访问矩阵进行修改时,可通过在访问权中增加拷贝权、拥有权及控制权的方法来实现现有控制的修改 - 访问矩阵的实现
- 访问控制表
对访问矩阵按列(对象)划分,为每一列建立一张访问控制表ACL - 访问权限表
如果把访问矩阵按行(RP域)划分,便可由每一行构成一张访问权限表
- 访问控制表