设备管理
设备的分类
(1)按数据组织分类:设备可分为块设备和字符设备:
- 块设备:是指以数据块为单位来组织和传送数据信息的设备,如磁盘
- 字符设备:是指以单个字符为单位来传送数据信息的设备,如交互式终端、打印机、鼠标键盘等
(2)按功能分类:可分为输入设备、输出设备、存储设备、网络联网设备、供电设备等
(3)从资源分配角度分类:可分为独占设备、共享设备和虚拟设备
(4)按数据传输率分类:设备分为低速设备、中速设备和高速设备
I/O设备管理软件
- 设备管理的目标主要是如何提高设备的利用率,即提高CPU与I/O设备之间的并行操作速度,并为用户提供方便、统一的界面。
- 为了提高设备的利用率,我们采用了“分层构造”的思想,即把设备管理软件组织成为一系列的层次。
- 主要分为4层:中断处理程序、设备驱动程序、与设备无关的系统软件和用户级软件
- 各层之间既相互独立,又彼此协作
例:某用户进程现在需要读取硬盘中的数据。
① 与设备无关软件检查高速缓存中有没有要读的数据块,如果有,则直接从高速缓存中调取;如果没有,则调用设备驱动程序,向I/O硬件发出一个请求。
② 用户进程转为阻塞状态,等待磁盘操作的完成。磁盘操作完成时,硬件产生一个中断,转入中断处理程序。
③ 中断处理程序检查中断的原因,认识到这时磁盘读取数据的操作已经完成,于是唤醒用户进程取回从磁盘读取的信息,此次I/O请求结束。
④ 用户进程得到了需要读取的数据内容,由阻塞转为就绪状态,继续运行。
设备管理采用的相关技术
- 通道技术 :像高速公路,让数据直达目的地,减少CPU拥堵。
- DMA技术 :自动搬运工,绕过CPU直接传输数据,提升效率。
- 缓冲技术 :蓄水池,平衡数据流,防止溢出或干涸。
- Spooling技术 :临时中转站,暂存任务,优化设备利用率。
磁盘调度算法
- 磁盘调度分为移臂调度和旋转调度两类,先进行移臂调度,再进行旋转调度。
- 由于访问磁盘最耗时的是寻道时间,因此,磁盘调度的目标是使磁盘的平均寻道时间最少。
读取磁盘数据的时间 = 寻道时间 + 旋转延迟时间 + 数据传输时间
寻道时间:把磁头移动到指定磁道上所经历的时间。(通常寻道时间是最长的)
旋转延迟时间(旋转等待时间):指定扇区移动到磁头下面所经历的时间。
数据传输时间:从磁盘读出或向磁盘写入数据所花费的时间。
磁盘调度算法
移臂调度算法
(1)先来先服务:根据进程请求的先后次序进行调度。保证所有进程的请求都得到回应,但是平均寻道时间可能很长。
(2)最短寻道时间优先:选择访问的磁道与当前磁头所在的磁道距离最近的,使得每次的寻道时间最短
(3)扫描算法(类似电梯调度):不仅考虑到要访问的磁道与当前磁道的距离,更优先考虑的是磁头当前的移动方向。
(4)单向扫描调度算法:在扫描算法的基础上,规定磁头只做单向移动。
旋转调度算法
(1)如果进程请求访问的是不同编号的扇区(无论是否在同一磁道),则总是让首先到达磁头位置下的扇区先进行读写操作。
(2)如果进程请求访问的是相同编号的扇区(无论是否在同一磁道),旋转调度时可以任选一个扇区进行读写操作。
文件管理与作业管理
文件的结构和组织
文件的逻辑结构:从用户角度看到的文件组织形式就是文件的逻辑结构,但实际上这些文件在内存上的存放方式可能并不是这样的。
- 有结构的记录式文件
- 无结构的流式文件
文件的物理结构:从实现的角度看,文件在存储器上的存放方式
- 连续结构
- 链接结构
- 索引结构
- 多个物理块的索引表
文件的目录结构
(1)一级目录结构:只有一张目录表,不允许重名,查找速度慢,不能实现文件共享。
(2)二级目录结构:由主文件目录和用户目录组成。
(3)多级目录结构:我们熟悉的Windows系统,以及UNIX系统都采用这种多级目录结构。
- 绝对地址
- 相对地址:是从当前工作目录下的路径名
文件存储空间的管理
在将文件保存到外存时,我们首先要知道哪些存储空间是“占用”的,哪些存储空间是“空闲”的。因此我们需要对磁盘空间进行管理。
空闲区表
操作系统为磁盘的所有空闲区建立一张空闲表。它适用于连续文件结构。
位示图
在外存上建立一张位示图(bitmap),记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块,0表示空闲,1表示占用。
空闲块链
每一个空闲物理块中设置一个指针,它指向下一个空闲物理块,所有空闲物理块构成一个链表,链表的头指针放在文件存储器的一个特定位置上(如管理块中)。
成组链接法
在系统中将空闲块分成若干个组,每100个空闲块为一组,每组的第一个空闲块登记了下一组空闲块的物理盘块号和空闲块总数。
作业调度算法
(1)先来先服务:按作业到达的先后顺序进行调度。
(2)短作业优先:按作业运行时间的长短进行调度,即启动要求运行时间最短的作业。
(3)响应比高优先:响应比高的作业优先启动。
- 响应比:RP = 作业响应时间/作业执行时间=(作业等待时间+作业执行时间)/作业执行时间
(4)优先级调度算法:按照系统设定的优先级或者用户指定的优先级,优先级高的先调度。
(5)均衡调度算法:根据系统的运行情况和作业本身的特性对作业进行分类,力求均衡地使用系统的各种资源,即注意发挥系统效率,又使用户满意。