参考汤小丹老师的计算机操作系统 第四版
第7-8章
7章 文件管理
8章 磁盘存储器管理
第7章 文件管理
7.1 文件与文件系统
7.1.1 数据项、记录和文件
1、数据项:属性
1)基本数据项:如学号
2)组合数据项:如工资,包括基本工资、工龄工资、奖励工资
2、“型”与“值”
1)型:数据项的名字和类型
2)值:数据项的值
3、记录:数据项的集合
4、文件:具有文件名的一组相关元素的集合。是文件系统中最大的数据单位
1)有结构文件:由若干相关记录组成
2)无结构文件:字符流
5、文件属性:文件类型、文件长度、文件物理位置、文件建立时间
7.1.2 文件名和类型
1、文件名和扩展名
1)文件名:文件名字
2)扩展名:指示文件的类型
2、文件类型
1)按用途:系统文件、用户文件和库文件
2)按文件中数据形式:源文件、目标文件、可执行文件
3)按存取控制属性:只执行文件、只读文件、读写文件
4)按组织形式和处理方式:普通文件、目录文件、特殊文件
7.1.3 文件系统的层次结构
1、文件系统模型层次,由上到下
用户程序 |
---|
文件系统接口 |
对对象操纵和管理的软件集合 |
对象及其属性 |
2、对象及其属性:对象包括文件、目录和磁盘存储空间
3、对对象操纵和管理的软件集合:文件管理系统的核心部分,分为四层
1)I/O控制层,主要有磁盘驱动程序组成
2)基本文件系统层:处理内存和磁盘数据交换
3)基本I/O管理程序:完成于磁盘I/O有关的事务
4)逻辑文件系统:处理与记录和文件相关的操作
4、文件系统接口
1)命令接口:如shell
2)程序接口:如系统调用
7.1.4 文件操作
1、基本文件操作:创建文件、删除文件、读文件、写文件、设置文件的读/写位置
2、文件的“打开”和“关闭”操作
打开一个文件就是在用户和指定文件建立起一个连接,此后用户可以通过该连接直接得到文件信息,避免再次通过目录检索文件
3、其他文件操作
如对于文件属性的操作,目录操作等
7.2 文件的逻辑结构
系统中的文件都存在着两种形式文件结构:文件的逻辑结构(又称文件组织)和文件的物理结构(又称存储结构)
7.2.1 文件逻辑结构类型
要求提高检索速度,方便对文件修改,降低文件存储费用
1、按文件是否有结构分类
1)有结构文件:定长记录,变长记录。
2)无结构文件:又称流式,文件文件长度以字节为单位,也可以理解为记录式文件特例:一条记录只有一个字节
2、按文件的组织方式分类
1)顺序文件
2)索引文件
3)索引顺序文件
7.2.2 顺序文件
1、顺序文件排列方式
1)串结构:按存入时间的先后进行排序。检索比较费时
2)顺序结构:用户指定某个字段作为关键字进行排序。检索效率高
2、顺序文件优缺点
1)优点:方便批量存取
2)缺点:查找,修改或删除单个记录性能差
解决方法:配置运行记录文件,定期整理主文件
7.2.3 记录寻址
1、隐式寻址:通过读或写指针顺序访问记录。
2、显式寻址:可实现对定长记录文件的直接访问或随机访问,两种实现方式
1)通过文件中记录的位置:类比数组,长度L为记录的长度,因为是定长,所以L值是固定的
2)利用关键字:根据关键字的值,顺序检索
对目录的检索也是基于关键字进行检索的
7.2.4 索引文件
1、按关键字建立索引
针对变长记录文件,为变长记录文件建立一张索引表,索引表按照关键字排序,每个表项指向关键字对应的记录
2、具有多个索引表的索引文件
一个文件可以建立多个索引表以满足不同情境下的使用
3、索引文件优缺点:
优点:提高文件查找速度
缺点:建立索引表带来存储开销
7.2.5 索引顺序文件
针对变长记录文件
1、索引顺序文件特征
1)引入文件索引表:实现记录的随机访问
2)增加了溢出文件:记录新增加的、删除的和修改的记录
2、一级索引顺序文件
将变长记录文件分组,为每组的第一条记录建立索引
若有N条记录,则检索次数为sqrt(N,2)
3、两级索引顺序文件
在一级索引顺序文件基础上,将索引表的索引分组,并对每组的第一个索引建立索引
若有N条记录,检索次数为(3/2)sqrt(N,3)
7.2.6 直接文件和哈希文件
1、直接文件:可根据指定的关键字直接获得指定记录的物理地址。即关键字本身决定了记录的物理地址
2、哈希文件:应用最广泛的一类直接文件。由哈希函数将关键字转化为指向某一目录表相应表目的指针,该表目指针指向记录所在的物理块
7.3 文件目录
目录管理要求:实现“按名存取”;提高目录检索速度;文件共享;允许文件重名
7.3.1 文件控制块和索引节点
1、文件控制块:用于描述和控制文件的数据结构。一个文件对应一个文件控制块FCB
含有三类信息:
1)基本信息:文件名、文件物理位置、文件逻辑结构、文件物理结构
2)存取控制信息:文件操作的相关权限
3)使用信息类:文件建立时间、修改时间、一打开该文件的进程数等
2、索引节点:存储文件的描述信息
采用索引结点,则文件目录的每个目录项仅有文件名和指向对应索引节点的指针构成,有助于节省系统开销
分类:
1)磁盘索引节点:存放在磁盘上的索引节点
2)内存索引节点:文件被打开时,将磁盘索引节点移入内存并增加一些内容
7.3.2 简单的文件目录
1、单级文件目录:系统中只建立一张目录表
优点:简单,满足目录管理要求第一点
缺点:不满足目录管理要求后三点。查找速度慢、不允许重名、不便于实现文件共享
2、两级文件目录:系统建立主文件目录MFD,MFD每个表项为用户名和指向用户目录UFD文件的指针
优点:满足目录管理要求的四点要求
提高了检索目录速度;不同用户目录可以使用不同用户名;不同用户可以使用不同用户名访问同一文件
问题:某些情况下,用户之间不便于共享文件
7.3.3 树形目录结构
1、树形目录:最实用最通用的文件目录
2、路径名和当前目录
1)路径名:即绝对路径
2)当前目录:对当前目录下文件进行访问,使用的路径名只需要从当前目录开始。即相对路径
3、树形结构比两级目录查询速度更快,层次结构更加清晰,能更有效地进行文件的管理和保护
4、目录操作
1)创建目录
2)删除目录:若目录下有文件,两种方法处理:不删除非空目录和删除非空目录
3)改变目录
4)移动目录
5)链接操作:可让一个文件具有多个父目录
6)查找
7.3.4 目录查询技术
1、线性检索法:按照目录名顺序查找
2、Hash方法:系统利用用户提供的文件名,将其转化为文件目录索引值,利用索引到目录中查找
注意:现代OS提供了模式匹配功能,对于使用模式匹配的文件名无法利用Hash方法查找目录
7.4 文件共享
7.4.1 基于有向无循环图实现文件共享
1、有向无循环图DAG:树形结构目录不适合文件共享,有向无循环图允许每个文件可以有多个父目录
2、索引节点:文件的物理地址及文件属性等信息放到索引结点中,文件目录存放文件名和指向相应索引节点的指针。以实现有向无循环图文件共享
3、可能会留下悬空指针的情况
7.4.2 利用符号链接实现文件共享
1、符号链接基本思想:快捷方式。允许一个文件或目录有多个父目录,但只有一个主目录。其他父目录(链接父目录)通过符号链接与文件或目录相链接
2、符号链接实现:符号链接为文件类型,符号链接类型的文件保存了文件的路径名。OS读取路径名打开被共享的文件
3、不会留下悬空指针的情况。但利用符号链接的使用会导致多次读盘,增大访问文件的开销,增加此盘启动频率;为符号链接文件配置索引节点,耗费磁盘空间;
7.5 文件保护
映像文件安全性主要因素:人为因素、系统因素、自然因素
保护措施:存取控制机制应对人为因素;系统容错技术应对系统因素;建立后备系统应对自然因素
7.5.1 保护域
1、访问权:进程对某个对象执行操作的权利称为访问权。
对象:硬件对象如磁盘驱动器,打印机;软件对象如文件、程序
进程访问权可表示为:{F1,{R/W}}。R:读权限,W:写权限
2、保护域:保护域简称“域”,是进程对一组对象访问权的集合,进程只能在指定域内执行操作。域规定了进程能访问的对象和能执行的操作。
3、进程与域的关系
1)静态联系:进程与域一一对应
2)动态联系:进程与域可以使一对多关系。进程每个阶段联系着一个域
7.5.2 访问矩阵
1、基本访问矩阵:行代表域,列代表对象。元素access(i,j)定义了在域Di中执行的进程对对象Qj所施加的操作集
2、访问矩阵中的访问权通常由资源的拥有者护着管理者所决定
3、具有域切换权的访问矩阵:将域也看做对象,access(i,j)=S表示域Di可以切换到域Dj
7.5.3 访问矩阵的修改
1、拷贝权:可以利用拷贝权将在某个域中所拥有的访问权扩展到同一列的其他域中。
access(i,j)=R表示可以将对象j的权限扩展到其他域中,扩展到其他域的权限为R,而非R(限制扩散)
2、所有权:所有权能够增加或删除文件在其列上的访问权。用符号O表示
3、控制权:用于改变矩阵内同一行中的各项访问权限。access(i,j)表示域Di可以删除在域Dj中运行的进程对各对象的任何访问权。符号Control
7.5.4 访问矩阵的实现
访问矩阵时空开销大,又因为是稀疏矩阵,因此将访问矩阵按行划分为访问控制表或者按列划分为访问权力表
1、访问控制表ACL:由有序对(域,权集)组成。当对象是文件时,可以把访问控制表放到文件的文件控制表中,或放到索引节点中,作为文件的存取控制信息
2、域是一个抽象概念:一个用户可以是一个域,对象为文件;进程可以是一个域。。。
3、缺省的访问控制表:在该表中列出各个域对某缺省对象的缺省访问权集
4、访问权限(力)表:由一个域对每一个兑现可以执行的操作构成的表。表项为该域对某对象的访问权限
如当域为用户(进程),对象为文件时,访问权限表描述的是一个用户(进程)对每个文件所能执行的一组操作
5、大多数系统同时采用访问控制表和访问权限表。
如进程访问某个对象,先检查访问控制表,若可以访问,为进程建立访问权限,以是是实现快速访问。
第8章 磁盘存储器管理
磁盘存储器管理任务和要求:
1)有效利用存储空间:采取合理的文件分配方式,减少磁盘碎片
2)提高磁盘的I/O速度:如磁盘高速缓存
3)提高磁盘系统的可靠性:如冗余措施,后备系统
8.1 外存的组织方式
常用的外存组织方式:连续组织方式,链接组织方式,索引组织方式。
8.1.1 连续组织方式
1、连续组织方式要求为每一个文件分配一组相邻接的盘块。
目录项记录文件第一个记录所在的盘块号和长度
2、连续组织方式优点:顺序访问容易;顺序访问速度快。
3、连续组织方式缺点:连续分配可能产生许多碎片,降低外存空间利用率;必须是事先知道文件的长度
8.1.2 链接组织方式
1、链接组织方式可为程序分配多个不连续的盘块,利用链接指针将盘块链接起来
2、优点:消除磁盘碎片,提高外存利用率;对插入,删除和修改记录容易;能适应文件的动态增长
3、链接方式:
1)隐式链接:目录项包含指向链接文件的第一个盘块和最后一个盘块的指针
缺点:只适合于顺序访问,随机访问低效;可靠性差
2)显式链接:把用于链接文件的各物理块的指针显式的存放在内存的一张链接表(文件分配表FAT)中。
指向文件第一个盘块的指针放在文件控制块(FCB)的“物理地址”字段中。
4、缺点:不能支持高效直接存取;FAT占用较大内存空间(使用的时候调入内存)
8.1.3 FAT技术
FAT12,FAT16,FAT32,支持容量见P274
1、簇:簇是一组相邻的扇区。在FAT中作为一个虚拟扇区,在进行盘块分配时,以簇作为分配的基本单位.
8.1.4 NTFS文件组织方式
1、NTFS以簇作为磁盘空间分配和回收的基本单位
2、卷因子:簇的大小
3、逻辑簇号LCN:LCN以卷为单位,将整个卷中的簇按顺序进行编号,进行地址映射时,可以通过卷因子与LCN的乘积算出卷上的物理偏移量,得到文件数据的物理地址。
4、虚拟簇号VCN:以文件为单位,将属于某个文件的簇编号。
知道文件的VCN,可映射到LCN
5、主控文件表MFT:记录一个卷中的所有文件信息、目录信息和未分配的可用空间信息。每条记录对应一个文件,包括MFT自身。
8.1.5 索引组织方式
1、单级索引组织方式
为每一个文件分配一个索引块(表),记录分配给文件的所有盘号.
目录项中保存指向索引块的指针。
优点:支持直接访问;不产生外部碎片
缺点:对中小型文件索引块利用率低
2、多级索引组织方式
在单级索引的基础上,为索引块建立索引。
适应于为大文件分配磁盘空间
优点:加快了对大型文件的查找速度
缺点:访问一个盘块时,启动磁盘次数增多
3、增量式索引组织方式
综合采用直接寻址方式(将文件盘块放到FCB中),单级索引和多级索引组织方式(间接寻址)
8.2 文件存储空间管理
常用的文件存储空间管理办法
8.2.1 空闲表法和空闲链表法
1、空闲表法:同内存的动态分配方式
存储空间的分配与回收:同内存的动态分配方式,采用首次适应算法和最佳适应算法。都优于最坏适应算法
2、空闲链表法:分为空闲盘块链和空闲盘区链
1)空闲盘块链:将空闲盘块拉成一条链。优点在于分配回收盘块过程简单,但效率比较低
2)空闲盘区链:将空闲盘区(包含多个盘块)拉成一条链。分配回收才采用首次适应算法。分配回收效率高但过程复杂。
8.2.2 位示图法
P280
8.2.3 成组链接法
P281
8.3 提高磁盘I/O速度途径
1)改进文件目录结构,改进检索目录方法
2)选取好的文件存储结构
3)提高磁盘I/O速度:采用磁盘高速缓存
8.3.1 磁盘高速缓存
1、在内存中位磁盘盘块设置的一个缓冲区称为磁盘高速缓存
2、交付方式:
1)数据交付:将高速缓存数据传送到请求进程内存工作区
2)指针交付:将指向高速缓存某一区域的指针交给进程
3、高速缓存盘块置换算法:最近最久未使用算法LRU,最近未使用算法NRU,最少使用算法LFU
4、SYNC:周期性调用系统调用SYNC,主要功能是强制性地将所有在高速缓存中已修改的数据写回磁盘
8.3.2 提高I/O速度地其他办法
1、提前读
2、延迟写
3、优化物理块的分布
4、虚拟盘RAM:利用内存空间仿真磁盘,形成虚拟盘RAM盘。是易失性存储器,用于存放临时文件
8.3.3 廉价磁盘冗余阵列RAID
1、RAID:利用一台磁盘阵列控制器统一管理和控制一组(几台到几十台)磁盘驱动器,组成一个大型磁盘系统
2、并行交叉获取:并行读写文件
3、RAID分级:0级-7级
4、RAID优点:可靠性高,磁盘I/O速度高,性价比高
8.4 提高磁盘可靠性的技术
磁盘容错技术方式由系统因素造成的文件不安全性,“后备系统”防止由自然因素造成的不安全性
8.4.1 第一级容错技术SFT-Ⅰ
1、主要用于防止因磁盘表面缺陷造成的数据丢失。包含双份目录,双份文件分配表,热修复重定向和写后读校验等措施
8.4.2 第二级容错技术SFT-Ⅱ
1、主要用于防止由磁盘驱动器和磁盘控制器故障导致的系统不能正常工作
2、分类:
1)磁盘镜像:在同一磁盘控制器下,增设一个完全相同的磁盘驱动器。
缺点:导致磁盘利用率降低一半
2)磁盘双工:双磁盘控制器,每个磁盘控制器有自己的独立通道和磁盘驱动器
8.5 数据一致性控制
1、数据一致性问题:保存在多个文件中的统一数据,在任何情况下都必须保证相同
8.5.1 事务
事务定义,事务记录(日志记录),恢复算法都同数据库
8.5.2 检查点
检查点定义,恢复算法都同数据库
8.5.3 并发控制(略)
8.5.4 重复数据的数据一致性问题
UNIX环境
1、重复文件一致性
重复文件目录项包含多个索引节点。一个重复文件被修改,其余的也要做修改,两种方式
2、链接数一致性检查
配置计数器表,记录重复文件的索引节点个数,对比索引节点链接计数和计数器表中索引节点的计数值,判断是否有错误。