操作系统——4.文件管理
考纲
- I/O 系统的:基本概念、I/O 控制方式(程序 I/0、中断、DMA、通道)、相关数据结构、缓冲管理(单缓冲、双缓冲、循环缓冲、缓冲池)
- 磁盘管理与磁盘调度算法:SSTF 算法,SCAN 算法,CSCAN 算法,N-STEP-SCAN 算法,FSCAN算法
- 设备分配、设备处理、虚拟设备,Spooling 系统
一、文件系统基础
1、文件的概念
- 文件:以计算机硬盘为载体的存储在计算机上的信息集合。
- 文件系统:实现对文件的维护管理。
- 系统运行时,计算机以进程为基本单位进行资源的调度和分配;用户进行的输入、输出中以文件为基本单位。
- 文件的结构组成:数据项(基本数据项、组合数据项)、记录(相关数据项的集合,描述属性)、文件(相关信息的集合)
- 文件属性:名称、标识符、类型、位置、大小、保护、时间。
- 文件的基本操作:
- 创建文件:找到空间、创建条目
- 写文件:执行系统调用,指明文件名称和要写入文件内容。对于给定文件名,搜索目录找位置。为该文件维护一个写位置的指针。
- 读文件:系统调用指明文件名称和要读入文件块的内存位置,维护一个读位置的指针。
- 文件重定位(文件寻址):按某条件搜索目录,将当前文件设置为给定值,并且不会读、写文件。
- 删除文件:删除称为空项、回收存储空间。
- 阶段文件:允许属性不变并删除文件内容。
- 文件的打开和关闭:操作系统维护一个包含所有打开文件信息的表(打开文件表),打开每个文件时增加相应条目、使用文件打开计数器。关闭操作计数器递减,回收内存空间,若被修改过则写回外存并删除相应条目,释放文件控制块FCB。
- 打开文件关联信息:文件指针、文件打开计数、文件打开计数、文件磁盘位置、访问权限。
2、文件的逻辑结构
分类、含义和对比的特点
- 无结构文件/流式文件:顺序组织成记录并积累保存,以字节为单位。访问只能用穷举。
- 有结构文件/记录式文件:(特点、原理)
- 顺序文件:顺序/链表存储,访问时顺序搜索。串结构(记录顺序与关键字无关)、顺序结构(按关键字)。特点:对记录进行批量操作时效率最高、可以存储在磁盘上。对增删改查单条记录困难。
- 索引文件(计算长度):
①定长记录文件:第i条记录地址: A i = i ∗ L A_i=i*L Ai=i∗L
②可变长记录文件:假定每条记录用前一个字节指明长度: A i = ∑ i = 0 i − 1 L i + i A_i=\sum_{i=0}^{i-1}L_i+i Ai=∑i=0i−1Li+i
③变长记录文件只能顺序查找,可以建立索引表(定长记录的顺序文件)加快进度。 - 顺序索引文件:顺序文件分组建立索引表。组内可以无需,组间关键字必须有序。特点(索引和顺序索引):提高存取速度,但因配置索引表增加了存储空间。
- 直接文件或散列文件:键值映射,没有顺序的特性。特点:有很高的存取速度,但是会引起冲突(不同关键字的散列函数值相同)。
3、目录结构
(1)文件控制块和索引结点
- 文件控制块FCB:用来存放控制文件需要的各种信息的数据结构。
- 文件目录:PCB的有序集合。
- PCB包含信息:基本信息、存取控制信息、使用信息。
- 索引结点:文件描述信息的数据结构,i结点。
- 磁盘索引结点:存放在磁盘上的索引结点,UNIX中每个文件都有一个唯一的磁盘索引结点。包含(了解):文件主标识符、类型、存取权限、物理地址、长度、链接计数、存取时间。文件被打开时,复制到内存索引结点,增加索引结点编号、状态、访问计数、逻辑设备号、链接指针。
(2)目录结构
分类、组织方式
操作:搜索、创建文件、删除文件、显示目录、修改目录。
- 单级目录结构:整个文件系统中只建立一张目录表,每个文件占一个目录表。特点:查找速度慢、文件不允许重名、不便于文件共享。
- 两级目录结构:文件目录分为主文件目录MFD和用户文件目录UFD,分别存放存储位置和FCB信息。特点:解决了多用户之间的重名问题,实现访问限制,缺乏灵活性,不能对文件分类。
- 多级目录结构/树形目录结构:进程对各文件的访问相对于当前目录进行。特点:易于文件分类,层次结构清晰,有效进行文件的管理和保护;增加磁盘访问次数,影响查询速度,不利于文件共享。
- 无环图目录结构:增加一些指向同一结点的有向边,整个目录成为一个有向无环图,为每个共享结点设置共享计数器。特点:实现文件共享,使系统管理复杂。
4、文件共享
考多次
- 基于索引结点的共享方式(硬链接)(定义,与软链接对比,计算count):树形结构目录中,将共享文件或子目录链接到两个或多个用户的目录中。
- 利用符号链实现文件共享(软链接):新文件只包含被链接文件的路径名,只有文件拥有者才拥有指向其索引结点的指针。优点:网络共享只需提供该文件所在及其的网络地址及该及其中的文件路径。
- 软链接和硬链接都是文件系统中的静态共享方法,都会导致每个文件都有几个文件名。
- 动态链接:两个进程同时对同一个文件进行操作。
5、文件保护
考的很少,相对不重要。
- 文件保护通过口令保护、加密保护、访问控制实现。
- 访问类型:读、写、执行、添加、删除、列表清单、重命名、复制、编辑。
- 控制访问列表ACL:拥有者、组、其他。
- 口令:建立FCB时附上一个口令并告知共享用户。
- 密码:对文件加密。
二、文件系统实现
1、文件系统层次结构
2、目录实现
- 目录实现的基本方法:线性列表——线性查找,哈希表——散列查抄。
- 线性列表:使用存储文件名和数据块指针。实现简单但费时。
- 哈希表:根据文件名得到值,并返回一个指向线性列表中元素的指针。查找迅速,需要避免冲突。
- 目录查询通过在磁盘上反复搜索完成,为减少I/O操作将当前使用的文件目录复制到内存。
3、文件实现
(1)文件分配方式
各自原理和对比
- 磁盘空间分配方法:连续分配、链接分配、索引分配。
- 连续分配:每个文件在磁盘上占有一组连续的块,磁盘地址定义磁盘上的一个线性排序,支持顺序访问和直接访问。特点:作业访问磁盘时需要的寻道数和寻道时间最小;实现简单、存取速度快;文件长度不宜动态增加;会产生外部碎片。
- 链接分配:离散分配。特点:消除外部碎片,提高磁盘空间利用率;动态分配;增删改方便。
- 隐式链接:每个文件对应一个磁盘块的链表,磁盘块分布在任何地方,有指向下一个盘块的指针,指针对用户透明;目录包含第一块和最后一块的指针。特点:无法直接访问盘块,只能通过指针顺序访问文件;次奥好存储空间;不稳定,指针损坏则文件丢失。
- 显式链接:把用于链接文件各物理块的指针,从块内末尾提取出来,显示存放在内存的文件分配表FAT中。特点:检索速度快,访问磁盘次数减少。
- 索引分配:把每个文件的所有盘块号几种放一起构成索引块/表。索引块分配机制:
- 链接方案
- 多层索引
- 混合索引(考多次,如何计算混合索引对应的空间大小)
- 直接地址:索引节点中设置10个直接地址项iaddr(0)~iaddr(9),每项存放数据所在盘块号,假设每个盘块大小4KB,文件不大于40KB时,可直接从索引结点读出全部盘块号。
- 一次间接地址:索引结点中地址项iaddr(10)提供一次间接地址,即一次索引分配方式,在一次间址块/索引块中记入多个盘块号。在一次间址块中可存放1024个盘块号,因为允许文件长达4MB。
- 多次间接地址:当文件大于40KB+4MB时,iaddr(11)采用二次间址地址,最大可达4GB,三次间址时可达4TB。
(2)文件存储空间管理
- 文件存储空间的划分与初始化。文件卷中文件数据信息的空间(文件区)和存放文件控制信息FCB的空间(目录区)是分离的。逻辑卷在提供文件服务前,必须初始化,划分目录区和文件区,建立空闲空间管理表格及存放逻辑卷信息的超级块。
- 文件存储器空间管理:存储设备分成大小相同的物理块,以块为单位交换信息。实质上是对空闲块的组织和管理(分配、回收)。
- 空闲表法:连续分配方式,系统为外存上的所有空闲区建立空闲盘块表。空闲盘区的分配与内存的动态分配的算法类似,回收时考虑回收区是否与空闲表中插入点的前区和后区相邻接,对相邻接者予以合并。
- 空闲链表法:把所有空闲盘区拉成一条空闲链,分成空闲盘块链和空闲盘区链。空闲盘块链:分配和回收盘块过程简单,为一个文件分配盘块时可能重复多次操作。空闲盘区链(每个盘区可包含若干盘块):每个盘区上含指示下一个空闲盘区的指针、本盘区盘块数,分配方法通常采用首次适应算法。
- 位示图法(重点考察计算):
- 位示图:0空闲,1分配。位示图(x,y)计算地址转换→磁盘(柱、扇块)
- 盘块的分配
①顺序扫描位示图,找0的二进制位。
②找到的二进制转换成盘块号。位示图i行、j列,每行位数n,盘块号 b = n ( i − 1 ) + j b=n(i-1)+j b=n(i−1)+j
③修改位示图,令 m a p [ i , j ] = 1 map[i,j]=1 map[i,j]=1 - 盘块的回收:
①回收盘块号转为行 i = ( b − 1 ) D I V n + 1 i=(b-1)DIV n+1 i=(b−1)DIVn+1、列 j = ( b − 1 ) M O D n + 1 j=(b-1)MODn+1 j=(b−1)MODn+1。
②修改位示图,令 m a p [ i , j ] = 0 map[i,j]=0 map[i,j]=0
- 成组链接法:克服空闲表和空闲链表太大的缺点。把顺序的n个空闲扇区地址保存在第一个空闲扇区,其后一个扇区保存另一顺序空闲扇区的地址,系统只保存一个指向第一个空闲扇区的指针。超级块:表示文件存储器空闲空间的“位向量”表或第一个成组链块,以及卷中的目录区、文件区划分信息都需要存放在辅存储器中,一般放在卷头。
三、磁盘组织与管理
1、磁盘的结构
背景知识
- 磁盘:圆形盘片。
- 磁头:磁盘通过导体线圈磁头从磁盘存取数据,磁头固定,磁盘旋转。
- 磁道:磁盘盘面上的数据存储在一组同心圆中。
- 扇区/盘块:磁道划分为几百个扇区,固定存储大小512B,是磁盘可寻址的最小存储单位。
- 密度从最外道向里道增加,磁盘存储能力受限于最内道的最大记录密度。
- 磁盘地址: 柱 面 号 ⋅ 盘 面 号 ⋅ 扇 区 号 / 块 号 柱面号·盘面号·扇区号/块号 柱面号⋅盘面号⋅扇区号/块号
- 磁盘盘片:
- 磁盘类型:
2、磁盘调度算法
(1)计算读写操作时间
- 寻找时间 T s T_s Ts:活动头在读写信息前将磁头移动到指定磁道需要的时间。跨越n条磁道、启动磁臂时间s(≈2ms),与磁盘驱动器速度相关常数m(≈0.2ms)。 T s = m ∗ n + s T_s=m*n+s Ts=m∗n+s
- 延迟时间
T
r
T_r
Tr:磁头定位到某一磁道的扇区/块号所需时间。旋转速度r
T r = 1 2 r T_r=\frac{1}{2r} Tr=2r1
硬盘 r = 5400 r=5400 r=5400转/分,相当于一周11.1ms,则 T r = 5.55 m s T_r=5.55ms Tr=5.55ms。
软盘 r = 300 r=300 r=300~ 600 600 600转/分,则 T r = 50 100 m s T_r=50~100ms Tr=50 100ms。 - 传输时间
T
t
T_t
Tt:从磁盘读出或向磁盘写入数据所经历的时间。取决于每次读/写字节数b和磁盘旋转速度。磁盘每秒的转数r,一个磁道上的字节数N。
T t = b r N T_t=\frac{b}{rN} Tt=rNb - 延迟时间和传输时间都与磁盘旋转速度线性相关。
- 总平均存取时间
T
a
T_a
Ta:实际操作中存取时间与磁盘调度算法密切相关。
T a = T s + 1 2 r + b r N T_a=T_s+\frac{1}{2r}+\frac{b}{rN} Ta=Ts+2r1+rNb
(2)磁盘调度算法(减少寻找时间)
主要考后两种
- 先来先服务FCFS算法:
- 最短寻找时间优先SSTF算法:
- 扫描SCAN算法/电梯调度算法:在磁头当前移动方向上选择与房钱磁头所在磁道距离最近的请求作为下一次服务的对象。
LOOK调度:磁头移动只需到达最远端的一个请求即可返回,不需要到达磁盘端点,在朝一个给定方向移动前会查看是否有请求。(无特别说明可默认为LOOK) - 循环扫描C-SCAN算法:在扫描算法的基础上规定磁头单向移动。
C-LOOK调度: - 几种磁盘调度算法的优缺点:
(3)减少延迟时间
- 对盘面扇区进行交替编号,对磁盘片组中的不同盘面错位命名。
- 交替编号,则连续读写多条记录时能减少磁头的延迟时间
- 错位编号,则连续读写相邻两个盘面的逻辑记录时能减少延迟时间。
3、磁盘的管理
了解
- 磁盘初始化:低级格式化(物理分区)、磁盘分成柱面组成的分区、逻辑格式化(创建文件系统)
- 引导块:在ROM中保留很小的自举装入程序,启动块存放完整功能的初始化程序(自举程序),启动块位于磁盘的固定位,拥有启动分区的磁盘为启动磁盘或系统磁盘。
- 坏块:对于损坏扇区的处理,属于硬件故障。扇区备用:控制器可用备用块来逻辑地替代坏块。