第八章 文件管理
8.1 文件和文件系统
从系统角度看:
负责为用户建立、删除、读、写、修改和复制文件。
从用户的角度看:
实现了按名存取
文件系统的功能:
提供高效、快速、方便的信息存储和访问功能。
数据项(最低级的数据组织形式)
基本数据项(最小的逻辑数据单位):描述一个对象的某种属性,又称字段
组合数据项:由若干个基本数据项组成
记录
一组相关数据项的集合,用于描述一个对象在某方面的属性
关键字:唯一能标识一个记录的数据项
如:学号、学号+课程号
文件:具有文件名的一组相关元素的集合
有结构文件和无结构文件两种。
有结构文件由若干个相关记录组成,而无结构文件则被看成一个字符流。
在文件系统中文件是最大的数据单位,描述了一个对象集
文件主要属性
文件类型、
文件长度
文件的物理位置
文件的建立日期
按文件的用途分类可分为以下三类
(1)系统文件:由系统软件构成的文件。
(2)用户文件:用户委托文件系统保存的文件。由用户的源代码、目标文件、可执行文件或数据等构成。
(3)库文件:由系统提供给用户使用的各种标准过程、函数和应用程序文件。(可以使用,不能修改)
按组织形式和处理方式分类
普通文件-由ASCII码或二进制码组成的字符文件
目录文件-由文件目录组成,用来管理和实现文件系统功能的系统文件
特殊文件-特指系统中的各类I/O设备
按文件的逻辑结构分类
有结构文件(记录式文件)
无结构文件(流式文件)
按文件的物理结构分类
顺序文件
链接文件
索引文件
8.1 文件名和文件类型
文件的逻辑结构
从用户观点出发,所观察到的文件组织形式,是用户可以直接处理的数据及结构,它独立于物理特性。
文件的物理结构:
文件的存储结构,指系统将文件存储在外存上所形成的一种存储组织形式
- 不仅与存储介质的存储性能有关
- 也与所采用的外存分配方式有关
① 逻辑记录
文件中按信息在逻辑上的独立含义来划分的信息单位,逻辑记录是对文件进行存取操作的基本单位。
② 物理记录
在存储介质上,由连续信息所组成的一个区域称为块,也叫物理记录。
③ 逻辑记录与物理记录的区别与联系
ⅰ 一个是逻辑的概念,一个是物理的概念。
ⅱ 逻辑记录最终要存放到物理记录上。
顺序文件
顺序文件的排列方式
串结构:记录顺序与关键字无关,按存入时间的先后排列。最先存入的记录作为第一个记录,其次存入的为第二个记录, …… 依此类推。
顺序结构:所有记录按关键字(词)排列。可以按关键词的长短从小到大排序,也可以从大到小排序;或按其英文字母顺序排序。
8.2.4索引文件
引入:为解决变长记录文件的直接存取低效问题。
索引文件:为变长记录文件建立一张索引表。
索引表按关键字排序
实现直接存取
优点
- 通过索引表可方便地实现直接存取,具有较快的检索速度。
- 易于进行文件的增删。
缺点 - 索引表的使用增加了存储费用;
- 索引表的查找策略对文件系统的效率影响很大.
注:若索引表很大,可建多级索引
8.2.5索引顺序文件
引入:为解决变长记录文件的直接存取低效且存储费用增加的问题。
有效克服了变长记录文件不便于直接存取的缺点。
保留了顺序文件的关键特征:记录按关键字的顺序组织。
增加了两个新特征:
引入了文件索引表,实现对索引顺序文件的随机访问;
增加了溢出(overflow)文件,用它来记录新增加的、删除的和修改的记录。
一级索引顺序文件
如果在一个顺序文件中所含有的记录数为N,则为检索到具有指定关键字的记录,平均须查找N/2个记录;
对于索引顺序文件,则为能检索到具有指定关键字的记录,平均只要查找sqrt(N) 个记录数,因而其检索效率比顺序文件约提高sqrt(N)/2倍
两级索引顺序文件 为了进一步提高检索效率,可以为顺序文件建立多级索引,即为索引文件再建立一张索引表,从而形成两级索引表。
优点
- 既可以实现直接索引又可以节约索引表占用空间
缺点- 文件较大时,查找速度降低
直接文件 直接文件,则可根据给定的关键字直接获得指定记录的物理地址(无须检索)。
关键字本身就决定了记录的物理地址。
哈希文件:
利用Hash函数将记录键值转换为记录的地址。
8.3 文 件 目 录
8.3.1 文件控制块和索引结点
从文件管理角度看,文件由FCB和文件体(文件本身)两部分组成。
1.文件控制块(FCB)
文件控制块是操作系统为管理文件而设置的数据结构,存放了文件的有关说明信息,记录了系统对文件进行管理所需要的全部信息。
FCB是文件存在的标志。
FCB保存在文件目录中,一个FCB就是一个目录项。
FCB中的信息
基本信息类:文件名、文件长度、类型、属性文件物理位置
存取控制信息类:文件存取权限、用户名、口令、共享计数
使用信息类:文件的建立日期、最后修改日期、保存期限、最后访问日期,
索引结点
1)索引结点引入
设目录文件所占的盘块数是N,则查找一个目录项平均需要调入盘块(N+1)/2次。假设一个FCB为64B,盘块大小为1KB,则每个盘块中只能存放1KB/64B=16个FCB;若一个文件目录共有640个FCB,需占用640/16=40个盘块,平均查找一个文件需启动磁盘20次。
在文件目录中的每个目录项仅由文件名和指向该文件所对应的i结点(即索引结点)的指针构成。
UNIX系统中,一个目录项只占16个字节(14字节为文件名,2个字节为指向i结点的指针)。
在1KB的盘块中可存放1KB/16B=64个目录项,
如果一个文件目录中共有640个目录项,只占用640/64=10个盘块,平均启动磁盘10/2=5次,
减少到原来(平均启动20次)的1/4,大大节省了开销。
2 两级目录结构
每个用户对应一个目录;在用户目录下是该用户的文件,而不再有下级目录。
适用于多用户系统,各用户可有自己的专用目录。
优点:
提高了检索目录的速度
不同用户可以有相同的文件名
缺点:
不同用户可以使用不同文件名访问同一个共享文件
不便于共享文件
8.3.3 树形结构目录
1 树形目录
系统中有一个根目录(或根目录文件),在这个目录中可登记一般文件,也可以登记目录文件,在每个目录文件中可以登记一般文件,也可以登记目录文件。
在文件数目较多时,便于系统和用户将文件分散管理。适用于较大的文件系统管理。目录级别太多时,会增加路径检索时间。
优点:
- 层次结构清晰,实现分组,便于管理和保护;
- 解决重名问题;
- 按层查找速度加快
缺点: - 查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘影响速度
目录查询技术
数据文件(按名存取)的查询步骤
根据用户提供的文件名,对文件目录进行查询,找到该文件的FCB(索引结点)
根据FCB(索引结点)所记录的磁盘盘块号,换算出文件在磁盘上的物理位置
启动磁盘驱动程序,读该数据文件至内存中。
对目录进行查询的方式
线性检索法(顺序检索法)
Hash方法
8.5 文 件 保 护
1访问权
一个进程能对某对象执行操作的权力称为访问权。
表示:(对象名,权集),如(F1, {R/W})
2 保护域
进程对一组对象访问权的集合,称为保护域
进程只能在指定域内执行操作。 “域”规定了进程所能访问的对象和能执行的操作。
如进程和域一一对应,则称为静态联系方式,该域称为静态域
如进程和域是一对多关系,则称为动态联系方式
8.5.2 访问矩阵的概念
行代表域;列代表对象;每一项为访问权
行代表域,列代表对象,矩阵中每一项由一组访问权组成。
R—读;W—写;E----执行
访问权 access(i,j)定义了在域Di中执行的进程能对对象施加的操作集。
访问权通常由资源的拥有者或管理者所决定。
进程拥有切换权时,可将进程从一个保护域切换到另一保护域,以实现进程和域之间的动态联系。