操作系统-文件管理

1、 文件与文件系统
(1)文件的概念
文件指的是一组带标识的在逻辑上有完整意义的信息项(构成文件内容的基本单元)的序列,或者是相关联纪录的集合。文件存放在磁盘或磁带等存
储介质上。
文件是一个抽象机制,它提供了一种把信息保存在存储介质上,而且便于以后存取的方法,用户不必关心实现细节

(2)文件系统
• 是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用

1.1 文件系统的功能:
(1)统一管理文件的存储空间,实施存储空间的分配与回收;
(2)为用户提供可见的文件逻辑结构,实现文件的按名存取;名字空间 → → → 存储空间
(3)对文件及文件目录的管理,这是文件系统最基本的功能,包括文件(目录)的建立、删除、读写等;
(4)提供操作系统与用户的接口(提供对文件的操作命令:信息存取、加工等)。

1.2 文件的分类
(1)按文件性质和用途分类
• 系统文件:
有关OS及有关系统所组成文件,不能直接访问
• 用户文件:
用户委托系统保存的文件
• 库文件:
标准子程序及常用应用程序组成文件,允许用户使用但不能修改

2、文件的结构和存取方式
(1)流式文件(无结构文件):
• 构成文件的基本单位是字符,文件是有逻辑意义的、无结构的一串字符的集合。
• 管理简单,操作方便,但查找比较麻烦,对基本信息单位操作不多的文件比较适合用字符流的无结构方式,比如源程序文件。
(2)记录式文件(有结构文件):
• 文件是由若干个记录组成,每个记录有一个键,可按键进行查找,每条记录有其内部结构。
• 方便用户进行各种操作比如添加、删除、修改、查找等

2.1 文件的存取方法
常用存取方法:
①顺序存取。
顺序存取是按照文件的逻辑地址顺序存取。比如当前读取的记录为Ri,则下一条读取的记录被自动确定为Ri的下一个相邻的记录Ri+1。
②随机存取。
允许用户根据记录的编号来存取文件的任一记录。前两种方法用于一般OS,下面方法适用数据库系统。
③按键存取。

2.2 文件的物理结构
– 文件系统中,文件存储设备通常分块,每块1k或者512字节或其他大小,与此对应,文件信息也被划分为与物理块大小相等的逻辑块
(1)连续结构(顺序)
– 文件的信息存放在若干连续的物理块中。系统为每个文件都建立一个文件控制块FCB。对于顺序文件,只要从FCB中得到文件的第一个块的物理块
号和文件长度,便可确定位置。
Image text
– 优点: 简单
• 支持顺序存取和随机存取
• 顺序存取速度快
• 所需的磁盘寻道次数和寻道时间最少

– 缺点:
• 不利于文件动态增长重新分配和移动
• 不利于文件插入和删除(大量移动)
• 外部碎片问题

(2)链接结构
– 一个文件的信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块
Image text
– 优点:
• 提高了磁盘空间利用率,不存在外部碎片问题
• 有利于文件插入和删除
• 有利于文件动态扩充

– 缺点:
• 存取速度慢,不适于随机存取
• 可靠性问题,如指针出错
• 更多的寻道次数和寻道时间
• 链接指针占用一定的空间

(3)索引结构
• 一个文件的信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构——索引表,并将这些块的块号存放在一个索引表中。
• 一个索引表就是磁盘块地址数组,其中第i个条目指向文件的第i块
Image text

– 优点:
• 保持了链接结构的优点,又解决了其缺点:既能顺序存取,又能随机存取
• 满足了文件动态增长、插入删除的要求
• 能充分利用外存空间
– 缺点:
• 较多的寻道次数和寻道时间
• 索引表本身带来了系统开销
• 存取文件时至少访问存储器两次,一次是获得地址,一次是对物理块的访问。为了提高速度,将索引表放入内存,减少访问磁盘次数

文件的物理结构:
UNIX文件系统采用的是多级索引结构。每个文件的索引表为13个索引项,每项2个字节。最前面10项直接登记存放文件信息的物理块号(直接寻址)

如果文件大于10块,则利用第11项指向一个物理块,该块中最多可放256个文件物理块的块号(一次间接寻址)。对于更大的文件还可利用第12和第13项作为二次和三次间接寻址

– UNIX中采用了三级索引结构后,文件最大可达16兆个物理块
Image text

文件存储介质:
(1)物理块
在文件系统中,文件的存储设备常常划分为若干大小相等的物理块。同时也将文件信息划分成相同大小的逻辑块,所有块统一编号以块为单位进行信息的存储、传输、分配

(2)磁带
永久保存大容量数据
– 顺序存取设备:前面的物理块被存取访问之后,才能存取后续的物理块的内容
– 存取速度较慢,主要用于后备存储,或存储不经常用的信息

(3)磁盘
– 直接(随机)存取设备:
• 存取磁盘上任一物理块的时间不依赖于该物理块所处的位置

完成过程由三个动作组成:
• 寻道(时间):磁头移动定位到指定磁道
• 旋转延迟(时间):等待指定扇区从磁头下旋转经过
• 数据传输(时间):数据在磁盘与内存之间的实际传输

3、文件目录
3.1 基本概念
– 文件控制块(FCB):
• 文件控制块是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息。
• 文件控制块是文件存在的标志

– 文件目录:
• 把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合。
– 目录项:
• 构成文件目录的项目(目录项就是FCB)。
– 目录文件:
• 为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件

