设备管理
- 一、I/O设备
-
- [1.1 I/O设备的概念和分类](#1.1 I/O设备的概念和分类)
- [1.2 I/O控制器](#1.2 I/O控制器)
- [1.3 I/O控制方式](#1.3 I/O控制方式)
-
- [1.3.1 程序直接控制方式](#1.3.1 程序直接控制方式)
- [1.3.2 中断驱动方式](#1.3.2 中断驱动方式)
- [1.3.3 DMA方式](#1.3.3 DMA方式)
- [1.3.4 通道控制方式](#1.3.4 通道控制方式)
- 二、I/O软件层次结构
-
- [2.1 用户层软件(假脱机技术SPOOLing)](#2.1 用户层软件(假脱机技术SPOOLing))
- [2.2 设备独立性软件(I/O调度和设备保护)](#2.2 设备独立性软件(I/O调度和设备保护))
- [2.3 设备驱动程序](#2.3 设备驱动程序)
- [2.4 中断处理程序](#2.4 中断处理程序)
- 三、磁盘
-
- [3.1 磁盘的结构](#3.1 磁盘的结构)
- [3.2 磁盘调度算法](#3.2 磁盘调度算法)
-
- [3.2.1 先来先服务FCFS](#3.2.1 先来先服务FCFS)
- [3.2.2 最短寻找时间优先SSTF](#3.2.2 最短寻找时间优先SSTF)
- [3.2.3 扫描算法SCAN](#3.2.3 扫描算法SCAN)
- [3.2.4 LOOK调度](#3.2.4 LOOK调度)
- [3.3 减少磁盘延迟时间的方法](#3.3 减少磁盘延迟时间的方法)
一、I/O设备
1.1 I/O设备的概念和分类

1.2 I/O控制器
- I/O设备的机械部件主要用来执行具体I/O操作。如我们看得见摸得着的鼠标/键盘的按钮;显示器的LED屏;移动硬盘的磁臂、磁盘盘面。
- I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
- CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的"中介",用于实现CPU对设备的控制。这个电子部件就是I/O控制器 ,又称设备控制器。
- 一个I/O控制器可能会对应多个设备;
- 数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。
- 有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O ;另一些计算机则采用I/O专用地址,即寄存器独立编址 。
1.3 I/O控制方式
1.3.1 程序直接控制方式

内容 | 说明 |
---|---|
完成一次读/写操作的流程 | ![]() |
CPU干预的频率 | 很频繁 ,I/O操作开始之前、完成之后需要CPU介入,并且在等待I/O完成的过程中CPU需要不断地轮询检查。 |
数据传送的单位 | 每次读/写一个字 |
数据的流向 | 读操作(数据输入): I/O设备→CPU→内存 写操作(数据输出): 内存→CPU→I/O设备 每个字的读/写都需要CPU的帮助 |
主要缺点和主要优点 | 优点: 实现简单。在读/写指令之后,加上实现循环检查的一系列指令即可(因此才称为"程序直接控制方式") 缺点: CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于"忙等"状态,CPU利用率低。 |
1.3.2 中断驱动方式
- 引入中断机制。由于I/O设备速度很慢,因此在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待I/O的进程(或其他进程)的运行环境,然后继续执行。
说明 | |
---|---|
完成一次读/写操作的流程 | ![]() |
CPU干预的频率 | 每次I/O操作开始之前、完成之后需要CPU介入 。 等待I/O完成的过程中CPU可以切换到别的进程执行。 |
数据传送的单位 | 每次读/写一个字 |
数据的流向 | 读操作(数据输入):I/O设备→CPU→内存 写操作(数据输出):内存→CPU→I/O设备 |
主要缺点和主要优点 | 优点:与"程序直接控制方式"相比,在"中断驱动方式"中,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停地轮询。 CPU和I/O设备可并行工作,CPU利用率得到明显提升。 缺点:每个在I/O设备和内存之间的传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间。 |
1.3.3 DMA方式

内容 | 说明 |
---|---|
完成一次读/写操作的流程 | ![]() |
CPU干预的频率 | 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。 |
数据传送的单位 | 每次读/写一个或多个块(注意:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的) |
数据的流向 | 读操作(数据输入):I/O设备→内存 写操作(数据输出):内存→I/O设备 |
主要缺点和主要优点 | 优点:数据传输以"块"为单位,CPU介入频率进一步降低。数据的传输不再需要先经过CPU再写入内存,数据传输效率进一步提升。CPU和I/O设备的并行性得到提升。 |
1.3.4 通道控制方式

内容 | 说明 |
---|---|
完成一次读/写操作的流程 | ![]() |
CPU干预的频率 | 极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预。 |
数据传送的单位 | 每次读/写一组数据块 |
数据的流向(在通道的控制下进行) | 读操作(数据输入):I/O设备→内存 写操作(数据输出):内存→I/O设备 |
主要缺点和主要优点 | 缺点:实现复杂,需要专门的通道硬件支持 优点:CPU、通道、I/O设备可并行工作,资源利用率很高。 |
完成一次读/写的过程 | CPU干预频率 | 每次 I/O 的数据传输单位 | 数据流向 | 优缺点 |
---|---|---|---|---|
程序直接控制方式 | CPU发出I/O命令后需要不断轮询 | 极高 | 字 | 设备→CPU→内存内存→CPU→设备 |
中断驱动方式 | CPU发出I/O命令后可以做其他事,本次I/O完成后设备控制器发出中断信号 | 高 | 字 | 设备→CPU→内存内存→CPU→设备 |
DMA方式 | CPU发出I/O命令后可以做其他事,本次I/O完成后DMA控制器发出中断信号 | 中 | 块 | 设备→内存内存→设备 |
通道控制方式 | CPU发出I/O命令后可以做其他事。通道会执行通道程序以完成I/O,完成后通道向CPU发出中断信号 | 低 | 一组块 | 设备→内存内存→设备 |
二、I/O软件层次结构

2.1 用户层软件(假脱机技术SPOOLing)

- "假脱机技术",又称"SPOOLing技术"是用软件的方式模拟脱机技术。
- 当多个用户进程提出输出打印的请求时,系统会答应它们的请求,但是并不是真正把打印机分配给他们,而是由假脱机管理进程为每个进程做两件事:
- 在磁盘输出井中为进程申请一个空闲缓冲区(也就是说,这个缓冲区是在磁盘上的),并将要打印的数据送入其中;
- 为用户进程申请一张空白的打印请求表,并将用户的打印请求填入表中(其实就是用来说明用户
的打印数据存放位置等信息的),再将该表挂到假脱机文件队列上。
- 当打印机空闲时,输出进程会从文件队列的队头取出一张打印请求表,并根据表中的要求将要打印的数据从输出井传送到输出缓冲区,再输出到打印机进行打印。用这种方式可依次处理完全部的打印任务
- 虽然系统中只有一个台打印机,但每个进程提出打印请求时,系统都会为在输出井中为其分配一个存储区 (相当于分配了一个逻辑设备),使每个用户进程都觉得自己在独占一台打印机,从而实现对打印机的共享。
2.2 设备独立性软件(I/O调度和设备保护)

-
I/O调度:用某种算法确定一个好的顺序来处理各个1/O请求。
-
设备保护:设备被看做是一种特殊的文件,每个设备也会有对应的FCB。当用户请求访问某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限,以此实现"设备保护"的功能。
2.3 设备驱动程序

2.4 中断处理程序

三、磁盘
3.1 磁盘的结构

- 可用(柱面号,盘面号,扇区号 )来定位任意一个"磁盘块"。
①根据"柱面号"移动磁臂,让磁头指向指定柱面;
②激活指定盘面对应的磁头;
③磁盘旋转的过程中,指定的扇区会从磁头下面划过,这样就完成了对指定扇区的读/写。
3.2 磁盘调度算法
3.2.1 先来先服务FCFS
- 根据进程请求访问磁盘的先后顺序进行调度。
- 优点:公平
- 缺点:如果有大量进程竞争使用磁盘,请求访问的磁道很分散,则FCFS在性能上很差,寻道时间长
3.2.2 最短寻找时间优先SSTF
- SSTF算法会优先处理的磁道是与当前磁头最近的磁道。可以保证每次的寻道时间最短,但是并不能保证总的寻道时间最短。(其实就是贪心算法的思想,只是选择眼前最优,但是总体未必最优)
- 优点:性能较好,平均寻道时间短
- 缺点:可能产生"饥饿"现象
3.2.3 扫描算法SCAN
只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动 。这就是扫描算法(SCAN)的思想。由于磁头移动的方式很像电梯,因此也叫电梯算法。
3.2.4 LOOK调度
扫描算法(SCAN)中,只有到达最边上的磁道时才能改变磁头移动方向,事实上,处理了184号磁道的访问请求之后就不需要再往右移动磁头了。LOOK调度算法就是为了解决这个问题**,如果在磁头移动方向上已经没有别的请求,就可以立即改变磁头移动方向**。(边移动边观察,因此叫LOOK)
3.3 减少磁盘延迟时间的方法

