操作系统复习 九-十二 章
文章目录
- 操作系统复习 九-十二 章
- 第九章 单处理器调度
- 调度的概念
- 调度的时机、切换与过程
- 进程调度方式
- 调度的基本准则
- 进程的挂起态与七状态模型
- 典型的调度算法
- 第十一章 I/O管理和磁盘调度
- I/O 设备
- I/O控制方式
- I/O子系统的层次结构
- IO子系统概述
- IO调度概念
- 高速缓存与缓冲区
- 设备分配与回收
- IO调度
- SPOOLING技术(假脱机技术)
- 高速缓存与缓冲区对比
- 磁盘结构
- 磁盘调度算法
- 磁盘管理
- 第十二章 文件管理
- 文件相关概念
- 文件的逻辑结构
- 目录结构
- 文件共享
- 文件保护
- 文件层结构
- 目录实现
- 文件实现
第九章 单处理器调度
调度的概念
-
合理的对进程进行处理机分配
-
调度的层次
- 作业调度(高级调度):从富村重选择作业送入内存,每个作业只调入一次,调出一次
- 内存调度(中级调度):提高内存利用率和系统吞吐量,将暂时不能运行的进程调至外村,使其进入挂起状态,或者将已经具备运行条件的进程调入内存,修改其状态为就绪态
- 进程调度(低级调度):按照某种策略或者方法从就绪队列中选取一个进程,将处理机分配给它(最基本的调度,频率很高)
-
三级调度的联系
- 作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的进程挂起,中级调度处于作业调度和进程调度之间
- 作业调度次数少,中级调度次数略多,进程调度频率最高
- 进程调度使最基本的,不可或缺的
调度的时机、切换与过程
- 不可切换的情况
- 处理中断过程
- 进程在操作系统进内核程序的临界区的时候
- 其他需要完全屏蔽在中断的原子操作过程
- 可以切换的情况
- 发生引起调度条件且当前进程无法继续进行
- 中断处理结束或者自陷处理结束
进程调度方式
- 非剥夺调度方式
- 如果想将处理机分配给一个更高优先级的进程,必须要等待当前占用处理机的进程释放处理机后才能将处理机分配给更高优先级进程
- 实现简单开销小适合大多数批处理系统
- 不适用于分时系统,和大多数实时系统
- 剥夺调度方式
- 如果有更高级进程请求处理机,暂停正在执行的进程,将处理机分配给更高级进程
- 提高系统吞吐率和响应效率
调度的基本准则
- CPU 利用率, 尽可能保持 CPU 处于忙碌状态
- 系统吞吐量:单位时间内 CPU 完成作业的数量,调度算法和方式会对吞吐量造成较大影响
- 周转时间:作业提交道作业完成的时间
- 周转时间=作业完成时间-作业提交时间
- 平均周转时间=总周转时间/N个作业
- 带权周转时间=作业周转时间/作业实际运行时间
- 平均带权周转时间=总带权周转时间/N个作业
- 等待时间:作业等待处理及的时间,衡量一个算法的优劣,只需要简单的考查等待时间
- 响应时间:从用户提交请求到系统首次产生相应所用的时间
进程的挂起态与七状态模型
- 暂时调到外存的进程状态为挂起状态(挂起态)
- 就绪挂起
- 阻塞挂起
- 挂起 和 阻塞 的区别
- 两种状态都是暂时不能获得 CPU的服务,但挂起态是将进程映像调到外存去了,而阻塞态下进程映像还在内存中
典型的调度算法
-
先来先服务算法(FCFS)
- 作业调度 进程调度
- 先来的先分配处理机
- 优点:算法简单,对长作业有利,有利于 CPU 繁忙型作业
- 不会导致饥饿
- 非抢占式算法
-
短作业优先
- 进程调度
- 优先选择预计运行时间最短的进程
- 优点:平均等待时间 平均周转时间最短
- 缺点:对长作业不利,造成饥饿现象,没有考虑作业的紧迫性,用户可能可以缩短作业预估时间,使得无法做到短作业优先
- 产生 “饥饿” 现象。如果一直得不到服务,则称为饥饿
- SJF(短作业优先) 和 SPF (短进程优先)是非抢占式算法。但是也有抢占式的版本——最短剩余时间优先算法
-
优先级调度算法
-
作业调度 进程调度
-
分类
- 剥夺型 立即停止当前运行进程,将处理机分配给更高优先级进程
- 菲剥夺型 等待当前进程运行完成,然后将处理机分配给更高优先级进程
-
优先级分类
- 静态优先级:进程创建后无法进行修改
- 动态优先级:可以更具进程运行状态,对进程优先级进行动态调整
-
优先级设置原则
- 系统进程 > 用户进程
- 交互型进程 > 非交互型进程
- I/O 进程 > 计算机型进程(CPU 繁忙型)
-
产生饥饿现象
-
有抢占式,也有非抢占式
-
-
高响应比算法
- 响应比=(等待时间+要求服务时间)/要求服务时间=1+等待时间/要求服务时间
- 等待时间相同情况下,要求服务时间越短响应比越大,有利于短作业进程
- 要求服务时间相同,作业响应比由其等待时间决定,等待时间越长响应比越高,实现先来先服务
- 对于长作业,作业的响应比可以随等待时间的增加而提高,等待时间足够长时,其响应比可以升到很高,从而获得处理
机 - 不会导致饥饿
- 非抢占式的算法
-
时间片轮转算法
- 使用与分时系统,使用时间片,就绪进程按照到达先后排成队列,依次在时间片内占用处理机,时间片到达时就释放处理机
- 时间片选择很重要,过大就变成了先来先服务,过短又变成了短作业优先
- 时间片影响因素:系统响应时间,就绪队列中的进程数目和系统的处理能力
- 不会导致饥饿
- 抢占式
-
多级反馈队列调度算法(融合前面集中算法)
- 实现思想
- 设置多个就绪队列,为每个队列设置不同的优先级,优先级依次递减
- 每个队列中的时间片各不相同,时间片依次递增
- 每个队列按照先来先服务原则进行进程排队,若规定时间片内没有完成,就将进程放入下一级队列
- 只有到高级队列为空的时候,低等级队列才能开始调度。
- 优点:
- 终端型作业用户:短作业优先
- 短批处理作业用户:周转时间较短
- 长批处理作业用户:讲过前面几个队
- 列得到部分执行,不会长期得不到处理
- 产生“饥饿”现象
- 抢占式
- 实现思想
第十一章 I/O管理和磁盘调度
- 设备管理 (I/O管理) 的目的和功能
- 设备独立性和I/O功能的逻辑结构DMA以及每层
- I/O缓冲区技术
- 单缓冲、双缓冲、循环缓冲
- 磁盘调度算法
- FIFO\SSTF\SCANC-SCAN(对于非磁盘、光盘类的如Flash半导体类的USB、固态硬盘SSD)
- 磁盘Cache
I/O 设备
- 人机交互的外部设备
- 用于与计算机用户之间交互设备(打印机,鼠标,键盘
- 交换速度相对较慢,以字节为单位进行数据交换
- 存储设备
- 用于存储程序和数据的设备(磁盘、磁带、光盘)
- 交换速度较快,以多字节组成的块为基本单位交换
- 网络通信设备
- 用于远程设备通信的设备(网络接口、调制解调器)
- 速度介于前两类之间
- 传输速率分类
- 低速设备:每秒进位几个字节到数百字节(鼠标、键盘)
- 中速设备:传输速率为每秒数干字节至数万字节(行式打印机、激光打印机)
- 高速设备:传输速率在数百前字节至干兆字节的一类设备(磁带机、磁盘机、光盘机)
- 信息交换单位分类
- 块设备:信总存取总是以数据块为基本单位,存储信息的设备称为块设备。传输速率高,可寻址,可以任意读写某块。
- 字符设备:用于数据输入输出的设备为字符设备,传输的基本单位是字符(交互式终端机,打印机)。传输速率低,不可寻址,输入输出时常采用中断驱动方式
I/O控制方式
- 程序直接控制方式
- 计算机从外部设备读取数据到存储器,每次读一个字的数据,对读入的每个字,CPU都要对外设状态进行循环检查,知道确定该字已经在O设备控制器的数据寄存器中
- 读写单位:字
- 优点:容易实现,操作简单
- 缺陷:CPU高速性和IO设备的低速性的矛盾(降低了CPU的利用率),CPU和IO设备只能串行工作
- 中断驱动方式
- 允许IO设备主动打断CPU的运行并请求服务,进而解放CPU,使其向IO控制器发送读命令后可以继续做其他有用的工作
- 读写单位:字
- 优点:比程序直接控制方式有效
- 缺点:数据的传输必须要经过CPU,仍然后消耗CPU的时间
- DMA 方式
- 在IO设备和内存之间开辟直接的数据交换通路,彻底解放CPU
- 特点
- 读写单位:数据块
- 设备直接送入内存
- 只有当一个或多个数据块开始和结束的时候,CPU才会进行干预
- 寄存器
- 命令/状态寄存器(CR):用于接收CPU发送的IO命令和有关控制信息或者设备状态
- 内存地址寄存器(MAR)数据直接在设备与内存之间交互
- 数据寄存器(DR):用于哲存从设备到内存或者从内存到设备的数据
- 数据计数器(DC)存放本次要传送的字(节)数
- 通道控制方式
- 设置一个专门负责输入/输出的处理机(DMA方式的发展),实现对一组数块的读写以及相关控制和管理为单位干预
- 读写单位:一组块
- 优点:有效的提高了系统资源利用率
- 缺点:实现较为复杂
- DMA与通道的区别
- DMA需要CPU来控制传输的数据块大小、传输的内存位置、而通道方式中这些信息是由通道控制的
- DMA控制器对应一台设备与内存传递数据,通道可以控制多态设备与内存的数据交换
I/O子系统的层次结构
-
层次划分
- 用户层IO软件 实现与用户交互的接口,用户可以直接调用在用户层提供的,与O操作有关的库函数,对设备进行操作
- 设别独立性软件
- 用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护及设备分配与释放,同时为设备管理与数据传送提供必要的存储空间
- 设备独立性也称为设备无关性,使得应用程序独立于具体使用的物理设备(使用逻辑设备名)
- 使用逻辑设备名的好处
- 增加设备分配的灵活性
- 易于实现IO重定向
- 主要功能
- 执行所有设备的公有操作(设备的分配与回收,逻辑设备名映射为物理设备名,对设备进行保护,进制用户直接访问设备),屏蔽设备之间数据交换的速度差异等
- 向用户层(文件层)提供统一接口:无论那种设备,他们向用户提供的接口都是相同的
- 设备驱动程序
- 硬件直接相关,负责实现系统对设备发出的操作命令,驱动IO设备工作的驱动程序
- 中断处理程序
- 用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完并恢复被中断进程的现场后,返回被中断进程
- 硬件设备
- IO设备通常包括一个机械部件和一个电子部件
-
设备控制功能
- 接收和识别CPU或通道发来的命令。磁盘的读写查找等命令
- 实现数据交换。设备与控制器之间控制器与主存之间
- 发现和记录设备及自身的状态信息,供CPU处理使用
- 设备地址识别
-
设备控制器的组成
-
设备控制器与CPU接口
- 信号线
- 数据线
- 地址线
- 控制线
- 设备控制器与设备的接口 每个接口存在数据、控制和状态三种类型的信号
- IO 控制逻辑 用于实现对设备的控制。通过一组控制线与CPU进行交互,对从CPU受到的IO命令进行译码
- 注意:
- 一个I/O控制器可能会对应多个设备
数据寄存器、控制寄存器、状态寄存器可能有多个,且这些寄存器都要有相应的地址,才能方便CPU操作 - 有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O
- 一些计算机则采用I/O专用地址,即寄存器独立编址
- 一个I/O控制器可能会对应多个设备
- 信号线
IO子系统概述
主要提供IO调度,缓冲与高速缓存,设备分配与回收,假脱机,设备保护和差错处理
IO调度概念
- 通过IO调度改善系统整体性能,使得进程之间公平共享设备访问,减少IO完成所需要的平均等待时间
- 使用主存或者磁盘上的存储空间的技术,如缓冲、高速缓存、假脱机等来改善计算机效率
高速缓存与缓冲区
- 磁盘高速缓存
- 使用磁盘高速缓存技术可以提高磁盘的IO速度,对高速缓存复制的访问要比原始数据访问更高效
- 磁盘高速缓存,逻辑上属于磁盘,物理上属于驻留在内存中的盘块
- 在内存中的两种存在形式
- 在内存中开辟一个单独的存储空间作为磁盘高速缓存,大小固定
- 把未利用的内存空间作为一个缓冲池,供清求分页系统和磁盘IO时共享
- 缓冲区
- 引入缓冲区的目的
- 缓和CPU与IO之间的速度差异矛盾
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 解决基本数据单元大小不匹配的问题
- 提高CPU和IO设备之间的并行性
- 实现方法
- 采用硬件缓冲器(成本过高),除了关键位置,一般不使用硬件缓冲器
- 采用缓冲区(位于内存区域)
- 分类
- 单缓冲
- 设备和处理机之间设置缓冲区,设备和处理机交换数据的时候,先把被交换的数据写入缓冲区,然后需要数据的设备或处理机从缓冲区中取走数据
- 使用时间max(C,T)+M
- 双缓冲
- 设置两个缓冲区,当缓冲区1满时,向缓冲区2中注入数据,只有缓冲区满才能取出数据
- 提高了处理机和输入设备的并行操作程度
- max( C+M,T)
- 循环缓冲
- 包含多个大小相等的缓冲区,每个缓冲区中有一个链接指针指向下一个缓冲区,最后一个缓冲区指针指向第一个缓冲区,多个缓冲区构成一个环形
- 缓冲池
- 缓冲区分为三个队列,空缓冲队列,装满输入数据的缓冲队列,装满输出数据的缓冲队列
- 四种缓冲区:收容输入数据的工作缓冲区,提取输入数据的工作缓冲区,收容输出数据的工作缓冲区,提取输出数据的工作缓冲区
- 参数表示
- C:CPU对数据的处理时间
- T:数据写入缓冲区的时间
- M:缓冲区数据传入用户区的时间(CPU区)
- 单缓冲
- 注意:管道通信中的“管道”其实就是缓冲区。要实现数据的双向传输,必须设置两个管道
- 引入缓冲区的目的
设备分配与回收
-
概述 根据用户IO请求分配设备,原则:充分发挥设备的使用效率,避免进程死锁
-
设备类型分类
- 独占式使用设备 设备只能互斥使用(打印机)
- 分时共享使用设备 通过分时共享来提高设备的利用率
- SPOOLing方式使用设备 使用空间换时间,对IO设备进行批处理
-
设备分配的数据结构
- 设备控制表(DCT) 一个设备控制表表征一个设备,控制表中是设备的各项属性
- 控制器控制表(COCT) COCT与DCT一一对应关系,DCT需要一个表项来表示控制器,即一个指向控制器控制表的指针
- 通道控制表(CHCT) CHCT提供服务的那几个设备控制器
- 系统设备表(SDT) 记录已经连接到系统中的所有物理设备的情况
-
设别分配策略
-
分配原则:充分发挥设备效率,避免进程死锁
-
分配方式
- 静态
- 系统一次性的把设备分配给相应作业,直到作业结束
- 优点:没有死锁问题
- 缺点:降低了设备使用率
- 动态
- 进程执行过程中根据执行需要进行分配
- 优点:提高了设备利用率
- 缺点:分配算法不当可能导致死锁
- 静态
-
设备分配算法
- 先请求先分配 类似于先来先服务
- 优先级高者优先
-
独占设备一股使用静态分配,共享设备一般使用动态分配
-
IO调度
-
设备分类
- 独占设备,一个时段只能分配给一个进程(如打印机)
- 共享设备,可同时分配给多个进程使用(如磁盘),各进程往往是宏观上同时共享使用设备,而微观上交替使用
- 虚拟设备,采用SPOOLing技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程使用(如采用SPOOLing技术实现的共享打印机)
-
设别分配的安全性
- 安全分配方式
- 进程发出IO请求后便进入阻塞态,直到IO结束才被唤醒
- 优点:设备分配安全
- 缺点:CPU和IO设备串行工作
- 不安全分配方式
- 进程发出IO请求后继续运行,需要时发出第二个,第三个IO请求
- 优点:进程推进迅速
- 缺点:可能产生死锁
- 安全分配方式
-
逻辑设备名到物理设备名的映射
-
目的
- 提高设备分配的灵活性和利用率
- 实现IO重定向
- 引入设备独立性
-
实现方法:引入逻辑设备表(LUT),用来将逻辑设备名映射为物理设备名
-
建立方式
- 整个系统设置一张LUT,所有设备分配情况都记录在这张表上(单用户设备)
每个用户建立一张LUT,分别记录设备的分配情况
- 整个系统设置一张LUT,所有设备分配情况都记录在这张表上(单用户设备)
-
SPOOLING技术(假脱机技术)
-
目的:缓解CPU与IO的速度差异矛盾
-
要实现SPOOLing技术,必须要有多道程序技术的支持
-
输入井和输出井
- 输入井用来收容IO设备的数据
- 输出井用来模拟输出时的磁盘
-
输入缓冲区和输出缓冲区
- 输入缓冲区:暂存由输入设备送来的数据
- 输出缓冲区:暂存从输出井送来的设备
-
输入进程和输出进程
- 输入进程:模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区送到输入井中,当CPU需要数据,直接将输出井中的数据送入内存
- 输出进程:模拟脱机输出时的外围控制机,把用户要求输出的数据先从内存送到输出井中,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备
-
特点
- 提高了1O速度
- 独占设备变成了共享设备
- 实现了虚拟设备功能
-
通俗一点就是,如果设备被占用,我们就先把数据暂存一下,等到设备空闲了就把这些数据输送到设备中
高速缓存与缓冲区对比
- 相同点:都介于告诉设备和低俗设备之间
- 不同
- 存放数据
- 高速缓存:存放的是低速设备上的某些数据的复制数据
- 缓冲区:存放的是低速设备传递给高速设备的数据,这些数据在低速设备上不一定有备份,这些数据再从缓冲区传送到高速设备
- 目的
- 高速缓存:高速缓存存放的是高速设备经常要访问的数据,如高速缓存中数据不在,高速设备就要访问低速设备
高速设备和低速设备的通信都要经过缓冲区,高速设备永远不会去直接访问低速设备
- 高速缓存:高速缓存存放的是高速设备经常要访问的数据,如高速缓存中数据不在,高速设备就要访问低速设备
- 存放数据
磁盘结构
- 表面涂有磁性物质的金属或塑料构成的圆形盘片,通过一个称为磁头的导体线圈从磁盘读取数据。
- 磁盘盘面上的数据存储在一组同心圆中,称为磁道
- 一个盘面有上干个磁道,磁道又划分为几百个扇区,每个扇区固定存储大小,一份扇区称为一个盘块
- 磁盘地址用:柱面号-盘面号-扇区号(块号)表示
- 磁盘分类
- 固定头磁盘:磁头相对于盘片的径向方向固定
- 活动头磁盘:每个磁道一个磁头,磁头可以移动
- 固定盘磁盘:磁头臂可以来回伸缩定位磁道,磁盘永久固定在磁盘驱动器内
- 可换盘磁盘:可以移动和替换
磁盘调度算法
- 读写时间组成
- 寻找时间:活动头磁盘在读写信息前,将磁头移动到制定磁道所需的时间(跨越n条磁道+启动磁臂):Ts = m * n + s
- 延迟时间:磁头定位到某一磁道扇区所需要的时间,Tr = 1/2 r (转速为r)
- 传输时间:从磁盘读出或向磁盘写入数据经过时间, Tr = b/rN
- 磁盘调度算法
- 先来先服务算法(FCFS)
- 按照进程请求访问磁盘的先后顺序进行调度
- 优点:公平实现简单
- 缺点:适用于少量进程访问,如果进程过多算法更倾向于随机调度
- 最短寻找时间优先算法(SSTF)
- 选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道
- 优点:性能强于先来先服务算法
- 缺点:容易产生饥饿现象
- 扫描(SCAN)算法
- 在磁头当前移动方向上选择与当前磁头所在的磁道距离最近的请求作为下一次服务对象
- 优点:寻道性能好,可以避免饥饿现象
- 缺点:对最近扫描过的区域不公平,访问局部性方面不如FCFS和SSTF好
- 循环扫描算法(C-SCAN)
- 磁头单向移动,回返时直接回到起始端,而不服务任何请求
- LOOK 与 C - LOOK 算法
- 在SCAN与C-SCAN算法的基础上规定了查看移动方向上是否有请求,如果没有就不会继续向前移动,而是直接改变方向(LOOK)或者直接回到第一个请求处(C-LOOK)
- 对盘面交替编号 原因:磁头在读/写一个物理块后,需要经过短暂的处理时间才能开始处理下一块
- 先来先服务算法(FCFS)
磁盘管理
- 磁盘的初始化
- 低级格式化:磁盘分扇区,为每个扇区采用特别的数据结构(头、数据区域、尾部组成),头部含有一些磁盘控制器所使用的信息
- 进一步格式化处理:磁盘分区,对物理分区进行逻辑格式化(创建文件管理系统),包括空闲和已分配的空间及一个初始为空的目录
- 引导快
- 计算机启动时运行自举程序,初始化CPU寄存器、设备控制器和内存等,然后启动操作系统
- 组局程序通常保存在ROM中,在ROM中保留很小的自举块,完整的自举程序保存在启动块上
- 拥有启动分区的磁盘称为启动磁盘或系统磁盘
- 坏块
- 无法使用的扇区
- 对于简单的磁盘,可以在逻辑格式化时(建立文件系统时)对整个磁盘进行坏块检查,标明哪些扇区是坏扇区,比如:在FAT表上标明
- 处理方式
- 简单磁盘:手动处理,对坏块进行标记,程序不会使用
- 复杂磁盘控制器维护一个磁盘坏块链表,同时将一些块作为备用,用于替代坏块(扇区备用)
第十二章 文件管理
- 文件和文件系统的定义
- 文件系统的目标和功能
- 五种文件组织方式
- 文件目录和文件共享(文件与目录的建立方式以及路径)
- FCB(文件控制块)文件及目录的作如打开等操作,系统做了什么动作
- 三种记录组块技术
- 级存储管理
- 三种文件分配方式(读磁盘次数、计算支持文件大小)
- 三种磁盘空闲空间管理方式 (位示图法等)
文件相关概念
- 相关定义
- 文件是以计算机硬盘为载体的存储在计算机上的信息集合,文件可以是文本文档、图片、程序等
- 系统运行时,计算机以进程为基本单位进行资源的调度和分配
- 在用户输入输出时,以文件为基本单位
- 操作系统的文件系统:用于实现文件的权限访问,修改,查询和保存等功能
- 文件的结构
- 数据项:数据项是文件系统中最低级的数据组织形式
- 基本数据项:用于描述一个对象的某种属性的一个值
- 组合数据项:多个基本数据项组成
- 记录:组数据项的集合,用于描述一个对象在某方面的属性
- 文件:创建者所定义的一组相关信息的集合
- 有结构文件:相似的记录组成(记录式文件)
- 无结构式文件:字符流组成(流式文件)
- 数据项:数据项是文件系统中最低级的数据组织形式
- 文件的属性
- 名称:文件名称唯一,以容易读取的形式保存
- 标识符:文件的唯一标签,通常为数字,是对人不可读的一种内部名称
- 类型:被支持的不同类型的文件系统所使用
- 位置:指向设备和设备上文件的指针
- 大小:文件当前的大小,包含文件允许的最大值
- 保护:对文件进行保护的访问控制信息
- 时间、日期和用户标识:文件创建、修改和上次访问的相关信息,用于保护和跟踪文件的使用
- 文件的打开与关闭
- open 请求
- 首次使用文件,会调用0pen 请求指明文件的属性(包括其物理位置)从外存复制到内存打开文件表的一个表目中,并将该表目的编号(索引)返回给用户
- 操作open会根据文件名搜索目录,并将目录条目复制到打开文件
- 调用open请求(创建、只读、读写、添加等)得到允许,进程就可以打开文件,open会返回一个指向打开文件表中的一个条目的指针
- 通过使用该指针进行I/O操作,简化步骤并节省资源
- 文件关联信息
- 文件指针:系统跟踪上次的读写位置作为当前文件位置的指针,这种指针对于打开文件的某个进程来说是唯一的,因此必须与磁盘文件属性分开保存
- 文件打开计数:文件关闭时,必须重置其打开文件表条目,否则表内空间会不够用,计数器为0关闭文件,删除该条目
- 文件磁盘位置:该信息存储在内存放,以免每个操作都要从磁盘中读取
- 访问权限:每个进程打开文件都需要一个访问模式(创建、只读、读写、添加等),该信息保存在进程打开的文件表中,以便操作系统能够允许或拒绝之后的I/O请求
- open 请求
文件的逻辑结构
- 无结构文件
- 最简单的文件组织形式
- 将数据按照顺序组织记录并积累、保存、是有序相关信息项的集合
- 由于其没有结构,所以只能采用更穷举搜索
管理简单,方便用户对其操作 - 基本信息单位操作不多的文件适合采用字符流的无结构方式
- 有结构文件(记录式文件)
- 顺序文件
- 文件的记录是一个接一个排列,记录通常是定长的,可以顺序存储或者链表存储
- 批量处理时,顺序文件的效率是所有逻辑文件中效率最高的
- 但是增出删改查操作比较困难
- 索引文件
- 定长记录文件
- 按照公式A=i*L可以直接得到文件地址(第i条记录,L是文件长度)
- 变长记录文件
- 查找前i-1条记录后,才能查找第i条记录
- 通过建立索引表后可以有效提高查找速度
- 定长记录文件
- 索引顺序文件
- 顺序和索引两种组织形式的结合。
- 索引文件将顺序文件中的所有记录分成若干组,为顺序文件建立起一张索引表,在索引表中为每组中的第一条记录建立一个索引项,其中含有该记录得关键字值和指向该记录的
指针 - 索引倾序文件提高了查找效率,但是索引表也占用了存储空间
- 直接文件或散列文件
- 给定记录的键值或通过散例函数转换的键值直接决定记录的物理地址
- 这种映射结构不同于顺序文件或者索引文件,没有顺序的特性
- 顺序文件
目录结构
- 包含有关文件信息,如属性、位置和所有权等
- 文件控制块和索引节点
- 文件控制块(FCB)
- 用来存放控制文件需要的各种信息的数据结构,实现“按名存取”。
- 包含信息
- 基本信息:文件名,文件的物理位置,逻辑结构、物理结构等
- 存取控制信息:文件存取权限
- 使用信息:文件建立时间修改时间
- 索引节点
- 检索目录文件时,不需要将文件调入内存,只是查找其目录项,文件的描述信息单独形成为索引节点的数据结构
- 磁盘索引节点
- 文件主标识符:拥有该文件的个人或小组的标识符
- 文件类型:普通文件、目录文件、特别文件
- 文件存取权限:各类用户对该文件的存取权限
- 文件物理地址:每个索引节点中含有13个地址项,直接或者间接的方式给出数据文件所在盘块的编号
- 文件长度:字节为单位
- 文件链接计数:本文件系统中所有指向该文件的文件名的指针计数
- 文件存取时间:文件最近被进程存取,修改以及索引节点最近被修改的时间
- 文件打开后内存索引节点增加的内容
- 索引结点编号:用于标识内存索引节点
- 状态:指示节点是否被上锁或者被修改
- 访问计数:每当有一个进程要访问此结点时,计数加1,访问结束减1
- 逻辑设备号:文件所属文件系统的逻辑设备号
- 链接指针:设置分别指向空闲链表和散列队列的指针
- 文件控制块(FCB)
- 目录结构
- 搜索:用户使用给一个文件时,需要搜索目录,找到该文件对应的目录项
- 创建文件:创建一个新文件时,需要在目录中增加一个目录项
- 删除文件:删除一个文件时,需要在目录中明除相应的目录项
- 显示目录:用户可以请求显示目录的内容,显示该用户目录中的所有文件及属性
- 修改目录:某些文件属性保存在目录中,因而这些属性的变化需要改变相应的目录项
- 目录结构分类
- 单机目录结构
- 整个文件系统只建立一张目录表,每个文件占一个目录项
- 优点:实现了按名存取
- 缺点:查找速度慢,文件不允许重名,不便于文件共享,不适用于多用户的操作系统
- 两级目录结构
- 将文件分为主目录和用户目录,主目录记录用户名及相应用户文件目录所在的存储位置,用户目录项记录该用户文件的FCB信息。
- 优点:解决了不同用户文件重名问题,在一定程度上保证了文件的安全
- 缺点:缺乏灵活性,不能对文件分类
- 多级目录结构
- 将两级目录结构的层次关系加以推广,就形成了多级目录结构,即树形目录结构
- 进程对各文件的访问都是相对于当前目录进行的
- 优点:有效的对文件进行分类,文件结构层次清晰,能够有效的进行文件管理和保护
- 缺点:按照路径名访问中间结点,增加了磁盘访问次数,降低了查询速度
- 无环目录结构
- 在树形目录结构基础上增加了一些指向同一结点的有向边,使整个目录称为一个有向无环图。
- 优点:有利于实现文件共享
- 单机目录结构
文件共享
- 基于索引节点的共享方式(硬链接)
- 文件目录中只设置文件名及指向相应索引节点的指针,在索引节点中还有一个链接计数c0unt,用于表示链接到本款引节点(即文件)上的用户目录项的数目.
- 硬链接是多个指针指向一个索引结点,佩证只要还有一个指针指向索引节点,索引节点就不能删除
- 优点:硬链接的查找速度要比软链接快
- 利用符号链接实现文件共享(软连接)
- B用户共享A用户的文件F时候,系统创建一个LINK类型的新文件,也取名F,然后将文件F写入用户B的目录中,但是新文件中知识别含有被链接文件F的路径名
- 软链接就是把到达共享文件的路径记录下来,当要访问文件时,根据路径寻找文件
- 优点:网络共享只需要提供该文件所在机器的网络地址及该机器中的文件路径
- 缺点:由于是根据文件路径名查找文件,因此会增加时间开销并且增加了启动磁盘的顿率,同时符号链的索引节点也会耗费一定的硬盘空间
文件保护
- 为了防止文件共享导致文件被破坏或者未经允许修改文件,文件系统必须控制用户对文件的存取,解决对文件的读、写、执行的许可问题
- 实现方式
- 口令保护
- 加密保护
- 访问控制 用于控制用户对文件的访问方式
- 为了防止用户文件被他人窃取或者存取
- 访问类型
- 读、写、执行、添加、围除、列表清单(列出文件名和属性名)
- 还可以对文件重命名、复制、编辑等加以控制
- 访问控制
- 根据用户身份进行控制,为每个文件和目录增加一个访问控制列表,规定每个用户名及其所允许的访问类型
- 优点:可以使用复杂的访问方法
- 缺点:长度无法预计且可能导致复杂空间管理
- 精简访问列表
- 拥有者:创建文件的用户
- 组:一组需要共享文件且具有类似访问的用户
- 其他:系统内的所有其他用户
- 根据用户身份进行控制,为每个文件和目录增加一个访问控制列表,规定每个用户名及其所允许的访问类型
- 口令:用户请求访问时需要提供相应的口令
- 优点:时间和空间开销不多
- 缺点:口令直接存储在系统内部不安全
- 密码 用户对文件进行加密,用户访问需要秘胡解密
- 优点:保密性强。节省了存储空间
缺点:加密和解密需要花费一定时间
- 优点:保密性强。节省了存储空间
- 口令和密码都是防止文件被他人存取回或者窃取,没有控制用户对文件的访问类型
文件层结构
- 用户调用接口:文件系统为用户提供与文件及目录有关的调用
- 文件目录系统:管理文件目录,管理活跃文件目录表,管理读写状态信息表,管理用户进程的打开文件表,管理与组织存储设备上的文件目录结构。调用下一级存取控制横块
- 存取控制验证:实现文件保护,将用户的访问请求与FCB中指示的访问控制权限进行比较,以确认访问的合法性
- 逻辑文件系统关于文件信息缓冲区:逻辑文件系统与文件信息缓冲区的主要功能是,根据文件的逻辑结构将用户要读写的逻辑记录转换成文件逻辑结构内的相应块号
- 物理文件系统:把逻辑记录所在的相对块号转换成实际的物理地址
- 辅助分配模块:管理辅存空间,负责分配辅存空闲空间和回收辅存空间
- 设备管理程序模块:分配设备,分配设备读写用缓冲区,磁盘话度,启动设备,处理设备中断,释放设备读马缓冲区,释放设备
目录实现
- 线性列表
- 使用存储文件名和数据块指针的线性表
- 优点:实现简单
- 缺点:耗费时间
- 哈希表
- 恨据文件名得到一个值,然后返回一个指向线性列表中元素的指针
- 优点:查找迅速,插入和除简单
- 缺点:要避免充足,哈希表长度固定以及哈希函数对表长有依赖性
文件实现
- 文件的分配方式
- 连续分配
- 连接分配
- 索引分配
- 文件存储空间管理
- 文件存储在一个文件卷中,文件卷可以是物理盘的一部分,也可以是整个物理盘在一个文件卷中,文件数据信息的(文件区)和存放文件控制信息FCB的空间是分离的
- 文件存储设备分成许多大小相同的物理块,以块为单位交换信息。文件存储设备管理的实质是对空闲块的组织和管理,包括空闲块的组织、分配与回收等问题
- 空闲块管理
- 空闲表法:属于连续分配方式,系统为空闲区建立一张空闲盘块表,每个空闲区第一个盘块号,该区的空闲盘块数等信息。
- 空闲链表法:将所有的空闲盘区拉成一条空闲雠,根据构成镜所有的基本元素不同,可以把镜表分成两种形式:
- 空闲盘块链:将磁盘上所有空闲空间以盘块为单位拉成一条链
- 空闲盘区链:将磁盘上所有空闲盘区拉成一条链
- 示位图
- 采用二进制的一位来表示一个盘块的使用情况,磁盘上所有盘块都有一个二进制位与之对应
- 盘块的分配
- 计算公式
- b = n(i-1) + j
- 计算公式
- 盘块的回收
- i = (b-1) DIV n + 1
- j = (b-1 ) MOD n + 1
- i 行 j 列
- 盘块的分配
- 采用二进制的一位来表示一个盘块的使用情况,磁盘上所有盘块都有一个二进制位与之对应
- 成组链接法
- UNX使用,结合了空闲表和空闲链表法克服了表太大的缺点
- 把顺序的个空闲扇区地址保存在第一个空闲扇区内,其后一个空闲扇区内则保存另一顺序空闲扇区的地址
大家好,我是xwhking,一名技术爱好者,目前正在全力学习 Java,前端也会一点,如果你有任何疑问请你评论,或者可以加我QQ(2837468248)说明来意!希望能够与你共同进步