第6章 文件管理
单选题6题 多选题2题
6.1 文件的分类
文件系统的概述
- 文件系统是操作系统中统一管理信息资源的一种软件,它管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用。
- 信息的存储的基本要求:
- 能够存储大量的信息
- 长期保存信息
- 可以共享信息
- 研究文件系统的角度
- 用户的角度
- 主要关心文 件由什么组成、如何命名、如何保护文件、可以进行何种操作等等
- 负责为用户建立文件、读写文件、修改文件、复制文件和撤销文件。
- 负责完成对文件的按名存取和对文件进行存取控制
- 操作系统的角度
- 主要关心文件目录是怎样实现的、 怎样管理存储空间、文件存储位置、磁盘实际运作方式(与设备管理的接口)等等
- 用户的角度
文件的定义
- 一组带标识的、在逻辑上有完整意义的信息项的序列
- 标识:文件名
- 基本单位:信息项
- 含义:由文件的建立者和使用者解释
- 命名:因系统而异
- Solaris的UFS文件系统文件名的长度可达255个字符
- FAT12的8.3命名规则规定文件名为8个字符、外加句点和3个字符的扩展名
- NTFS可以达到255个字符
- 文件名的大小写:FAT12不区分, EXT2区分
- 有的操作系统对不同的后缀有特定的解释,而有的则没有统一的规定
- 注意:文件一旦建立,就一直存在,直到该文件被删除或该文件超过实现规定的保存期限
文件的分类
- 按文件的用途分类
- 系统文件——只允许用户通过系统调用来访问它们,不允许对该类文件进行读写和修改。
- 库函数文件——允许用户对其进行读取、执行,但不允许对其进行修改
- 用户文件——只由文件的所有者或所有者授权的用户才能使用
- 按文件组织形式分类
- 普通文件——指文件的组织格式为文件系统中所规定的最一般格式的文件,例如由字符流组成的文件。包括系统文件,也包括用户文件、库函数文件和用户实用程序文件等。
- 目录文件——由文件的目录构成的特殊文件,主要用来检索文件的目录信息。
- 特殊文件——特殊文件在形式上与普通文件相同,也可进行查找目录等操作。(如I/O设备)
- 按文件的保护方式分类:只读文件、读写文件、可执行文件、无保护文件等。
- 按信息的流向分类可划分为:输入文件、输出文件和输入输出文件等。
- 按文件的存放时限可划分为:临时文件、永久文件和档案文件等。
- 按文件所使用的介质类型分类可划分为:磁盘文件、磁带文件、卡片文件和打印文件等。
UNIX类操作系统中文件的分类
- 普通文件:内部无结构的一串平滑的字符所组成的文件。
- 目录文件:由文件目录项所构成的文件。
- 特殊文件:在UNIX类操作系统中,把I/O设备也看成是一种文件。
- 按文件的用途分类
文件系统的功能
- 统一管理文件的存储空间,实施存储空间的分配与回收
- 实现文件从名字空间到外存地址空间的映射(实现文件的按名存取)
- 实现文件信息的共享,并提供文件的保护和保密措施
- 向用户提供一个方便使用的接口(提供对文件系统操作命令,以及提供对文件的操作命令)
- 系统维护及向用户提供有关信息
- 保持文件系统的执行效率
- 提供与I/O的统一接口
6.2 文件的结构
文件的逻辑结构
- 流式文件
- 流式文件是有序字符的集合,其长度为该文件所包含的字符个数,又称为字符流文件。
- 在流式文件中,构成文件的基本单位是字符。
- 可以认为流式文件就是一串有开头和结尾的连续字符,不存在任何可以视为结构的组织形式,所以可以说,流式文件无结构。
- UNIX类系统采用的是流式文件结构,源程序、目标代码等文件属于流式文件。
- 记录式文件
- 记录式文件是一组有序记录的集合,构成文件的基本单位是记录。
- 记录式文件可分为定长记录文件和不定长记录文件两种。
- 在定长记录文件中,各个记录长度相等。在检索时,可以根据记录号i及记录长度L就可以确定该记录的逻辑地址。
- 在不定长记录文件中,各个记录的长度不等。在查找时,必须从第一个记录起一 个记录一个记录查找,直到找到所需的记录。
- 流式文件
文件的物理结构
(1) 顺序结构
- 顺序结构又称连续结构,这是一种最简单的文件物理结构,它把逻辑上连续的文件信息依次存放在连续编号的物理块中。
- 在顺序结构中,一个文件的目录项中只要指出该文件占据的总块数和起始块号即可。
- 优点
- 知道文件在文件存储设备上的起始块号和文件长度就能进行存取
- 顺序结构支持顺序存取(存取速度快)和随机存取
- 缺点
- 文件不能动态增长,磁盘空间出现的碎片较多
(2) 链接结构
- 使用链接结构的文件,将逻辑上连续的文件分散存放在若干不连续的物理块中。在每个物理块中都设有一个指针,该指针指向其后续的物理块。
- 如果每个物理块的大小是512字节,而一个盘块地址需要占用两个字节,则用户看到的块长,即逻辑块长,是510字节。
- 优点
- 解决了顺序存储结构的存储碎片问题
- 有利于文件动态扩充,有利于文件插入和删除,提高了磁盘空间利用率。
- 缺点
- 存取速度慢,不适于随机存取文件。
- 磁盘的磁头移动多,效率相对较低
- 存在文件的可靠性问题,比如指针出错, 文件也就出错了(为了提高可靠性,可以采用双向链接,或者在每个物理块中存储文件名称和相对块号等办法改进)
- 链接指针需要占用一定的空间
(3) 索引结构
- 索引结构的文件把每个物理盘块的指针字集中存放在被称为索表的数据结构中的内存索引表中。
- 优点
- 既适于顺序存取,也适于随机存取
- 可以满足文件动态增长的要求,也满足了文件插入、删除的要求,还能充分利用外存空间。
- 缺点
- 索引表本身增加了存储空间的开销,会引起较多的寻道次数和寻道时间。
- 如果索引表采用连续结构,不利于索引表的动态增加。
- 如果采用链接文件结构存放索引表,会增加访问索引表的时间开销。
- 索引表应该多大?应该定长还是变长?解决问题的办法有以下种类:
- 索引表的链接模式:一个索引表通常就是一个物理盘块,读写索引表比较简单,对大文件就用多个索引表并将之链接在一起。
- 多级索引:这是上述索引表链接模式的一种改善变种,将一个大文件的所有索引表(二级索引)的地址放在另一个索引表(一级索引)中。
(4) I节点结构
- I节点是一种多级索引文件结构,在一般多级索引结构文件的基础上,进行了结构上的变化,克服了索引结构的缺点。
- I节点的基本思想:给每个文件赋予一张称为I节点的小表,在这张小表中列出了文件属性和文件中各块在磁盘上的地址。
文件的存储介质
存储介质的特点
- 有容量大、断电后仍可保存信息、速度较慢、成本较低等
- 外存储设备通常由驱动部分和存储质两部分组成
- 存储设备有很多种类,如磁盘、磁带、磁鼓、纸带、光盘和闪存等
- 外存储设备存取的过程大致如下:读状态->置数据->置地址置控制->读状态。
用户对外存储设备的要求
- 在读写外存储设备时不涉及硬件细节,用户直接使用逻辑地址和逻辑操作。
- 外存储设备存取速度尽可能快,容量大且空间利用率高。
- 外存储设备上存放的信息安全可靠,防止来自硬件的故障和他人的侵权。
- 可以方便地共享,存储空间可动态扩大、缩小,携带、拆卸便捷,可随时了解存储设备及使用情况。
- 以尽可能小的代价完成上述要求。
文件在存储设备中的存取
磁盘上每个物理块的位置可用柱面号(磁道号)、磁头号和扇区号表示,这些地址与物理块号一对应。 其计算公式如下:
①已知物理块号,则磁盘地址
- 柱面号 = 物理块号 / (磁头数 * 扇区数)
- 磁头号 = (物理块号 mod (磁头数 * 扇区数)) / 扇区数
- 扇区号 = (物理块号 mod (磁头数 * 扇区数)) mod 扇区数
②已知磁盘地址
- 物理块号 = 柱面号 (磁头数 * 扇区数) + 磁头号 * 扇区数+扇区号*
磁盘读写过程
- 在磁盘中,磁头臂只能沿半径方向移动。
- 在访问磁盘时,首先要把磁头臂移动到相应柱面的磁道上,称为寻道。然后等待盘片旋转,使指定的扇区转到磁头之下,实现了对磁道和扇区的定位。
- 最后控制磁头对扇区中的数据进行读写。
一次访问磁盘的时间
- 时间 = 寻道时间 + 数据传输时间 + 旋转定位时间
- 寻道时间是机械动作的时间,因而所花费的时间最长。
- 通过对磁盘读写的分析,存取磁盘上任一物理块的时间与该物理块所处的位置无关。
- 由于盘片正反两面都使用,或若干个磁盘片组合固定在一起由同一个马达驱动,因比需要标定盘面的代号或磁头号。
- 将所有盘面中处于同一磁道号上的所有磁道组成一个柱面,这就形成了柱面号。
- 读写同一柱面内的数据不需移动磁头,实际上节省了访盘时间。
RAID
- Raid技术主要是解决磁盘这种机械设备存在速度慢和故障出现等问题提出的。
- Raid0采用多个磁盘并行的方式以提高读写速度,将数据以“块”或“条带”的方式分组,分别、同时地存入一组并联的磁盘中。
- Raid1用磁盘镜像的方法来提高存储的可靠性,可以是一块磁盘或一组磁盘的镜像。
- Raid2和Raid3以 “位”或“字节” 作为并行单位,与Raid0类似。
- Raid4的并行单位是“块”,为提高可靠性加入了校验。校验码是独立存放的
- Raid5与Raid4相同,但是校验码以“块”为单位与数据块一起随机存放在磁盘块中
- 最常用的是Raid10以及Raid5。
固态硬盘
- 计算机对存储系统的要求是高速、大容量和非易失。
- 固态硬盘是由闪存作为主要存储介质,辅之与控制电路和译码寻址电路共同组成一个计算机的外部设备,其主要的功能是用于存放数据信息并可以随机访问。
- 非易失:固态硬盘存入的数据失电以后能继续保存数据信息。
- 访问速度快:固态硬盘无机械结构,寻址通过译码电路完成,相对普通硬盘其访问速度较快。
- 低功耗:无电机等大功率耗能单元
- 抗冲击:无磁头等精密器件,可以在频繁移动的设备上使用
- 缺点
- 成本高:单位存储成本还是高于传统硬盘,因此大量应用还受到限制
- 写入寿命限制:最常用的闪存是NAND存储器,其写入次数是有限的
文件的存取方式
文件的存取方式是由文件的性质和用户使用文件的情况而确定的。
顺序存取——按从前到后的次序依次访问文件的各个信息项
- 对记录式文件是按记录的排列顺序来存取
- 顺序存取只要把当前记录的逻辑地址加上记录的长度,就可以得到下一个记录的逻辑地址。
- 对流式文件,顺序存取反映当前读写指针的变化,在存取完一段信息后, 读写指针自动指出下次存取时的位置。
随机存取
- 又称直接存取
- 允许用户按任意的次序直接存取文件中的任意一个记录
- 根据存取命令把读写指针移到文件中的指定记录处读写
6.3 文件的目录
文件目录的组成
- 文件系统的一个特点是“按名存取”:用户只要给出文件的符号名就能方便地存取在外存空间的该文件的信息,而不必了解和处理文件的具体物理地址。
- 在操作系统中,为了管理大量的文件,为每个文件都设置一个描述性数据结构一文件控制块FCB
- 把所有文件的文件控制块有机地组织起来,就构成了文件控制块的一一个有序集合,称为文件目录。
- 文件目录实际就是文件符号名到文件物理地址之间的一种映射机制。
(1) 文件控制块FCB结构
文件控制块FCB是系统为管理文件而设置的一个数据结构
FCB是文件存在的标志,记录了系统文件所需要的全部信息
在文件控制块中的信息可以分成文件存取控制信息、文件结构信息和文件管理信息。
文件名 共享说明 文件号 文件逻辑结构 用户名 文件物理结构 文件物理位置 建立日期和时间 文件长度 最后访问日期和时间 记录长度 最后修改日期和时间 文件类型 口令 文件属性 保存期限 上表详细说明
- 文件名:用户给文件取的名称
- 文件号:系统在文件创建时所指定的一个编号,文件号唯一地标识一个文件
- 用户名:记录了该文件创建者的名称,一个文件的创建者就是该文件的所有者
- 文件物理结构:标识了该文件内部的物理结构是顺序结构、链接结构还是索引结构。
- 文件逻辑结构:指出该文件是流式文件还是记录式文件
- 文件物理位置:记录了与文件在存储介质中的物理位置有关的信息
- 文件长度和记录大小:则分别保存有该文件的长度和每个物理块的大小。
- 文件类型:常见的文件类型有源程序文件、可执行文件、字符文件、数据文件、语音文件和视频文件等。
- 文件属性:指出文件是只读式文件、可读写文件还是只可执行文件。
- 共享说明:指出该文件是否允许其他用户使用、允许组内用户使用,还是允许系统中的所有用户使用等。
- 口令:是指为了文件的安全和文件信息的保密所设置的访问文件的密码。
- 保存期限:是指预计该文件的保管时间。
(2) 目录文件
- 定义:以文件的形式保存起来,是长度固定的记录式文件。
- 在目录文件中,每个文件的文件控制块又称为目录文件中的目录项。
- 为了节省内存的空间,就把目录文件保存在外存储器上,在需要时才把目录文件调入内存。
- 文件目录是实现用户按名存取文件的一种手段
文件目录结构
(1) 一级目录结构
- 在系统中设置一 张线性目录表,表中包括了所有文件的文件控制块,每个文件控制块指向一个 普通文件。
(2) 二级目录结构
- 在二级目录结构中,目录被分为两级(MFD+UFD)。
- 二级目录解决了文件的重名问题,可以实现用户间的文件共享,查找时间也降低了。
- 二级目录的缺点是增加了系统的开销。
树形目录(多级目录)
- 在树形目录结构中,最高层为根目录,最低层为文件,每一级目录中存放的都是下一级目录或文的说明信息,由此形成层次关系。
- 根目录是唯一的,一般可放在内存,由它开始可以查找到所有其他目录文件和普通文件。
- 优点
- 层次清楚:不同性质、不同用户的文件可以构成不同的子树,便于管理,有利于文件的保护。
- 解决了文件重名问题:只要在同一子目录下的文件名不发生重复,就不会由文件重名而引起混乱
- 查找搜索速度快:对多级目录的查找每次只查找目录的一个子集,搜索速度较一个级和二级目录时更快。
- 代表性的操作系统有UNIX、Linux类、 Windows等都采用多级目录结构
- 缺点
- 查找一个文件按路径名逐层检查,多次访盘会影响速度,结构相对比较复杂。
路径名
(1) 目前目录与目录检索
当前目录(工作目录):文件系统向用户提供了一个当前正在使用的目录
检索的方法
- 全路径名(绝对路径)——从根目录开始,列出由根到用户指定文件的全部有关子目录
- 相对路径——以当前目录作为路径的相对参照点访问文件的一段路径(优点:检索路径缩短,检索速度提高)
(2) 文件目录的改进
为加快目录检索可采用目录项分解法,即把目录项(FCB)分为符号目录项(次部)和基本目录项(主部)两部分。
[例]假设一个文件控制块有48字节,符号目录项占8字节,其中文件名占6字节,文件号占2字节;基本目录项占48-8=40字节。设物理块的大小为512字节。
- 在进行目录项分解前,一个物理块可以存放512/48≈10个文件控制块。
- 在进行目录项分解后, 一个物理块可以存放512/8=64个符号目录项,或者512/40≈12个基本目录项。
[例]如果一个目录文件有128个目录项,那么分解前128*48/512=12,即需要12个物理块存放该目录文件。
在进行目录项分解后,符号目录文件占128*8/512=2,即需要2个物理块存放符号文件。
基本目录项占128x40/512=10,即需要10个物理块存放基本目录文件。
计算查找一个文件的平均访盘次数。
分解前: (1+12)/2=6.5次。
分解后: (1+2)/2+1=2.5次。
目录的操作
- CREATE创建目录
- DELETE删除目录
- OPENDIR打开目录
- CLOSEDIR关闭目录
- RENAME可修改名称
- LINK链接技术
- UNLINK删除目录项
6.4 文件系统的实现
存储空间的分配与回收
(1) 位示图
- 基本思想:利用一串二进制位(bit)的值来反映磁盘空间的分配使用情况。
- 位示图对空间分配情况的描述能力强。
- 一个二进制位就描述一个物理块的状态。
- 位示图占用空间较小,可以复制到内存,使查找既方便又快速。
- 位示图适用于各种文件物理结构的文件系统。
(2) 空闲块表
- 空闲块表是专门为空闲块建立的一张表,该表记录外存储器中全部空闲的物理块,包括每个空闲块的第一个空闲物理块号和该空闲块中空闲物理块的个数。
- 系统首先查找空闲块表,主要查看该空闲块表项中是否有符合上述申请值的对应表项,如果有,就将该表项从空闲块表中删去,并且把所对应的一组连续的空闲物理块分配给申请者。
- 当删除文件时,系统收回它所占用的物理块,并且考虑所收回的物理块是否可以与原有空 闲块相邻接,以便合并成更大的空闲区域,最后修改有关空闲块表项。
(3) 空闲块链表
- 将外存储器中所有的空闲物理块连成一个链表,用一个空闲块首指针指向第一个空闲块,随后的每个空闲块中都含有指向下一个空闲块的指针,最后一块的指针为空,表示链尾。
- 空闲块链表模式效率低:要遍历整张空闲块链表,必须读每一个物理块,这就需要大量的I/O时间。
- 在空闲块链表模式中对空间的申请和释放是以块为单位的:申请空间时从链首取空闲块,空间释放时将物理块接入链尾。
- 空闲块链表法节省内存,但申请空间和回收空间的速度较慢,实现效率较低。
(4) 成组链接
- 对链接表的一个改进方案是将n个空闲盘块的地址存放在第一个空闲块中。
实现文件系统的标目
(1) 系统打开文件表
- 系统打开文件表专门用于保存已打开文件的文件控制块。
- 该系统打开文件表放在内存,在该表格中还保存有已打开文件的文件号、共享计数、修改标志等。
(2) 用户打开文件表
- 在每个进程中都有一个“用户打开文件表”,该表的内容有文件描述符、打开方式、读写指针、系统打开文件表入口等。
- 在进程的进程控制块PCB中还记录了“用户打开文件表”的位置。
记录的成组与分解
(1) 记录的成组
- 记录的成组是把若干个逻辑记录合成一组存放在一个物理块的工作,每块中的逻辑记录个数称为“块因子” 。
- 记录的成组在不同存储介质上进行信息转储是很有用的。
- [例]某用户有一批早期的原始数据记录在一叠卡片上,共6张,每张卡片上最多记录80个字符,现在要把这批早期卡片上的数据转储到磁盘上。
- 方法一:假设磁盘上的一个物理块有512字节,一个物理块上只记录80个字符, 磁盘空间的利用率=80/512*100%=15.6%
- 方法二:若把6张卡片的数据集中存放到磁盘上的一个物理块中,则磁盘空间的利用率就可以提高到80x6/512=93.75%。
- 在进行记录成组时,还应考虑逻辑记录的格式。
- 在记录式文件中,有定长记录格式和不定长记录格式。
- 对定长记录格式的文件按记录成组的方式存储到存储介质上。
- 不定长记录格式的文件,各个逻辑记录的长度可能不相等,在进行记录成组操作时就应在每个逻辑记录前附加说明该记录长度的控制信息。
(2) 记录的分解
- 记录的分解是从一组逻辑记录中把一个逻辑记录分离出来的操作。
- 为了提高存储空间的利用率和减少启动设备的次数,采用了记录的成组和分解技术
文件的操作
(1) 建立文件
- 建立文件的实质是建立文件的文件控制块FCB,并建立必要的存储空间,分配空的FCB ,从而建立起系统与文件的联系。
- 建立文件系统调用的一般格式为:create(文件名, 访问权限, (最大长度))
- 建立文件的过程
- 检查参数的合法性
- 检查同一目录下有无重名文件
- 在目录中有无空闲位置
- 填写目录项内容(文件名、用户名、存取权限、长度置零、首地址等)
- 返回
(2) 打开文件
- 任何一个文件使用前都需要先打开,即把文件控制块FCB送到内存
- 打开文件系统调用的一般格式为:fd=open(文件路径名, 打开方式)
- 打开文件的过程
- 根据文件路径名查目录,找到FCB主部
- 根据打开方式、共享说明和用户身份检查访问合法性
- 根据文件号查系统打开文件表,看文件是否已被打开
- 在用户打开文件表中取一空表项,填写打开方式等,并指向系统打开文件表对应表项
- 返回信息:文件描述符fd,这是一个非负整数,用于以后读写文件。
(3) 读文件
- 读文件系统调用 一般格式为:read(文件名, (文件内位置), 要读的长度, 内存目的地址)
- 读文件的过程
- 检查长度是否为正整数
- 根据文件名查找目录,确定该文件在目录中的位置
- 根据隐含参数中的文件主和目录中该文件的存储权限数据,检查是否有权读
- 由文件内位置与要读的长度计算最末位置,将其与目录中的文件长度比较,超过否
- 根据参数中的位置、长度和目录中的映射信息,确定物理块号、需要读出的块数等读盘参数
- 根据下一块号读块至内存缓冲区
- 取出要读的内容,也许要进行成组的分解,将取出的内容送至参数中的内存目的地址
- 根据块内长度或起始块号+块数,确定还读下块吗
- 正常返回
- 错误返回,返回相应错误号
(4) 写文件
写文件系统调用的一般格式为:write(文件名, 记录键, 内存位置)
- 指定单元的数据作为记录
- 将记录写入指定文件中
- 系统分配物理块
- 把记录信息写到外存上
(5) 关闭文件
- 文件关闭后一般不能存取,若要存取,则必须再次打开。
- 关闭文件系统调用的一般格式为:close(文件名)。
- 系统根据用户提供的文件名或文件描述符,在该文件的文件控制块上做修改。
- [例]文件的共享用户数减1,减1后若值为0,则将文件控制块置上“非活跃”标志,若该文件控制块内容被修改过,则要写回外存。
(6) 删除文件
- 删除文件系统调用的一般格式为:delete(文件名)
- 删除文件过程
- 查找文件
- 检查删除合法性
- 删除FCB资源
- 收回文件存储空间
(7) 指针定位
- 指针定义的一般过程为:seek(fd, 新指针的位置)
- 指针定位过程
- 由fd查找用户打开文件表,找到对应的入口
- 将用户打开文件表中文件读写指针位置设为新指针的位置,供后续读写命令存取该指针处文件内容。
6.5 文件系统的权限及性能
文件的共享
- 文件的共享是指一个文件可以允许多个用户共同使用,可以完成共同任务。
- 优点
- 节省文件所占用的存储空间
- 免除系统复制文件的工作
- 减少用户大量重复性劳动
- 减少实际输入输出文件的次数
- 可以实现进程间相互通信
- 在允许文件共享的系统中,必须对共享文件进行管理
- 文件可以同时使用——允许多个用户同时打开共享文件执行读操作,不允许读者与写者同时使用共享文件,也不允许多个写者同时对共享文件执行操作,以确保文件信息的完整性
- 文件不允许同时使用——不允许两个或两个以上的用户同时打开个文件。 要待一个用户使用结束关闭了文件后,才允许另一个用户打开该文件
- 在文件共享的具体方式上,有3种文件的共享形式
- 文件被多个用户使用,由存取权限控制
- 文件被多个程序使用,但分别用自己的读写指针
- 文件被多个程序使用,但共享读写指针
- 在多级目录结构中,链接法(link)是常用的实现文件共享技术。
- 对文件共享的链接法可以通过两种链接方式实现
- 允许目录项链接到任一表示文件目录的结点上
- 只允许链接到表示普通文件的结点上
文件的保护
(1) 文件系统必须有防止硬、软件的各种意外可能破坏文件的能力
- 建立副本
- 优点:可以保护文件不受破坏
- 缺点:设备费用和系统开销增大;当文件需要修改或更新时,必须要改动所有的副本
- 方法:可用其他存储介质上的备用副本来替换
- 定时转储
- 每隔一定的时间就把文件转储到其他的存储介质上
- 当文件发生故障时,就用转储的文件来复原,把有故障的文件恢复到转储时刻文件的状态。
- 按照转储内容可分为增量转储和全量转储
- 按照转储方式可分为物理转储和逻辑转储
(2) 规定用户使用文件的权限的方法有两种
- 采用树形目录结构
- 用户按目录中规定的存取权限使用目录或文件。
- 存取控制表
- 列出每个用户对每个文件或子目录的存取权限
- 审定用户的存取权限
- 比较用户权限的本次存取要求是否和用户的存取权限一致
- 将用户的存取要求和被访问文件的存取控制表进行比较,看是否有冲突。
- 建立副本
文件的存取权限
(1) 存取控制矩阵
- 在存取控制矩阵方式中,系统以一个二维矩阵来实施文件的存取控制。
- 在这个二维矩阵中,其中一维代表所有的用户,另一维代表所有的文件。
- 两维交叉点所对应的矩阵元素则是某一个用户对一个文件的存取控制权限,包括读R、写W和执行E。
(2) 二级存取控制
- 二级存取控制方法中设立两个存取级别。
- 在第一级,把用户按某种关系划分为若干用户组,进行对访问者的识别
- 在第二级,进行对操作权限的识别。
(3) UNIX中的文件存取权限
- UNIX中对文件的存取按权限划分为两级
- 在第一级中对访问者或者用户进行分类识别
- 文件属主或文件拥有者(owner)
- 文件属主的同组用户(group)
- 其他用户(other)
- 在第二级中,把对文件的操作分成如下的类别
- 读(Read)操作(R)
- V写(Write )操作(W)
- 执行(eXecute)操作(X)
- 不能执行任何操作(--)
- UNIX系统内部使用数值来表示文件属性,每一个属性与文件属性中的一个进制位相对应。
- 如果该存取权限设置了,对应的二进制位就是1,如果该存取权限没有设置,对应的二进制位是0。
- 在UNIX中常使用八进制的形式表示(例如二进制来表示111101101) ,则这个权限是755。
- 在UNIX中,文件的属主和管理员可以使用命令chmod来设置或改变文件的权限。
文件的保密
- 文件保密的目的是防止不经文件拥有者授权而窃取文件
- 隐蔽文件目录:把保密文件的文件目录隐蔽起来,这些文件的文件目录不在显示器上显示。
- 设置口令:建立文件时把口令存放在文件目录中,用户使用文件时必须提供口令。
- 使用密码:可把文件信息加密,转换成密码形式保存,使用文件时再将其解密。
- 文件保密的目的是防止不经文件拥有者授权而窃取文件
文件系统的性能
设计文件系统时应尽可能减少磁盘访问次数,这样可以适当减少磁盘存储器性能对文件系统性能的影响。
(1) 块高速缓存
- 基本思想——系统在内存中保存一些磁盘块(在逻辑上属于磁盘),内存的这一区域被称为块高速缓存
- 使用方法——系统检查所有的读请求,看所需的文件块是否在块高速缓存中
- 注意事项——块高速缓存的内容需要定期写回到磁盘上,以保存对磁盘块的修改
(2) 合理分配磁盘空间
- 使用方法——在磁盘空间中分配块时,应该把有可能顺序存取的块放在一起,最好在同一柱面上
- 优点——有效地减少磁盘臂的移动次数,加快了文件的读写速度,从而提高了文件系统的性能
(3) 磁盘的驱动调度
- 基本思想:磁头沿着盘片直径方向移动,同时对指定磁道上的扇面中的数据进行读写操作。
- 使用方法:当多个访盘请求在等待时,系统采用一定的策略,对这些请求的服务顺序进行调整安排,使寻道时间和延迟时间都尽可能小的那个访问请求可以优先得到服务,并降低若干个访问者的总访问时间,增加磁盘单位时间内的操作次数。
- 优点:降低平均磁盘服务时间,从而实现公平、高效的访盘请求。
- 磁盘的存取访问时间的组成部分
- 寻道时间——将磁头移动到相应的磁道或柱面所需的时间
- 旋转延迟时间——磁头到达指定磁道,必须等待所需要的扇区旋转到读/写头下的时间
- 传输时间——信息在磁盘和内存之间的实际传送时间
- 要使磁盘服务尽可能地快,就需要操作系统提供合适的磁盘调度算法,以改善磁盘服务的平均时间。 设计磁盘调度算法应当考虑两个基本因素:
- 公平性:一个磁盘访问请求应当在有限时间内得到满足。
- 高效性:减少设备机械运动所带来的时间开销。
- 调度算法
- 先来先服务调度算法(FCFS)
- 方法:按照访问请求的次序为各个进程服务。
- 优点:最公平而又最简单的算法。
- 缺点:磁头引臂的移动速度很慢,效率低。
- 如果按照访问请求发出的次序依次读写各个磁盘块,则磁头引臂将可能频繁大幅度移动,容易产生机械振动,亦造成较大的时间开销,影响效率。
- 最短寻道时间优先调度算法(SSTF)
- 方法:以寻道优化为出发点,优先为距离磁头当前所在位置最近磁道(柱面)的访问请求服务。
- 优点:改善了平均服务时间。
- 缺点:可能有内磁道请求长时间得不到服务,缺乏公平性。会引起饥饿现象
- [例]假设磁头当前位于第105道,正在向磁道序号增加的方向移动。现有一个磁道访问请求序列为35, 45, 12, 68, 110, 180, 170, 195,采用SSTF调度(最短寻道优先调度)算法得到的磁道访问序列是?110, 68, 45, 35, 12, 170, 180, 195
- 扫描算法(SCAN)(电梯算法)
- 方法:当无访问请求时,磁头臂停止不动;当有访问请求时,磁头臂按照一定方向扫描。
- 优点:既考虑距离,也考虑方向,且以方向优先,比较公平,而且效率较高。
- [例]假设磁头当前位于第105道,正在向磁道序号增加的方向移动。现有一个磁道访问请求序列为35, 45, 12, 68, 110, 180, 170, 195,采用SCAN调度(电梯调度)算法得到的磁道访问序列是?110, 170, 180, 195, 68, 45, 35, 12
- 循环扫描算法(C-SCAN)
- 方法:修改了原扫描路径,将双向的服务改为单向服务。
- 当磁头从外道移向内道时,如果经过的磁道有访问请求,则为其服务,直到最内端的请求服务完毕,然后立即快速回到最外边有请求的磁道,继续下一个循环。
- 优点:具有较好的公平性。
- 旋转调度
- 旋转调度是根据延迟时间来决定执行次序的调度。
- 进行旋转调度时应分析下列情况:
- 若干访问等待者请求访问同一磁道上的不同扇区。
- 若干访问等待者请求访问不同磁道上的不同编号的扇区。
- 若干访问等待者请求访问不同磁道上的具有相同编号的扇区。
- 先来先服务调度算法(FCFS)
6.6 UNIX文件系统
FAT文件系统
- FAT是简单的文件系统,是文件分配表的缩写。
- FAT文件系统总共有三个版本:FAT-12、FAT-16和FAT-32,取决于用多少二进制位表示磁盘地址。
- FAT-16不支持长文件名
- FAT文件系统以簇为单位进行分配,所以FAT-16文件系统表示用16位(2字节)表示簇号。
- 文件分配表位于卷的开头,目的是为了防止文件系统遭到破坏。
- FAT文件系统保存了两个文件分配表,当其中一个遭到破坏时可以保护卷。
- 文件分配表和根目录必须存放在磁盘上一个固定的位置,这样才可以正确地找到后动系统所需要的文件。
- 引导扇区—FAT1—FAT2—根目录—其他目录和文件
(1) 引导扇区
- 引导扇区(Boot Sector)包含用于描述卷的各种信息,利用这些信息才可以访问文件系统。
- 在基于X86的计算机上,主引导记录(Master Boot Record)使用系统分区上的引导扇区来加载操作系统的核心文件。
(2) 文件分配表
- 文件分配表包含关于卷上每个簇的类型的信息(括号中是FAT-16的样值)
- 未使用(0x0000)
- 被文件所使用的簇
- 坏簇(0xFFF7)
- 文件中的最后一簇(0xFFF8-0xFFFF)
- 在FAT且录结构中,每个文件都给出了它在卷的起始簇号。
- 起始簇号是文件所使用的第一个簇的地址,每个簇都包含一个指针,指向文件中的下一簇。
(3) 根目录
- 在FAT-16文件系统中,位于根目录下的每个文件和子目录在根目录区中都包含一个目录项
- 根目录与其他目录之间的唯一区别是根目录位于磁盘上一个特殊的位置并且具有固定的大小
- 每个目录项的大小为32字节,其内容包括:文件名、扩展名、属性字节、最后一次修改时间和日期、文件长度、第一簇的编号等
- 第0~7字节为文件名
- 第8~10字节为文件的扩展名
- 第11字节为文件属性
- 第0位为1表示只读文件
- 第1位为1表示隐藏文件
- 第2位为1表示系统文件
- 第3位为1表示此记录为卷标
- 第4位为1表示此记录为子目录
- 第5~7位保留
- 第12~21字节保留
- 第22~23字节为文件创建的时间
- 第15~11位为“时”
- 第10~5位为“分”
- 第4~0位为“秒”,由于5位二进制数无法表示60,因此应将其值乘以2 ,得到时间“秒”
- 第24~25字节为文件创建的日期
- 第15~9位为“年”的偏移量,即1980年为“0年”,真实年份需要在读出的数值上加1980。
- 第8~5位为“月”
- 第4~0位为“日”
- 第26~27字节为文件在卷上的起始簇号
- 第28~31字节为文件的大小,单位字节
UNIX文件操作
- Unix文件系统是对存储设备上的数据和元数据进行组织的机制,提供了层次结构的目录和文件。
- Unix的文件系统采用多级树型目录结构,其优点是有效的解决了文件重名问题,又可以很方便地实现文件共享。
- Unix目录中为每个文件保留了一项,每个目录项包含了两个域,文件名(14字节)和I节点的编号(2字节)
- I节点号包括文件大小、三个时间(创建时间、最后访问时间、最后修改时间)、所有者、所在组、保护信息以及一个计数(用于记录指向节点的目录项的数量)
(1) 管理结构
- Unix文件系统是通过“磁盘索引i节点”、“目录项”来进行管理的,在文件被打开或被引用后还需要“内存索引i节点”、“用户文件描述表”、”文件表”。
- 管理块主要管理磁盘结构中各部分区域的大小及资源(I节点,磁盘块)的使用情况与管理方式。
- 活动I节点(内存节点):反映文件当前活动的情况,还添加了一些项目:内存索引节点状态、设备号、索引节点号、内存索引节点的访问计数。
- 打开文件表:打开文件表记录了打开文件所需的一些附加信息:读写状态、引用计数、指向内存索引点的指针、读/写位置指针。
- 用户文件描述符表:每个用户进程有一个用户文件描述符表,每一个表项就是一个指针,并指向打开文件表的一个表项,这个表的作用就是保证每个进程能够打开多个文件,或者对同一个文件以不同形式操作打开。
(2) 物理结构
- Unix文件系统采用的是索引文件结构,在索引节点中建立有13个地址项。
- 对于长度不超过10个物理块的小型文件,可直接找到该文件所在的盘块号
- 对于中、大型文件采用一次或两次间接寻址
- 对超大型文件采用三次间接寻址。
- 索引节点的优点是:索引节点占用的空间小,对小文件的索引速度快,同时又允许组织大型和超大型文件。
预览: