第五章 文件管理
5.1 概述
5.2 文件的结构和存取方式
5.3 文件目录
5.4 文件系统的实现
5.5 文件的使用
5.6 文件系统的可靠性和安全性
5.7 文件系统的性能问题
5.1 概述所有的计算机应用程序都要:
存储信息,检索信息三个基本要求:
能够存储大量的信息长期保存信息可以共享信息解决方法:把信息以一种单元,即文件的形式存储在磁盘或其他外部介质上 。
文件是通过操作系统来管理的,包括:
文件的结构,命名,存取,使用,保护和实现方法两种观点用户观点:
文 件 系 统 如 何 呈 现 在 其 面 前,
一个文件有什么组成,如何命名,如何保护文件,可以进行何种操作等等操作系统观点:
文件目录怎样实现,怎样管理存储空间,文件存储位臵,磁盘实际运作方式 (与设备管理的接口 )等等
5.1.1 文件与文件系统
1.文件一组带标识的在逻辑上有完整意义的信息项的序列,这个标识为文件名 。
信息项:构成文件内容的基本单位长度:单个字节,或多个字节文件内容的意义:由文件的建立者和使用者解释各信息项之间具有顺序关系信息项 信息项 ……..,信息项 ……..,信息项编号,0 1 …… i …… n -1
读写指针文件是一个抽象机制,它提供了一种把信息保存在存储介质上,而且便于以后存取的方法,用户不必关心实现细节。
2.文件系统是操作系统中统一管理信息资源的一种软件,管理文件的存储,检索,
更新,提供安全可靠的共享和保护手段,并且方便用户使用
3.文件命名给出文件命名规则:
长度,数字和特殊字符,大小写区分,支持文件扩展名 ( 一个或多个 )
例子,.bak,c,f77,gif
.hlp,html,mpg,o
.ps,tex,txt,zip
4.功能
(1)统一管理文件的存储空间,实施存储空间的分配与回收
(2)实现文件的按名存取名字空间 映射 存储空间
(3)实现文件信息的共享,并提供文件的保护和保密措施
(4)向用户提供一个方便使用的接口
( 提供对文件系统操作命令,以及提供对文件的操作命令:信息存取,
加工等 )
(5)系统维护及向用户提供有关信息
(6)文件系统的执行效率文件系统在操作系统接口中占的比例最大,用户使用操作系统的感觉在很大程度上取决于对文件系统的使用效果,
(7)提供与 I/O的统一接口
5.1.2 文件的分类
1,按文件性质和用途分类系统文件:
有关 OS及有关系统所组成文件用户文件:
库文件:标准子程序及常用应用程序组成文件,允许用户使用但不能修改
2,按信息保存期限分类临时文件;永久文件;档案文件
3,按文件的保护方式分类只读文件;读写文件;可执行文件
4,按文件的逻辑结构分类流式文件;记录式文件
5,按文件的物理结构分类顺序 ( 连续 ) 文件;链接文件;索引文件
6,UNIX系统将文件分为三类普通文件;目录文件;特殊文件 ( 设备文件,把外部设备也看作文件 )
普通文件 (regular)
包含的是用户的信息,一般为 ASCII
或二进制文件目录文件 (directory)
管理文件系统的系统文件特殊文件 (special file)
字符设备文件:和输入输出有关,
用于模仿串行 I/O设备,例如终端,
打印机,网络等块设备文件:模仿磁盘分类的目的:对不同文件进行管理,提高系统效率;提高用户界面友好性
5.2 文件的结构及文件存取方式
5.2.1 文件的逻辑结构从用户角度看文件,研究文件的组织形式一条记录一个字节字节序列 记录序列 树
1.流式文件:构成文件的基本单位是字符,文件是有逻辑意义的,无结构的一串字符的集合 。
文件:一个无结构字节序列好处:提供很大的灵活性
2.记录文件:文件是由若干个记录组成,每个记录有一个键,可按键进行查找 。 记录式文件是有结构的文件 。
文件:一个固定长度记录的序列,
每条记录有其内部结构
5.2.2 存储介质磁盘,磁带,光盘
1.物理块 (块 )
在文件系统中,文件的存储设备常常划分为若干大小相等的物理块 。
同时也将文件信息划分成相同大小的逻辑块 ( 块 ),所有块统一编号 。
以块为单位进行信息的存储,传输,
分配
2.磁带永久保存大容量数据顺序存取设备:
前面的物理块被存取访问之后,
才能存取后续的物理块的内容存取速度较慢,主要用于后备存储,
或存储不经常用的信息,或用于传递数据的介质第 i块 间隙 第 i+1块
3.磁盘直接 ( 随机 ) 存取设备:
存取磁盘上任一物理块的时间不依赖于该物理块所处的位臵磁道扇区柱面扇区磁臂磁头信息记录在磁道上,多个盘片,正反两面都用来记录信息,每面一个磁头所有盘面中处于同一磁道号上的所有磁道组成一个柱面物理地址形式:
磁头号 ( 盘面号 )
磁道号 ( 柱面号 )
扇区号磁盘系统由磁盘本身和驱动控制设备组成,实际存取读写的动作过程是由磁盘驱动控制设备按照主机要求完成的一次访盘请求:
读 /写,磁盘地址 ( 设备号,柱面号,
磁头号,扇区号 ),内存地址 ( 源 /
目 )
完成过程由三个动作组成:
寻道 ( 时间 ),磁头移动定位到指定磁道旋转延迟 ( 时间 ),等待指定扇区从磁头下旋转经过数据传输 ( 时间 ),数据在磁盘与内存之间的实际传输很多系统允许有些磁盘是可装卸的节省驱动设备成本,增加灵活性和便携性硬盘又分为两种:
固定头磁盘:每个磁道设臵一个磁头,
变换磁道时不需要磁头的机械移动,
速度快但成本高移动头磁盘:一个盘面只有一个磁头,
变换磁道时需要移动磁头,速度慢但成本低
4.光盘光盘容量大,速度快,价格便宜,但一般不可写可读写光盘驱动器价格贵,写过程很麻烦光盘的空间结构与磁盘类似
5.外存的特点容量大,断电后仍可保存信息,速度较慢,成本较低由两部分组成:驱动部分 +存储介质种类很多外存空间组织与地址与存取方式非常复杂
I/O过程方式非常复杂
6.用户对外存的要求用户对外存的使用:读写外存数据用户对外存的要求:方便,效率,安全
(1) 在读写外存时不涉及硬件细节,
使用逻辑地址和逻辑操作
(2) 存取速度尽可能快,容量大且空间利用率高
(3) 外存上存放的信息安全可靠,防止来自硬件的故障和他人的侵权
(4) 可以方便地共享,动态扩缩,携带拆卸,了解存储情况和使用情况
(5) 以尽可能小的代价完成上述要求
5.2.3 文件的物理结构是从系统的角度来看文件,从文件在物理介质上的存放方式来研究文件
1,连续结构 ( 顺序 )
一个文件的信息存放在若干连续的物理块中优点,简单支持顺序存取和随机存取顺序存取速度快所需的磁盘寻道次数和寻道时间最少缺点,A 文件不能动态增长预留空间,浪费重新分配和移动
B 不利于文件插入和删除
C 外部碎片问题存储压缩技术
2,链接结构一个文件的信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块优点:提高了磁盘空间利用率,不存在外部碎片问题有利于文件插入和删除有利于文件动态扩充缺点:存取速度慢,不适于随机存取可靠性问题,如指针出错更多的寻道次数和寻道时间链接指针占用一定的空间链接结构的一个变形,
文件分配表 FAT
3.索引结构一个文件的信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构 --索引表,并将这些块的块号存放在一个索引表中一个索引表就是磁盘块地址数组,
其中第 i个条目指向文件的第 i块优点:保持了链接结构的优点,又解决了其缺点:
即能顺序存取,又能随机存取满足了文件动态增长,插入删除的要求也能充分利用外存空间缺点:较多的寻道次数和寻道时间索引表本身带来了系统开销如:内外存空间,存取时间索引表组织,
链接模式,一个盘块一个索引表,多个索引表链接起来多级索引,将一个大文件的所有索引表 ( 二级索引 )的地址放在另一个索引表 ( 一级索引 )中综合模式,
UNIX文件系统采用的是多级索引结构 (综合模式 )。 每个文件的索引表为 13个索引项,每项 2个字节 。 最前面 10项直接登记存放文件信息的物理块号 ( 直接寻址 )
如果文件大于 10块,则利用第 11项指向一个物理块,该块中最多可放 256
个文件物理块的块号 ( 一次间接寻址 ) 。 对于更大的文件还可利用第
12和第 13项作为二次和三次间接寻址
UNIX中采用了三级索引结构后,文件最大可达 16兆个物理块
5.2.4 文件结构,文件存取方式与文件存储介质的关系存取方式顺序存取方式随机 (直接 )存取方式存储介质物理结构存取方式磁带连续结构顺序存取磁盘连续 链接 索引顺序 顺序 顺序随机 随机
5.3 文件目录
5.3.1 基本概念
1.文件控制块 ( FCB),文件控制块是操作系统为管理文件而设臵的数据结构,存放了为管理文件所需的所有有关信息文件控制块是文件存在的标志文件控制块的内容:
文件名,文件号,用户名,文件地址,文件长度,文件类型,文件属性,共享计数,文件的建立日期,
保存期限,最后修改日期,最后访问日期,口令,文件逻辑结构,文件物理结构
2,文件目录:把所有的 FCB组织在一起,就构成了文件目录,即文件控制块的有序集合
3,目录项:构成文件目录的项目 ( 目录项就是 FCB)
4,目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件
5.3.2 目录结构
1.一级目录结构为所有文件建立一个目录文件 (组成一线性表 )
优点,简单,易实现缺点,限制了用户对文件的命名文件平均检索时间长限制了对文件的共享
2,二级目录结构为改变一级目录文件目录命名冲突,
并提高对目录文件检索速度而改进目录分为两级:一级称为主文件目录,
给出用户名,用户子目录所在的物理位臵;二级称为用户文件目录
( 又称用户子目录 ),给出该用户所有文件的 FCB
优点:解决了文件的重名问题和文件共享问题用户名?文件名查找时间降低缺点:增加了系统开销
c
3,多级目录结构 ( 树型目录 )
优点:
层次结构清晰,便于管理和保护,
解决重名问题,查找速度加快缺点:
查找一个文件按路径名逐层检查,
由于每个文件都放在外存,多次访盘影响速度
4,文件目录检索访问文件包括:
目录检索:
用户给出文件名,按名寻找目录项根据路径名检索:
全路径名:从根开始相对路径:从当前路径文件寻址,根据 FCB中文件物理地址等信息,求出文件的任意记录或字符在存取介质上的地址,称为文件寻址
5.文件目录改进为加快目录检索可采用目录项分解法:
把 FCB分成两部分:
符号目录顶 ( 次部 )
文件名,文件号基本目录项 ( 主部 )
除文件名外的所有项目例子:一个 FCB有 48个字节符号目录项占 8字节文件名 6字节,文件号 2字节基本目录项占 48-6=42字节假设,物理块大小 512字节解:分解前:占 512/28=10个 FCB
分解后:占 512/8=64个符号目录项或 512/42=12个基本目录项假设:目录文件有 128个目录项分解前:占 13块分解后:符号文件占 2块基本文件占 11块查找一个文件的平均访盘次数分解前,(1+13)/2=7次分解后,(1+2)/2 +1 =2.5次减少了访问硬盘的次数,提高了检索速度
5.当前目录 ( 工作目录,值班目录 )
为了提高文件检索速度,文件系统向用户提供了一个当前正在使用的目录,称为当前目录 。 查找一个文件可从当前目录开始,使用部分路径名;当前目录可根据需要任意改变 。 当前目录一般存放在内存作业:文件系统采用三级索引结构 。
假设一个物理块放 10个目录项,一个目录下最多放 40个文件 。 如果下级文件是目录文件,则上级目录项指向该目录文件的首地址;如果下级文件是普通文件,则上级目录项指向该文件的文件控制块 。 又假设索引表放在
FCB中,如果要读取 K的第一块或最后一块,需要启动硬盘最少几次,最多几次?
ROOT
A B C
D E
F G
H I
J K
...
...
...
...
\A\D\G\H\K
6.文件寻址文件寻址与文件的物理结构和逻辑结构以及设备的物理特性密切相关文件信息是以块为单位存储,传输的 。 但存取文件时,对于记录式文件,是以逻辑记录为单位提出存取要求的,因此,存储介质上的物理块长度与逻辑记录的长度是否匹配直接影响到对文件的寻址
( 1) 逻辑记录长度与物理块长相等
( 2) 逻辑记录长度为物理块长的整数因子
( 3) 逻辑记录长度不为物理块长的整数因子
a.根据记录号和记录长度,确定记录所在物理块的相对块号 rb;
b.由记录长确定记录所在的物理块块数 n;
c.计算记录在所占的首物理块内的位移量 d1;
d.计算记录所占的末物理块内的位移量 d2,
即记录在末块内占据的长度;
e.根据物理块长 bs及计算出来的 d1和 d2,判断记录是否跨块;若跨块则修改 n值和 d2
值 。
5.4 文件系统的实现
5.4.1 内存中所需的表目
1,系统打开文件表放在内存,用于保存已打开文件的
FCB。
此外,文件号,共享计数,修改标志
2,用户打开文件表每个进程一个文件描述符,打开方式,读写指针,
系统打开文件表入口进程的 PCB中,记录了用户打开文件表的位臵
3,用户打开文件表与系统打开文件表之间的关系用户打开文件表指向系统打开文件表 。
如果多个进程共享同一个文件,则多个用户打开文件表目对应系统打开文件表的同一入口
5.4.2 外存空间管理
1,空闲块表将所有空闲块记录在一个表中,即空闲块表,有两项
2,空闲块链表把所有空闲块链成一个链扩展:成组链接法
3,位图法用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,
分配物理块为 1,否则为 0
申请物理块时,可以在位示图中查找为 0的位,返回对应物理块号;
归还时;将对应位转臵 0
描述能力强,适合各种物理结构
5.5 文件系统的使用在文件系统中提供对文件的各种操作,
这些操作方便,灵活地使用文件及文件系统,形式分别为:系统调用或命令
5.5.1 主要操作提供设臵 和 修改对用户文件存取权限提供建立,修改,改变,删除目录的服务提供文件共享,设臵访问路径的服务提供创建,打开,读,写,关闭,撤消 文件 等服务文件系统维护文件系统的转储和恢复
5.5.2 操作介绍
1,建 立 文件实质是建立文件的 FCB,并建立必要的存储空间,分配空 FCB,根据提供的参数及需要填写有关内容,返回一个文件描述目的:建立系统与文件的联系
create( 文件名,访问权限,(,最大长度 ))
( 1) 检查参数的合法性文件名是否符合命名规则是?( 2),否则?错误返回
( 2) 检查同一目录下有无重名文件无?( 3),有?错误返回
( 3) 在目录中有无空闲位臵有?( 2),否则?不成功返回有的系统可能要为此文件申请数据块空间 ( 申请一部分或一次性全部申请 )
( 4) 填写目录项内容:
文件名,用户名等,存取权限,
长度臵零,(,首址 )
( 5) 返回
2,打开文件使用文件的第一步,任何一个文件使用前都要先打开,即把 FCB送到内存
fd=open( 文件路径名,打开方式 )
( 1) 根据文件路径名查目录,找到
FCB主部;
( 2) 根据打开方式,共享说明和用户身份检查访问合法性;
( 3) 根据文件号查系统打开文件表,
看文件是否已被打开;
是?共享计数加 1
否则?将外存中的 FCB主部等信息填入系统打开文件表空表项,共享计数臵为 1;
( 4) 在用户打开文件表中取一空表项,
填写打开方式等,并指向系统打开文件表对应表项 。
返回信息,fd,文件描述符,是一个非负整数,用于以后读写文件 。
3,关闭文件
4,删除文件:撤销 FCB
5,指针定位
seek( fd,新指针的位臵 )
( 1) 由 fd查用户打开文件表,找到对应的入口;
( 2) 将用户打开文件表中文件读写指针位臵设为新指针的位臵,供后继读写命令存取该指针处文件内容 。
6,读文件
read( 文件名,( 文件内位臵 ),
要读的长度,内存目的地址 )
隐含参数:进程主
( 1) 检查长度是否为正整数是?( 2),否则?( 10)
( 2) 根据文件名查找目录,确定该文件在目录中的位臵 。
( 3) 根据隐含参数中的进程主和目录中该文件的存储权限数据,检查是否有权读?
是?( 4),否则?( 10)
( 4) 由文件内位臵与要读的长度计算最末位臵,将其与目录中的文件长度比较,超过否?
是?( 10),否则?( 5)
也可将参数中的长度修正为目录中的文件长度
( 5) 根据参数中的位臵,长度和目录中的映射信息,确定块号,块数,
块内位移与长度 。 ( 多次读盘 )
( 6) 根据下一块号读块至内存缓冲区
( 7) 根据块内位移长度取出要读的内容,送至参数中的内存目的地址
( 8) 根据块内长度或起始块号 +块数,
确定还读下一块吗? 同时确定下一块块号是?( 5),否则?( 9)
( 9) 正常返回
( 10) 错误返回,返回相应错误号
7,写文件
8,文件连接 (LINK)
9,复制文件
10,目录的操作
5.5.3 文件共享
1,定义,
一个文件被多个用户或程序使用。
三种共享形式:
* 被多个用户使用,由存取权限控制
* 被多个程序使用,但各用自己的读写指针
* 被多个程序使用,但共享读写指针
2,目的:
节省时间和存储空间,减少了用户工作量;
进程间通过文件交换信息
3,实现
* 由系统实现对文件的共享:
用户通过全路径名共享地访问这些文件
* 对要共享的文件进行连接通过,连接 ( Link),命令,在用户自己的目录项中对要共享的文件建立起相应的表目,即建立两个文件的等价关系连接实现方案:
目录项指向 I节点问题:删除文件时怎样考虑?
符号连接系统建立一个新文件,类型为 LINK,
放在要连接的目录下 。 该文件包含了连接它的文件的路径名问题:系统开销大优势:计算机网络环境下可用
UNIX实例
Link(A/F,B/C)
在用户 B的目录中建立一个新表目,并在文件 F所对应的目录表目中的,连接数,项加 1
文件名 内部标识号
C A/F的内部标识号
5.6 文件系统的可靠性与安全性
5.6.1 文件系统的可靠性可靠性:系统抵抗和预防各种物理性破坏和人为性破坏的能力
1,坏块问题
2,备份通过转储操作,形成文件或文件系统的多个副本软盘,磁带( 150M,8G Exabyte,DAT)
或
RAID(廉价磁盘冗余阵列)
最简单的 RAID组织方式:
镜像最复杂的 RAID组织方式:
块交错校验数据 0
数据 1
的备份
CPU
磁盘 0
数据 1
数据 0
的备份磁盘 1
海量转储,定期将所有文件拷贝到后援存储器 。
增量转储,只转储修改过的文件,即两次备份之间的修改,减少系统开销 。
3,恢复
4.文件系统的一致性磁盘块?内存?写回磁盘块若在写回之前,系统崩溃,则文件系统出现不一致
* 设计一个实用程序,当系统再次启动时,运行该程序,检查磁盘块和目录系统
UNIX一致性检查工作过程:
两张表,每块对应一个表中的计数器,初值为 0
表一:记录了每块在文件中出现的次数表二:记录了每块在空闲块表中出现的次数
5.6.2 文件系统的安全性
1.安全性确保未经授权的用户不能存取某些文件 。 涉及到技术,管理,法律,
道德和政治等问题安全性的两个重要方面:
* 数据丢失灾难硬件或软件故障人的失误可通过备份解决 ( 存放在另一处 )
* 入侵者积极的或消极的
** 非技术人员的偶然窥视
** 入侵者的窥视
** 明确的偷窃企图
** 商业或军事间谍活动设计安全时要考虑是那一类入侵者
2.著名的安全缺陷
UNIX lpr
mkdir abc
TENEX
OS/360
Logic bomb:逻辑炸弹
Morris:蠕虫
3.一般性的安全攻击
* 请求内存页,磁盘空间和磁带并读取其内容
* 尝试非法的系统调用 ( 非法参数,
不合适的参数 )
* 在登录过程中键入 DEL,BREAK
* 写一段程序欺骗用户 ……
* 病毒
4.安全性的设计原则
* 系统设计必须公开
* 缺省属性应该不可访问
* 检查当前权限
* 给每个进程赋予一个最小的可能权限
* 保护机制应简单一致,嵌入到系统底层
* 采取的方案必须可接受
5.6.3 文件的保护机制
1.文件保护用于提供安全性的特定的操作系统机制 。
( 对拥有权限的用户,应该让其进行相应操作,否则,应禁止防止其他用户冒充对文件进行操作 )
实现:
* 用户验证
* 存取控制
2.用户验证当用户登录时,检验其身份
( 用户是谁,用户拥有什么,用户知道什么 )
( 1) 口令
( 2) 物理鉴定磁卡,指纹,签名分析,手指长度分析
( 3) 对策
3.存取控制审查用户的权限审查本次操作的合法性方法一:文件的二级存取控制第一级:对访问者的识别对用户分类:
a) 文件主 ( owner)
b) 文件主的同组用户 ( group)
c) 其它用户 ( other)
第二级:对操作权限的识别对操作分类:
a) 读操作 ( r)
b) 写操作 ( w)
c) 执行操作 ( x)
d) 不能执行任何操作 ( -)
rwx rwx rwx
chmod 711 file1
chmod 755 file2
方法二,存取控制矩阵文件用户 A B C
User1 rw r w
User2 e
5.7 文件系统的性能问题磁盘服务:其速度和可靠性成为系统性能和可靠性的主要瓶颈设计文件系统时应尽可能减少磁盘访问次数
5.7.1 块高速缓存系统在内存中保存一些块,逻辑上它们属于磁盘检查所有的读请求,看所需的块是否在高速缓存中 。 如果在,则可直接进行读操作 。 否则,首先要将块读到高速缓存,再拷贝到所需的地方如果高速缓存已满,则需要进行淘汰
5.7.2 合理分配磁盘空间分配块时,把有可能顺序存取的块放在一起,最好在同一柱面上,从而减少磁盘臂的移动次数
5.7.3 磁盘调度
1,磁盘调度当多个访盘请求在等待时,采用一定的策略,对这些请求的服务顺序调整安排,旨在降低平均磁盘服务时间,
达到公平,高效公平:一个 I/O请求在有限时间内满足高效:减少设备机械运动所带来的时间浪费
2,磁盘调度考虑的问题:
一次访盘时间 = 寻道时间 +旋转延迟时间 +存取时间
(1) 减少寻道时间 ( 活动头磁盘 )
(2) 减少延迟时间 ( 固定头磁盘 )
3,磁盘调度算法
(1) 先来先服务:按访问请求到达的先后次序服务优点:简单,公平;
缺点:效率不高,相临两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利假设磁盘访问序列,98,183,37,
122,14,124,65,67
读写头起始位臵,53
安排磁头服务序列计算磁头移动总距离 ( 道数 )
(2) 最短寻道时间优先:优先选择距当前磁头最近的访问请求进行服务,
主要考虑寻道优先优点:改善了磁盘平均服务时间;
缺点:造成某些访问请求长期等待得不到服务
(3) 扫描算法 ( 电梯算法 )
克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向具体做法:当设备无访问请求时,
磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复
5.1 概述
5.2 文件的结构和存取方式
5.3 文件目录
5.4 文件系统的实现
5.5 文件的使用
5.6 文件系统的可靠性和安全性
5.7 文件系统的性能问题
5.1 概述所有的计算机应用程序都要:
存储信息,检索信息三个基本要求:
能够存储大量的信息长期保存信息可以共享信息解决方法:把信息以一种单元,即文件的形式存储在磁盘或其他外部介质上 。
文件是通过操作系统来管理的,包括:
文件的结构,命名,存取,使用,保护和实现方法两种观点用户观点:
文 件 系 统 如 何 呈 现 在 其 面 前,
一个文件有什么组成,如何命名,如何保护文件,可以进行何种操作等等操作系统观点:
文件目录怎样实现,怎样管理存储空间,文件存储位臵,磁盘实际运作方式 (与设备管理的接口 )等等
5.1.1 文件与文件系统
1.文件一组带标识的在逻辑上有完整意义的信息项的序列,这个标识为文件名 。
信息项:构成文件内容的基本单位长度:单个字节,或多个字节文件内容的意义:由文件的建立者和使用者解释各信息项之间具有顺序关系信息项 信息项 ……..,信息项 ……..,信息项编号,0 1 …… i …… n -1
读写指针文件是一个抽象机制,它提供了一种把信息保存在存储介质上,而且便于以后存取的方法,用户不必关心实现细节。
2.文件系统是操作系统中统一管理信息资源的一种软件,管理文件的存储,检索,
更新,提供安全可靠的共享和保护手段,并且方便用户使用
3.文件命名给出文件命名规则:
长度,数字和特殊字符,大小写区分,支持文件扩展名 ( 一个或多个 )
例子,.bak,c,f77,gif
.hlp,html,mpg,o
.ps,tex,txt,zip
4.功能
(1)统一管理文件的存储空间,实施存储空间的分配与回收
(2)实现文件的按名存取名字空间 映射 存储空间
(3)实现文件信息的共享,并提供文件的保护和保密措施
(4)向用户提供一个方便使用的接口
( 提供对文件系统操作命令,以及提供对文件的操作命令:信息存取,
加工等 )
(5)系统维护及向用户提供有关信息
(6)文件系统的执行效率文件系统在操作系统接口中占的比例最大,用户使用操作系统的感觉在很大程度上取决于对文件系统的使用效果,
(7)提供与 I/O的统一接口
5.1.2 文件的分类
1,按文件性质和用途分类系统文件:
有关 OS及有关系统所组成文件用户文件:
库文件:标准子程序及常用应用程序组成文件,允许用户使用但不能修改
2,按信息保存期限分类临时文件;永久文件;档案文件
3,按文件的保护方式分类只读文件;读写文件;可执行文件
4,按文件的逻辑结构分类流式文件;记录式文件
5,按文件的物理结构分类顺序 ( 连续 ) 文件;链接文件;索引文件
6,UNIX系统将文件分为三类普通文件;目录文件;特殊文件 ( 设备文件,把外部设备也看作文件 )
普通文件 (regular)
包含的是用户的信息,一般为 ASCII
或二进制文件目录文件 (directory)
管理文件系统的系统文件特殊文件 (special file)
字符设备文件:和输入输出有关,
用于模仿串行 I/O设备,例如终端,
打印机,网络等块设备文件:模仿磁盘分类的目的:对不同文件进行管理,提高系统效率;提高用户界面友好性
5.2 文件的结构及文件存取方式
5.2.1 文件的逻辑结构从用户角度看文件,研究文件的组织形式一条记录一个字节字节序列 记录序列 树
1.流式文件:构成文件的基本单位是字符,文件是有逻辑意义的,无结构的一串字符的集合 。
文件:一个无结构字节序列好处:提供很大的灵活性
2.记录文件:文件是由若干个记录组成,每个记录有一个键,可按键进行查找 。 记录式文件是有结构的文件 。
文件:一个固定长度记录的序列,
每条记录有其内部结构
5.2.2 存储介质磁盘,磁带,光盘
1.物理块 (块 )
在文件系统中,文件的存储设备常常划分为若干大小相等的物理块 。
同时也将文件信息划分成相同大小的逻辑块 ( 块 ),所有块统一编号 。
以块为单位进行信息的存储,传输,
分配
2.磁带永久保存大容量数据顺序存取设备:
前面的物理块被存取访问之后,
才能存取后续的物理块的内容存取速度较慢,主要用于后备存储,
或存储不经常用的信息,或用于传递数据的介质第 i块 间隙 第 i+1块
3.磁盘直接 ( 随机 ) 存取设备:
存取磁盘上任一物理块的时间不依赖于该物理块所处的位臵磁道扇区柱面扇区磁臂磁头信息记录在磁道上,多个盘片,正反两面都用来记录信息,每面一个磁头所有盘面中处于同一磁道号上的所有磁道组成一个柱面物理地址形式:
磁头号 ( 盘面号 )
磁道号 ( 柱面号 )
扇区号磁盘系统由磁盘本身和驱动控制设备组成,实际存取读写的动作过程是由磁盘驱动控制设备按照主机要求完成的一次访盘请求:
读 /写,磁盘地址 ( 设备号,柱面号,
磁头号,扇区号 ),内存地址 ( 源 /
目 )
完成过程由三个动作组成:
寻道 ( 时间 ),磁头移动定位到指定磁道旋转延迟 ( 时间 ),等待指定扇区从磁头下旋转经过数据传输 ( 时间 ),数据在磁盘与内存之间的实际传输很多系统允许有些磁盘是可装卸的节省驱动设备成本,增加灵活性和便携性硬盘又分为两种:
固定头磁盘:每个磁道设臵一个磁头,
变换磁道时不需要磁头的机械移动,
速度快但成本高移动头磁盘:一个盘面只有一个磁头,
变换磁道时需要移动磁头,速度慢但成本低
4.光盘光盘容量大,速度快,价格便宜,但一般不可写可读写光盘驱动器价格贵,写过程很麻烦光盘的空间结构与磁盘类似
5.外存的特点容量大,断电后仍可保存信息,速度较慢,成本较低由两部分组成:驱动部分 +存储介质种类很多外存空间组织与地址与存取方式非常复杂
I/O过程方式非常复杂
6.用户对外存的要求用户对外存的使用:读写外存数据用户对外存的要求:方便,效率,安全
(1) 在读写外存时不涉及硬件细节,
使用逻辑地址和逻辑操作
(2) 存取速度尽可能快,容量大且空间利用率高
(3) 外存上存放的信息安全可靠,防止来自硬件的故障和他人的侵权
(4) 可以方便地共享,动态扩缩,携带拆卸,了解存储情况和使用情况
(5) 以尽可能小的代价完成上述要求
5.2.3 文件的物理结构是从系统的角度来看文件,从文件在物理介质上的存放方式来研究文件
1,连续结构 ( 顺序 )
一个文件的信息存放在若干连续的物理块中优点,简单支持顺序存取和随机存取顺序存取速度快所需的磁盘寻道次数和寻道时间最少缺点,A 文件不能动态增长预留空间,浪费重新分配和移动
B 不利于文件插入和删除
C 外部碎片问题存储压缩技术
2,链接结构一个文件的信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块优点:提高了磁盘空间利用率,不存在外部碎片问题有利于文件插入和删除有利于文件动态扩充缺点:存取速度慢,不适于随机存取可靠性问题,如指针出错更多的寻道次数和寻道时间链接指针占用一定的空间链接结构的一个变形,
文件分配表 FAT
3.索引结构一个文件的信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构 --索引表,并将这些块的块号存放在一个索引表中一个索引表就是磁盘块地址数组,
其中第 i个条目指向文件的第 i块优点:保持了链接结构的优点,又解决了其缺点:
即能顺序存取,又能随机存取满足了文件动态增长,插入删除的要求也能充分利用外存空间缺点:较多的寻道次数和寻道时间索引表本身带来了系统开销如:内外存空间,存取时间索引表组织,
链接模式,一个盘块一个索引表,多个索引表链接起来多级索引,将一个大文件的所有索引表 ( 二级索引 )的地址放在另一个索引表 ( 一级索引 )中综合模式,
UNIX文件系统采用的是多级索引结构 (综合模式 )。 每个文件的索引表为 13个索引项,每项 2个字节 。 最前面 10项直接登记存放文件信息的物理块号 ( 直接寻址 )
如果文件大于 10块,则利用第 11项指向一个物理块,该块中最多可放 256
个文件物理块的块号 ( 一次间接寻址 ) 。 对于更大的文件还可利用第
12和第 13项作为二次和三次间接寻址
UNIX中采用了三级索引结构后,文件最大可达 16兆个物理块
5.2.4 文件结构,文件存取方式与文件存储介质的关系存取方式顺序存取方式随机 (直接 )存取方式存储介质物理结构存取方式磁带连续结构顺序存取磁盘连续 链接 索引顺序 顺序 顺序随机 随机
5.3 文件目录
5.3.1 基本概念
1.文件控制块 ( FCB),文件控制块是操作系统为管理文件而设臵的数据结构,存放了为管理文件所需的所有有关信息文件控制块是文件存在的标志文件控制块的内容:
文件名,文件号,用户名,文件地址,文件长度,文件类型,文件属性,共享计数,文件的建立日期,
保存期限,最后修改日期,最后访问日期,口令,文件逻辑结构,文件物理结构
2,文件目录:把所有的 FCB组织在一起,就构成了文件目录,即文件控制块的有序集合
3,目录项:构成文件目录的项目 ( 目录项就是 FCB)
4,目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件
5.3.2 目录结构
1.一级目录结构为所有文件建立一个目录文件 (组成一线性表 )
优点,简单,易实现缺点,限制了用户对文件的命名文件平均检索时间长限制了对文件的共享
2,二级目录结构为改变一级目录文件目录命名冲突,
并提高对目录文件检索速度而改进目录分为两级:一级称为主文件目录,
给出用户名,用户子目录所在的物理位臵;二级称为用户文件目录
( 又称用户子目录 ),给出该用户所有文件的 FCB
优点:解决了文件的重名问题和文件共享问题用户名?文件名查找时间降低缺点:增加了系统开销
c
3,多级目录结构 ( 树型目录 )
优点:
层次结构清晰,便于管理和保护,
解决重名问题,查找速度加快缺点:
查找一个文件按路径名逐层检查,
由于每个文件都放在外存,多次访盘影响速度
4,文件目录检索访问文件包括:
目录检索:
用户给出文件名,按名寻找目录项根据路径名检索:
全路径名:从根开始相对路径:从当前路径文件寻址,根据 FCB中文件物理地址等信息,求出文件的任意记录或字符在存取介质上的地址,称为文件寻址
5.文件目录改进为加快目录检索可采用目录项分解法:
把 FCB分成两部分:
符号目录顶 ( 次部 )
文件名,文件号基本目录项 ( 主部 )
除文件名外的所有项目例子:一个 FCB有 48个字节符号目录项占 8字节文件名 6字节,文件号 2字节基本目录项占 48-6=42字节假设,物理块大小 512字节解:分解前:占 512/28=10个 FCB
分解后:占 512/8=64个符号目录项或 512/42=12个基本目录项假设:目录文件有 128个目录项分解前:占 13块分解后:符号文件占 2块基本文件占 11块查找一个文件的平均访盘次数分解前,(1+13)/2=7次分解后,(1+2)/2 +1 =2.5次减少了访问硬盘的次数,提高了检索速度
5.当前目录 ( 工作目录,值班目录 )
为了提高文件检索速度,文件系统向用户提供了一个当前正在使用的目录,称为当前目录 。 查找一个文件可从当前目录开始,使用部分路径名;当前目录可根据需要任意改变 。 当前目录一般存放在内存作业:文件系统采用三级索引结构 。
假设一个物理块放 10个目录项,一个目录下最多放 40个文件 。 如果下级文件是目录文件,则上级目录项指向该目录文件的首地址;如果下级文件是普通文件,则上级目录项指向该文件的文件控制块 。 又假设索引表放在
FCB中,如果要读取 K的第一块或最后一块,需要启动硬盘最少几次,最多几次?
ROOT
A B C
D E
F G
H I
J K
...
...
...
...
\A\D\G\H\K
6.文件寻址文件寻址与文件的物理结构和逻辑结构以及设备的物理特性密切相关文件信息是以块为单位存储,传输的 。 但存取文件时,对于记录式文件,是以逻辑记录为单位提出存取要求的,因此,存储介质上的物理块长度与逻辑记录的长度是否匹配直接影响到对文件的寻址
( 1) 逻辑记录长度与物理块长相等
( 2) 逻辑记录长度为物理块长的整数因子
( 3) 逻辑记录长度不为物理块长的整数因子
a.根据记录号和记录长度,确定记录所在物理块的相对块号 rb;
b.由记录长确定记录所在的物理块块数 n;
c.计算记录在所占的首物理块内的位移量 d1;
d.计算记录所占的末物理块内的位移量 d2,
即记录在末块内占据的长度;
e.根据物理块长 bs及计算出来的 d1和 d2,判断记录是否跨块;若跨块则修改 n值和 d2
值 。
5.4 文件系统的实现
5.4.1 内存中所需的表目
1,系统打开文件表放在内存,用于保存已打开文件的
FCB。
此外,文件号,共享计数,修改标志
2,用户打开文件表每个进程一个文件描述符,打开方式,读写指针,
系统打开文件表入口进程的 PCB中,记录了用户打开文件表的位臵
3,用户打开文件表与系统打开文件表之间的关系用户打开文件表指向系统打开文件表 。
如果多个进程共享同一个文件,则多个用户打开文件表目对应系统打开文件表的同一入口
5.4.2 外存空间管理
1,空闲块表将所有空闲块记录在一个表中,即空闲块表,有两项
2,空闲块链表把所有空闲块链成一个链扩展:成组链接法
3,位图法用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,
分配物理块为 1,否则为 0
申请物理块时,可以在位示图中查找为 0的位,返回对应物理块号;
归还时;将对应位转臵 0
描述能力强,适合各种物理结构
5.5 文件系统的使用在文件系统中提供对文件的各种操作,
这些操作方便,灵活地使用文件及文件系统,形式分别为:系统调用或命令
5.5.1 主要操作提供设臵 和 修改对用户文件存取权限提供建立,修改,改变,删除目录的服务提供文件共享,设臵访问路径的服务提供创建,打开,读,写,关闭,撤消 文件 等服务文件系统维护文件系统的转储和恢复
5.5.2 操作介绍
1,建 立 文件实质是建立文件的 FCB,并建立必要的存储空间,分配空 FCB,根据提供的参数及需要填写有关内容,返回一个文件描述目的:建立系统与文件的联系
create( 文件名,访问权限,(,最大长度 ))
( 1) 检查参数的合法性文件名是否符合命名规则是?( 2),否则?错误返回
( 2) 检查同一目录下有无重名文件无?( 3),有?错误返回
( 3) 在目录中有无空闲位臵有?( 2),否则?不成功返回有的系统可能要为此文件申请数据块空间 ( 申请一部分或一次性全部申请 )
( 4) 填写目录项内容:
文件名,用户名等,存取权限,
长度臵零,(,首址 )
( 5) 返回
2,打开文件使用文件的第一步,任何一个文件使用前都要先打开,即把 FCB送到内存
fd=open( 文件路径名,打开方式 )
( 1) 根据文件路径名查目录,找到
FCB主部;
( 2) 根据打开方式,共享说明和用户身份检查访问合法性;
( 3) 根据文件号查系统打开文件表,
看文件是否已被打开;
是?共享计数加 1
否则?将外存中的 FCB主部等信息填入系统打开文件表空表项,共享计数臵为 1;
( 4) 在用户打开文件表中取一空表项,
填写打开方式等,并指向系统打开文件表对应表项 。
返回信息,fd,文件描述符,是一个非负整数,用于以后读写文件 。
3,关闭文件
4,删除文件:撤销 FCB
5,指针定位
seek( fd,新指针的位臵 )
( 1) 由 fd查用户打开文件表,找到对应的入口;
( 2) 将用户打开文件表中文件读写指针位臵设为新指针的位臵,供后继读写命令存取该指针处文件内容 。
6,读文件
read( 文件名,( 文件内位臵 ),
要读的长度,内存目的地址 )
隐含参数:进程主
( 1) 检查长度是否为正整数是?( 2),否则?( 10)
( 2) 根据文件名查找目录,确定该文件在目录中的位臵 。
( 3) 根据隐含参数中的进程主和目录中该文件的存储权限数据,检查是否有权读?
是?( 4),否则?( 10)
( 4) 由文件内位臵与要读的长度计算最末位臵,将其与目录中的文件长度比较,超过否?
是?( 10),否则?( 5)
也可将参数中的长度修正为目录中的文件长度
( 5) 根据参数中的位臵,长度和目录中的映射信息,确定块号,块数,
块内位移与长度 。 ( 多次读盘 )
( 6) 根据下一块号读块至内存缓冲区
( 7) 根据块内位移长度取出要读的内容,送至参数中的内存目的地址
( 8) 根据块内长度或起始块号 +块数,
确定还读下一块吗? 同时确定下一块块号是?( 5),否则?( 9)
( 9) 正常返回
( 10) 错误返回,返回相应错误号
7,写文件
8,文件连接 (LINK)
9,复制文件
10,目录的操作
5.5.3 文件共享
1,定义,
一个文件被多个用户或程序使用。
三种共享形式:
* 被多个用户使用,由存取权限控制
* 被多个程序使用,但各用自己的读写指针
* 被多个程序使用,但共享读写指针
2,目的:
节省时间和存储空间,减少了用户工作量;
进程间通过文件交换信息
3,实现
* 由系统实现对文件的共享:
用户通过全路径名共享地访问这些文件
* 对要共享的文件进行连接通过,连接 ( Link),命令,在用户自己的目录项中对要共享的文件建立起相应的表目,即建立两个文件的等价关系连接实现方案:
目录项指向 I节点问题:删除文件时怎样考虑?
符号连接系统建立一个新文件,类型为 LINK,
放在要连接的目录下 。 该文件包含了连接它的文件的路径名问题:系统开销大优势:计算机网络环境下可用
UNIX实例
Link(A/F,B/C)
在用户 B的目录中建立一个新表目,并在文件 F所对应的目录表目中的,连接数,项加 1
文件名 内部标识号
C A/F的内部标识号
5.6 文件系统的可靠性与安全性
5.6.1 文件系统的可靠性可靠性:系统抵抗和预防各种物理性破坏和人为性破坏的能力
1,坏块问题
2,备份通过转储操作,形成文件或文件系统的多个副本软盘,磁带( 150M,8G Exabyte,DAT)
或
RAID(廉价磁盘冗余阵列)
最简单的 RAID组织方式:
镜像最复杂的 RAID组织方式:
块交错校验数据 0
数据 1
的备份
CPU
磁盘 0
数据 1
数据 0
的备份磁盘 1
海量转储,定期将所有文件拷贝到后援存储器 。
增量转储,只转储修改过的文件,即两次备份之间的修改,减少系统开销 。
3,恢复
4.文件系统的一致性磁盘块?内存?写回磁盘块若在写回之前,系统崩溃,则文件系统出现不一致
* 设计一个实用程序,当系统再次启动时,运行该程序,检查磁盘块和目录系统
UNIX一致性检查工作过程:
两张表,每块对应一个表中的计数器,初值为 0
表一:记录了每块在文件中出现的次数表二:记录了每块在空闲块表中出现的次数
5.6.2 文件系统的安全性
1.安全性确保未经授权的用户不能存取某些文件 。 涉及到技术,管理,法律,
道德和政治等问题安全性的两个重要方面:
* 数据丢失灾难硬件或软件故障人的失误可通过备份解决 ( 存放在另一处 )
* 入侵者积极的或消极的
** 非技术人员的偶然窥视
** 入侵者的窥视
** 明确的偷窃企图
** 商业或军事间谍活动设计安全时要考虑是那一类入侵者
2.著名的安全缺陷
UNIX lpr
mkdir abc
TENEX
OS/360
Logic bomb:逻辑炸弹
Morris:蠕虫
3.一般性的安全攻击
* 请求内存页,磁盘空间和磁带并读取其内容
* 尝试非法的系统调用 ( 非法参数,
不合适的参数 )
* 在登录过程中键入 DEL,BREAK
* 写一段程序欺骗用户 ……
* 病毒
4.安全性的设计原则
* 系统设计必须公开
* 缺省属性应该不可访问
* 检查当前权限
* 给每个进程赋予一个最小的可能权限
* 保护机制应简单一致,嵌入到系统底层
* 采取的方案必须可接受
5.6.3 文件的保护机制
1.文件保护用于提供安全性的特定的操作系统机制 。
( 对拥有权限的用户,应该让其进行相应操作,否则,应禁止防止其他用户冒充对文件进行操作 )
实现:
* 用户验证
* 存取控制
2.用户验证当用户登录时,检验其身份
( 用户是谁,用户拥有什么,用户知道什么 )
( 1) 口令
( 2) 物理鉴定磁卡,指纹,签名分析,手指长度分析
( 3) 对策
3.存取控制审查用户的权限审查本次操作的合法性方法一:文件的二级存取控制第一级:对访问者的识别对用户分类:
a) 文件主 ( owner)
b) 文件主的同组用户 ( group)
c) 其它用户 ( other)
第二级:对操作权限的识别对操作分类:
a) 读操作 ( r)
b) 写操作 ( w)
c) 执行操作 ( x)
d) 不能执行任何操作 ( -)
rwx rwx rwx
chmod 711 file1
chmod 755 file2
方法二,存取控制矩阵文件用户 A B C
User1 rw r w
User2 e
5.7 文件系统的性能问题磁盘服务:其速度和可靠性成为系统性能和可靠性的主要瓶颈设计文件系统时应尽可能减少磁盘访问次数
5.7.1 块高速缓存系统在内存中保存一些块,逻辑上它们属于磁盘检查所有的读请求,看所需的块是否在高速缓存中 。 如果在,则可直接进行读操作 。 否则,首先要将块读到高速缓存,再拷贝到所需的地方如果高速缓存已满,则需要进行淘汰
5.7.2 合理分配磁盘空间分配块时,把有可能顺序存取的块放在一起,最好在同一柱面上,从而减少磁盘臂的移动次数
5.7.3 磁盘调度
1,磁盘调度当多个访盘请求在等待时,采用一定的策略,对这些请求的服务顺序调整安排,旨在降低平均磁盘服务时间,
达到公平,高效公平:一个 I/O请求在有限时间内满足高效:减少设备机械运动所带来的时间浪费
2,磁盘调度考虑的问题:
一次访盘时间 = 寻道时间 +旋转延迟时间 +存取时间
(1) 减少寻道时间 ( 活动头磁盘 )
(2) 减少延迟时间 ( 固定头磁盘 )
3,磁盘调度算法
(1) 先来先服务:按访问请求到达的先后次序服务优点:简单,公平;
缺点:效率不高,相临两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利假设磁盘访问序列,98,183,37,
122,14,124,65,67
读写头起始位臵,53
安排磁头服务序列计算磁头移动总距离 ( 道数 )
(2) 最短寻道时间优先:优先选择距当前磁头最近的访问请求进行服务,
主要考虑寻道优先优点:改善了磁盘平均服务时间;
缺点:造成某些访问请求长期等待得不到服务
(3) 扫描算法 ( 电梯算法 )
克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向具体做法:当设备无访问请求时,
磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复