参考视频:王道计算机考研 操作系统_哔哩哔哩_bilibili
参考书籍:左万利《计算机操作系统教程(第4版)》
目录
第五章 设备与输入输出管理
外部设备都采用缓存和并行处理技术,提高整个系统的效率。
一、设备的分类
1.用途划分(存储、IO、网络)
按照用途可以分为三类:
- 存储型设备。如磁盘,磁带,光盘,U盘等用来保存计算机中的一些信息。
- IO型设备。如鼠标、键盘(输入设备);打印机、显示器(输出设备)。人机交互。
- 网络通讯设备。如网卡、交换机等。
2.数据传输基本单位划分
- 块型设备。以块为存储、分配、数据传输的基本单位。可寻址(随机读写),传输速率高。
- 字符型设备。以字符为传输单位。不可寻址,传输速率较慢。
3.管理方式划分
按照管理方式可以分为两类:
- 共享型设备:设备在一段时间内,可以被多个进程共享。
- 独占型设备:进一步分为① 块型独占;② 字符型独占。一段时间供单个进程所有。
3.1 共享型设备
常见的存储型设备基本都是共享型设备,数据传输以块为单位,可以交叉传输。但是有一个存储型设备——磁带除外。磁带属于块型独占设备,以块为单位传输,但是不运允许交叉。磁带机机械运动速度很慢,如果允许多个进程共享,则由于不同进程所访问的磁盘块的物理距离较远而可能大大降低设备的访问速度。
3.2 独占型设备
所有IO型设备都是字符型独占设备,以字节为单位传输。
二、设备的物理特性
1.IO型设备的物理特性
一次IO传输的最小单位就是一个字节。传输一个字节就会发生一次中断。
2.存储型设备的物理特性
每一次IO传输,是以一个块为单位。传输一块或几块就会发生一次中断。
2.1 磁带的物理特性
磁带属于启停设备,用的时候开启,用完了停止。
规格:1英寸宽的磁带由16个磁道,0.5英寸的磁带目前多达18个磁道。
每个磁道一个磁头。
操作:反绕,正向查找,反向查找,读,写。
磁带的信息块是连续存放的(一维地址),因此文件是顺序结构存储,一个文件占若干连续块。
2.2 磁盘的物理特性——磁盘的组成
(参考视频:磁盘的结构:王道计算机考研 操作系统_哔哩哔哩_bilibili)
磁盘机属于旋转设备,一开机,机器盘片一直在转动。关机才停。
每个磁盘片有两个盘面,除了顶面和底层(用于定位磁头),其他盘面都可以存储数据。
磁盘上的信息是保存在磁道上的。
磁道:每个盘片上的同心圆组成的圆环。
扇面:径向的面。
扇区:扇面将各个磁道截取,形成若干个扇区。
每个扇区都存放相同的数据量,称为物理块,也叫磁盘块。因此最内侧磁道上的扇区面积最小,但由于数据量一定,于是数据密度最大。
当开启时,旋转轴开始旋转,盘面旋转,由磁头开始读取信息。原理上每个磁道一个磁头,但成本太高,于是降为一个盘面一个磁头。一个盘面中的各个扇区共享一个磁头,通过磁头引臂控制磁头在磁道内外移动,以此来得到指定扇区的数据。(所有盘面的磁头一起移动)
柱面:一组盘面,处于相同磁道的纵向柱型区域。
综上,在盘面上找磁盘块需要三个因素定位:
- 首先要知道在哪个盘面上。
- 其次要知道在哪个磁道上。(磁头引臂移动磁头查找磁道)
- 最后要知道在哪个扇区上。(旋转轴旋转查找扇区)
2.3 磁盘的物理特性——磁盘的地址转换
可用(柱面号,盘面号,扇区号)来定位任意一个“磁盘块”。
由于磁头引臂的移动最慢,所以在磁头寻找扇区时,柱面变化放在最后。即先改变扇区号,接着改变盘面号,最后改变柱面号。
地址转换:
2.3 光盘的物理特性
三、I/O控制方式
1.程序控制查询方式
最早的输入输出控制方式。处理器代表进程向相应的设备模块发出输入输出请求,然后处理器反复查询设备状态,直至输入输出完成。(设备运行时,CPU等待)
缺点:处理器和设备串行,但设备速度远远低于处理器速度,忙式等待会消耗大量处理器时间。
2.中断驱动方式
改进:中断技术可以终止CPU的等待。
CPU与设备并行工作,CPU不再等待设备完成才运行。
缺点:中断处理过程需要保存、恢复运行环境,每次只读写一个字,频繁的读写需要时间开销,降低系统性能。
3.DMA方式(直接存储器存取)
改进:数据传输单位改为“块”;数据不再经过CPU;传送数据开始和结束才需要CPU。
硬件需要提供一个DMA控制器,可以共享总线,以此来访问内存。
DMA控制器中的寄存器:
- 数据寄存器 DR(Data Register)
- 内存地址寄存器 MAR(Memory Address Register)
- 数据计数器 DC(Date Counter),表示剩余读/写的字节数。
- 命令/状态寄存器 CR(Command Register / Status Register)
CPU将本次要进行的操作告诉DMA控制器,如数据大小、数据在内存的位置以及外存地址。然后控制器代替CPU完成工作(也是一个字一个字地读写),之后向CPU发出中断信号。
详细过程:
① CPU实现DMA编程,同时启动磁盘控制器,由磁盘读入数据至内部缓冲区。
② DMA向磁盘控制器请求,获得内存地址。
③ 磁盘控制器将数据传到内存指定单元,
④ 磁盘控制器发送回答给DMA;
⑤ DMA内部将地址寄存器加1,同时数据计数器减1,重复②到⑤直至计数器为0,此时DMA向CPU发送中断信号。
缺点:只能读/写连续的数据块。
4.通道方式
增加了一块专门负责处理输入输出操作的处理机(硬件,成本较高)。与DMA不同,通道有自己的指令系统,可以实施复杂的I/O控制。
改进:CPU可以一次将多个工作丢给通道执行。
缺点:成本高。
4.1 通道指令系统
基本操作:控制、读、写、转移、结束。
指令格式:(操作码,传输量,特征位,地址信息)
4.2 运控部件
① 通道地址字 CAW:下一条通道指令的地址。相当于CPU的指令计数器。
② 通道命令字 CCW:保存正在执行的命令。相当于CPU的指令寄存器。
③ 通道状态字 CSW:记载通道、控制器、设备的状态,包括I/O完成信息、出错信息、重复执行次数。
④ 通道数据字 CDW:暂存内存与设备之间I/O传输的数据。
4.3 存储区域
没有独立的存储空间,与CPU共享同一个内存空间。通道使用内存具有两个用途:
- ① 保存通道程序
- ② 保存交换数据
4.4 通道程序执行过程
启动:通道程序保存在内存中,将其内存起始地址放入CAW中。
4.5 通道类型
字节多路通道:通道中含有许多以字节为单位输入输出的非分配型子通道,分时与通道交换数据。主要用于低速I/O设备。
数组选择通道:以块为单位与通道交换数据,连接多台高速设备,但其中只有一个分配型子通道,即在一段时间内只能执行一道通道程序。
数组多路通道:所连外围设备以块为单位与通道交换数据,连接多台高速设备,运行多个通道程序分时并发工作。
四、设备的调度
(参考视频:磁盘调度算法:王道计算机考研 操作系统_哔哩哔哩_bilibili)
对于用来保存文件的磁盘等设备来说,同一时刻可能会有许多来自系统和应用程序的访问请求。按照什么次序为这个请求服务,是输入输出调度所应解决的问题,而用来确定服务次序的算法称为输入输出调度算法。算法应该考虑两个基本因素
- 公平性:请求应在有限时间内得到满足。(防止饥饿或饿死)
- 高效性:减少设备机械运动的时间开销。(磁盘引臂、旋转延迟)
1.磁盘引臂调度算法
1.1 先到先服务(FCFS)
思想:按照提出请求的先后顺序进行服务。
优点:实现简单,公平。
缺点:未考虑位置问题,不高效。
1.2 最短查找时间优先(SSTF)
思想:优先响应离磁头最近的请求。
优点:磁头移动量小,高效。
缺点:不考虑请求的到达时间。如最先到达的请求离磁头远,长期得不到服务,磁道歧视,饥饿或饿死。即公平性差。
1.3 扫描算法(SCAN) / 电梯算法(LOOK)
思想:磁头前进方向往复扫描磁道,在扫描中响应请求。
(电梯算法:前进方向没有请求,反方向存在请求,可立即转向。)
优点:高效,公平。
缺点:存在磁道地域差别,中间磁道平均等待时间为 n/2,两边磁道平均等待时间为 n。
1.4 循环扫描算法(C-SCAN / C-LOOK)
解决磁道地域差别。
思想:磁头单方向响应请求,到头后立即回到另一头,期间不接受任何请求。
优点:所有磁道地位相同,最长等待时间相同。
缺点:磁头粘性:单方向扫描中,如果有某一磁道上不停有新请求到达,磁头就可能不再往前走,长期处于一个磁道上。即公平性差。
1.5 N步扫描算法
思想:将请求队列分成若干长度为 N 的子队列,每队采用SCAN算法,一个队列一个队列地处理。【新到达的请求排在队尾。N=1时,退化为FCFS;N很大时,接近 SCAN】
1.6 冻结扫描算法 (FSCAN)
解决磁头粘性问题。
思想:将磁盘请求分为两个子队列:请求队列、服务队列。
- 在扫描开始时间之前到达的请求放入服务队列;
- 在扫描开始时间之后到达的请求放入请求队列;
- 磁头采用SCAN算法移动,只服务“服务队列”的请求;
- 一次扫描完成以后,交换两个队列的地位,请求队列改为服务队列。
优点:在扫描的过程中,若有请求到达,将不会被响应,而是放入请求队列,等下一次扫描。克服磁道粘性,防止饿死。
2.磁盘输入输出参数
读写一个磁盘块需要多少时间。
2.1 寻道时间(seek time)
将磁盘引臂移动到指定柱面所需的时间。
2.2 旋转延迟(rotational delay)
指定扇区旋转到磁头下的时间。
2.3 传输时间(transfer time)
读/写一个扇区的时间。
2.4 访问时间
访问时间为三者之和:
因此:
2.5 例题![](https://i-blog.csdnimg.cn/blog_migrate/adf26489c9d204b7452a9278c2cb122b.png)
3.减少读写延迟
(参考王道减少磁盘延迟时间:王道计算机考研 操作系统_哔哩哔哩_bilibili)
读写延迟:磁头读取一个扇区块的内容后,需要一段时间进行处理,而盘片又在不停地旋转。
3.1 未考虑读写延迟的扇区编号
由于读写延迟,磁头无法连续读取扇区的信息,因此扇区号相邻时,可能需要再转一圈才能找到相邻的位置,再进行读写。
3.2 交错编号
采用交错编号,让逻辑上相邻的扇区在物理上有一定的间隔,使读取连续的扇区所需的延迟更小。