六 设备管理

author: spongehah from:hut

作者个人博客:https://blog.hahhome.top/

参考视频: B站王道考研计算机操作系统

[TOC]

1 IO控制方式

image-20231231175014121

1.1 程序直接控制方式

image-20231231175308254

image-20231231175707940

优点:实现简单。在读/写指令之后,加上实现循环检查的一系列指令即可(因此才称为“程序直接控制方式”)

缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查长期处于“忙等”状态,CPU利用率低。

1.2 中断驱动方式

image-20231231180053742

image-20231231180244658

优点:IO控制器会通过中断信号通知IO已完成,CPU不用再不停的轮询,CPU和IO设备可并行工作,提高了CPU的利用率

缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间。因为中断需要保存和恢复上下文环境

1.3 直接存储器存取DMA

image-20231231180624507

image-20231231180906123

优点:数据传输以“块”为单位,CPU介入频率进一步降低。数据的传输不再需要先经过CPU再写入内存,数据传输效率进一步增加。CPU和/IO设备的并行性进一步得到提升

缺点:CPU每发出一条I/O指令,只能读/写一个或多个连续的数据块。如果要读/写多个离散存储的数据块,或者要将数据分别写到不同的内存区域时,CPU要分别发出多条I/O指令,进行多次中断处理才能完成。

1.4 通道控制方式

image-20231231181228228

image-20231231181527914

优点:CPU、通道、I/O设备可并行工作,资源利用率很高。读取的一组数据块可以不连续,数据传输不需要经过CPU

缺点:实现复杂,需要专门的通道硬件支持

总结

image-20231231182030329

image-20231231175254139

2 设备的分配与回收

image-20231231134531480

2.1 设备分配时应考虑的因素

1 设备的固有属性

image-20231231134619348

2 设备的分配算法

image-20231231134643455

3 设备分配中的安全性

image-20231231134818441

2.2 静态分配与动态分配

image-20231231134903624

使用动态分配时,可使用 银行家算法 进行检测,避免死锁

2.3 设备分配管理中的数据结构

image-20231231134935543

image-20231231135132706

image-20231231135241583

image-20231231135402965

image-20231231135504329

2.4 设备分配的步骤

image-20231231135640082

物理设备名 就是 设备标识符

image-20231231135712813

image-20231231135747996

image-20231231135809712

注:只有设备、控制器、通道三者都分配成功时,这次设备分配才算成功,之后便可后动I/O设备进行数据传送

image-20231231135937602

2.5 设备分配步骤的改进

image-20231231140405948

逻辑设备名 即 设备类型

请求的东西 从 设备标识符 变成了 设备类型

逻辑设备表:

image-20231231140636428

总结

image-20231231140948178

3 缓冲区管理

image-20231231182218307

3.1 缓冲区的概念

image-20231231212147499

image-20231231212322443

3.2 缓冲区管理的策略

1 单缓冲

image-20231231213127498

若题目中没有特别说明,一个缓冲区的大小就是一个块

image-20231231213239389

image-20231231213311113

结论:采用单缓冲策略,处理一块数据平均耗时Max(C,T)+M

2 双缓冲

image-20231231213558101

若题目中没有特别说明,一个缓冲区的大小就是一个块

image-20231231214318670

结论:采用双缓冲策略,处理一个数据块的平均耗时为Max(T,C+M)

3 循环缓冲

image-20231231214505796

了解大致原理即可

4 缓冲池

image-20231231214627355

①输入进程请求输入数据
空缓冲队列中取出一块作为收容输入数据的工作缓冲区(hin)。冲满数据后将缓冲区挂到输入队列队尾

②计算进程想要取得一块输入数据
输入队列中取得一块冲满输入数据的缓冲区作为“提取输入数据的工作缓冲区(sin)”。缓冲区读空后挂到空缓冲区队列

③计算进程想要将准备好的数据冲入缓冲区
空缓冲队列中取出一块作为“收容输出数据的工作缓冲区(hout)”。数据冲满后将缓冲区挂到输出队列队尾

④输出进程请求输出数据
输出队列中取得一块冲满输出数据的缓冲区作为提取输出数据的工作缓冲区(s0ut)”。缓冲区读空后挂到空缓冲区队列

总结

image-20231231220051295

4 磁盘的结构

image-20231231141347335

4.1 磁盘、磁道、扇区的概念

image-20231231141450851

准确说应该是 每个扇区的每个磁道 存储的数据量相同
最内侧磁道上的扇区面积最小,因此数据密度最大

4.2 在磁盘中读 / 写数据

image-20231231141554792

4.3 找到磁盘的物理地址

image-20231231141808585

块号会被转换成 (柱面号,盘面号,扇区号) 的形式
柱面号是找磁道
盘面号是找磁盘
扇区号是找扇区

4.4 磁盘的分类

image-20231231141906699

image-20231231141924329

总结

image-20231231141935095

5 磁盘调度算法

image-20231231142504201

5.1 一次磁盘读 / 写 操作需要的时间

image-20231231143642298

后两者只与磁盘转速有关,操作系统无法影响
操作系统只能影响寻道时间

于是引出操作系统的磁盘调度算法

5.2 四种磁盘调度算法

1 先来先服务FCFS

image-20231231144038507

2 最短寻找时间优先SSTF

image-20231231151602916

3 扫描算法SCAN

image-20231231151743851

优点:解决了SSTF的饥饿现象

两个缺点:
1 只有到达最边上才可以改变方向
2 边上的磁道响应频率高,中间的磁道响应频率低

改进:LOOK调度算法

image-20231231151938106

解决了SCAN的缺点1,观察到方向上没有别的请求,就可以改变方向

若题目中无特别说明,则SCAN就是LOOK

4 循环扫描算法C-SCAN

image-20231231152231453

解决了SCAN的缺点2
C-SCAN 的平均寻道时间 要长于 SCAN,因为要直接跨越到最起点

改进:C-LOOK调度算法

image-20231231152255792

解决了SCAN的缺点1 和 缺点2

若题目中无特别说明,则 C-SCAN就是C-LOOK

总结

image-20231231152559773

补充:减少磁盘延迟时间的方法

image-20231231153808114

王道视频P71-72、74-77、83-84暂未观看