目录结构:
(1)一级目录结构
– 为所有文件建立一个目录文件(组成一线性表)
– 优点:
• 简单,易实现

– 缺点:
• 限制了用户对文件的命名
• 文件平均检索时间长

(2)二级目录结构
– 为解决一级目录文件目录命名冲突,并提高对目录文件检索速度而改进。
– 目录分为两级:
• 一级称为主文件目录(MFD),给出用户名,用户子目录所在的物理位置;
• 二级称为用户文件目录(UFD),给出该用户所有文件的FCB
– 使用二级目录可以解决文件重名和文件共享问题,并可以获得较高的搜索速度。

– 优点:解决了文件的重名问题和共享问题
用户名|文件名
查找时间降低
– 缺点:增加了系统开销
Image text

(3)多级目录结构(树型目录)
– 优点:
• 层次结构清晰,便于管理和保护;有利于文件分类;解决重名问题;提高文件检索速度;能进行存取权限的控制 。
– 缺点:
• 查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘影响速度。

(4)文件目录改进
– 为加快目录检索可采用目录项分解法:把FCB分成两部分:
– 符号目录顶
文件名,文件号
– 基本目录项
除文件名外的所有项目

3.2 文 件 存 储 空 间 管 理:
– 辅存空间分配常采用以下两种办法。
– 连续分配:
• 文件被存放在辅存空间连续存储区中,在建立文件时,用户必须给出文件大小;
• 然后,查找到能满足的连续存储区供使用;否则文件不能建立。
– 连续分配的优点是文件查找速度快,管理较为简单,但为了获得足够大的连续存储区。需定时进行‘碎片’收集。因而,不适宜于文件频繁进行动态扩充和缩小的情况,用户事先不知道文件长度也无法进行分配。

非连续分配:
• 一种非连续分配方法是以块(或扇区)为单位,按文件动态要求分配给它若干扇区,这些扇区不一定要连续。
• 另一种非连续分配方法是以簇为单位,簇是由若干个连续扇区组成的分配单位;实质上是连续分配和非连续分配的结合。各个簇可以用链指针、索
引表,位示图来管理。非连续分配的优点是辅存空间管理效率高,访问文件执行速度快,特别是以簇为单位的分配方法已被广泛使用。

3.3 文件系统的使用
– 在文件系统中提供对文件的各种操作,形式分别为:系统调用或命令。

  1. 主要操作
    – 提供设置和修改对用户文件存取权限
    – 提供建立、修改、改变、删除目录的服务
    – 提供文件共享,设置访问路径的服务
    – 提供创建、打开、读、写、关闭、撤消文件等服务
    – 文件系统维护

  2. 操作介绍
    (1)建立文件
    实质是建立文件的FCB,并建立必要的存储空间,分配空FCB,根据提供的参数及需要填写有关内容,返回一个文件描述。
    目的:建立系统与文件的联系
    (2)打开文件
    使用文件的第一步,任何一个文件使用前都要先打开,即把FCB送到内存

3.4 文件系统的可靠性
– 可靠性:
• 系统抵抗和预防各种物理性破坏和人为性破坏的能力。
– 备份
• 通过转储操作,形成文件或文件系统的多个副本

3.5 磁盘冗余阵列 RAID
– RAID(Reundant Array of Independent Disks)
– 它是利用一台磁盘阵列控制器统一管理和控制一组磁盘驱动器。
– 其策略是:用一组较小容量的、独立的、可并行工作的磁盘驱动器组成阵列来代替单一的大容量磁盘,独立的I/O请求能被并行地从多个磁盘驱动器同时存取数据,从而,改进了I/O性能和系统可靠性

3.6 文 件 系 统 的 性 能
(1) 磁盘调度
当多个访盘请求在等待时,采用一定的策略,对这些请求的服务顺序调整安排,旨在降低平均磁盘服务时间,达到公平、高效
– 公平:一个I/O请求在有限时间内满足
– 高效:减少设备机械运动所带来的时间浪费

(2)磁盘调度考虑的问题:
一次访盘时间 = 寻道时间+旋转延迟时间+存取时间
– 减少寻道时间
– 减少延迟时间

(3)磁盘调度算法
1) 先来先服务:按访问请求到达的先后次序服务
例:假设磁盘访问序列:98,183,37,122,14,124,65,67,读写头起始位置:53,安排磁头服务序列,计算磁头移动总距离(道数)
Image text
– 优点:简单,公平;
– 缺点:效率不高,相临两次请求可能会造成最内到
最外的柱面寻道,使磁头反复移动,增加了服务时间,
对机械也不利。

2)最 短 寻 道 时 间 优 先
– 最短寻道时间优先:优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先
– 优点:改善了磁盘平均服务时间;
– 缺点:造成某些访问请求长期等待得不到服务

例:假设磁盘访问序列:98,183,37,122,14,124,65,67,读写头起始位置:53,安排磁头服务序列,计算磁头移动总距离(道数)
Image text
– 采用最短寻道时间优先调度下的总移动道数:236
Image text

3)电梯算法
克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向。
– 当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复
Image text

4)单 向 扫 描 调 度 算 法
– 总是从0号磁道开始向里扫描
– 按照各自所要访问的磁道位置的次序去选择访问者
– 移动臂到达最后个一个磁道后,立即带动读写磁头快速返回到0号磁道
– 返回时不为任何的等待访问者服务
– 返回后可再次进行扫描