Skip to content

第11讲 设备管理(1)

1. 设备管理概述

设备无关性:在设备和系统的其他部分之间提供简单且易于使用的接口,并且该接口对于所有设备应该是相同的。用户在编制程序时,使用逻辑设备名,由系统实现从逻辑设备到物理设备(实际设备)的转换。

设备管理的特点:CPU 与 I/O 设备的速度差别大,I/O 的性能经常成为系统性能的瓶颈。资源多、杂,并发,均来自 I/O。

设备管理的任务:

  1. 按照用户的请求,控制设备的各种操作,完成 I/O 设备与内存之间的数据交换(包括设备分配与回收、设备驱动程序、设备中断处理、缓冲区管理),最终完成用户的 I/O 请求。
  2. 向用户提供使用外部设备的方便接口,使用户摆脱繁琐的编程负担。
  3. 充分利用各种技术(通道,中断,缓冲等)提高 CPU 与设备、设备与设备之间的并行工作能力,充分利用资源,提高资源利用率。
  4. 保证在多道程序环境下,当多个进程竞争使用设备时,按一定策略分配和管理各种设备,使系统能有条不紊的工作。
  5. 保护:设备传送或管理的数据应该是安全的、不被破坏的、保密的。
  6. 设备无关性(设备独立性):用户在编制程序时,使用逻辑设备名,由系统实现从逻辑设备到物理设备(实际设备)的转换。用户能独立于具体物理设备而方便的使用设备。

2. I/O 硬件组成原理

2.1 I/O 设备的分类

  1. 按数据组织分类:
    • 字符设备:以字符为单位进行传输的设备,如键盘、鼠标、打印机等。
    • 块设备:以数据块为单位进行传输的设备,如硬盘、光盘等。
    • 有些设备既不是块设备,也不是字符设备,如时钟。
  2. 按功能特性:存储型设备,输入输出型设备,数据通信设备。
  3. 按资源分配:独占设备(一般为低速设备,如打印机、磁带)、共享设备(如硬盘)。

2.2 I/O 设备组成

一般由机械和电子两部分组成:机械部分是设备本身(物理装置),电子部分是设备控制器(Device Controller)或适配器(Adapter)

设备控制器用于实现设备与主机间的连接和通信。设备控制器与主机之间通过标准总线相连接,设备控制器与设备之间的接口一般是私有的。通过设备控制器中的若干接口寄存器或接口缓冲区与 CPU 通信。

设备控制器有几个寄存器用来与 CPU 进行通信:控制寄存器,状态寄存器,数据缓冲区。操作系统将命令写入设备控制器的控制寄存器(或数据缓冲区)中,实现输入/输出,并从状态寄存器(或数据缓冲区)读取状态信息或结果信息。

当控制器接受一条命令后,可独立于 CPU 完成指定操作,CPU 可以转去执行其它运算。命令完成时,控制器产生一个中断,CPU 响应中断,控制转给操作系统。操作系统通过读设备控制器的状态寄存器中的信息,获得操作结果和设备状态。

2.3 I/O 端口编址

I/O 独立编址(I/O 专用指令):每个寄存器被分配一个 I/O 端口号,分配给系统中所有端口的地址空间是完全独立的,与内存的地址空间没有关系。主机使用专门的 I/O 指令对端口进行操作。

内存映射编址(内存映射 I/O 模式):分配给系统中所有端口的地址空间与内存的地址空间统一编址。主机把 I/O 端口看作一个存储单元,对 I/O 的读写操作等同于对存储器的操作。大部分处理器采用内存映射 I/O。

混合方案:数据缓冲区使用内存映射编址,而控制/状态寄存器则具有单独的 I/O 端口。PC 机采用 I/O 混合编址方案。

2.4 I/O 控制方式

注意:I/O 控制由 CPU 完成,而 I/O 操作由设备控制器完成。

程序驱动 I/O:也叫直接 I/O 或轮询。由 CPU 负责在机器内存与设备控制器数据寄存器之间进行数据传送。

在 I/O 操作之前,设备驱动程序循环检测设备是否就绪,如果空闲,就向控制器发送指令启动此次 I/O 操作,操作进行过程中也要循环检测设备状态,判断是否完成。


中断驱动 I/O:中断控制器向 CPU 发出中断信号的同时,在地址总线上放置一个数字,表明哪个设备需要关注。中断信号导致 CPU 暂停当前工作。地址总线上的数字被用作指向中断向量表的索引。中断向量表中存放中断服务程序的入口地址。

在中断服务程序开始前,硬件必须保存一定的信息。最低限度要保存被中断的进程的程序计数器的值,另一个极端是保存所有寄存器的值。

流水线和超标量对中断处理的影响:在流水线满的时候,当中断出现时,程序计数器的值可能无法正确反映已经执行过的指令和尚未执行的指令之间的边界。在超标量计算机上,因为指令可能乱序执行,所以在已经执行过的指令和尚未执行的指令之间可能并不存在明确的边界。


DMA(Direct Memory Access 直接内存访问):数据在内存与 I/O 设备间的直接成块传送。CPU 在开始时向设备发“传送一块”命令,结束时进行相应处理,实际操作由 DMA 控制器硬件直接完成。DMA 的功能可以以独立的 DMA 部件在系统 I/O 总线上完成,也可整合到 I/O 部件中完成。 DMA 控制器能够通过系统总线代替 CPU 管理数据的存入或取出。

DMA 可以继承在设备控制器中,也可以集成在主板上。DMA 控制器的特点是能够独立与 CPU,直接访问内存总线,代替 CPU 完成 I/O 设备与内存之间的数据传送,为 CPU 腾出更多时间。

采用 DMA 方式时,允许 DMA 控制器接管地址线的控制权,直接控制 DMA 控制器与内存的数据交换。从而使磁盘设备与存储器之间的数据传送不需要CPU介入,因而减轻了CPU负担。采用 DMA 时,除向控制器提供要读块的磁盘地址外,还要向控制器提供两个信息:要读块送往内存的起始地址、要传送的字节数。

当 DMA 硬件控制磁盘与存储器之间进行信息交换时,每当磁盘把一个数据读入控制器的数据缓冲区时,DMA 控制器取代 CPU,接管地址总线的控制权,并按照 DMA 控制器中的存储器地址寄存器内容把数据送入相应的内存单元中。然后,DMA 硬件自动地把传送字节计数器减1,把存储器地址寄存器加1,并恢复 CPU 对内存的控制权,DMA 控制器对每一个传送的数据重复上述过程,直到传送字节计数器为“0”时,向 CPU 产生一个中断信号。当操作系统接管 CPU 控制权时,无需再做块复制的工作。

DMA方式与中断的主要区别

  1. 中断方式是在数据缓冲寄存区满后,发中断请求,CPU 进行中断处理。
  2. DMA 方式是在所要求传送的数据块全部传送结束时要求 CPU 进行中断处理。大大减少了 CPU 进行中断处理的次数。
  3. 中断方式的数据传送是由 CPU 控制完成的。
  4. DMA 方式是在 DMA 控制器的控制下不经过 CPU 控制完成的。

通道:又称为输入输出处理器、I/O 处理。功能是完成主存和外围设备间的信息传送,与 CPU 并行地执行操作。工作特点:实现外围设备和 CPU 能并行操作;通道和通道之间能并行操作;各通道上的外围设备并行操作,提高整个系统效率。通道技术解决了 I/O 操作的独立性和各部件工作的并行性。把 CPU 从琐碎的 I/O 操作中解放出来。是计算机技术的一个重要进步。


I/O 操作过程:

  1. 启动 I/O 操作:CPU 在执行主程序时遇到 I/O 请求,它启动指定通道上选址的外围设备,一旦启动成功,通道开始控制外围设备进行操作。之后 CPU 就可执行其他任务并与通道并行工作。
  2. 结束 I/O 操作:I/O 通道 I/O 操作完成后,发出操作结束中断,CPU 才停止当前工作,转向处理 I/O 操作结束事件。

按照信息交换方式和连接设备不同,通道可以分为三种类型:

  1. 字节多路通道:通道同时为多个低速 I/O 设备(软盘、纸带、磁带机等)服务。
  2. 选择通道:通道分时地为各个高速 I/O 设备(磁盘、磁带机等)服务。
  3. 数组多路通道:通道同时地为多个像磁盘机(移臂时间长)一样的 I/O 设备服务。

3. I/O 软件技术

设备独立性:用户或程序员可以访问任何 I/O 设备而无需事先指定设备。例如,命令 sort <input >output 无论输入来自软盘、硬盘或者键盘,输出送往任意类型的磁盘或屏幕,都可以正常工作。其处理由操作系统负责。

统一命名:对输入输出设备采用与文件统一的命名方式,所有文件和设备都使用相同的方式——通过路径名进行寻址。例如,在 UNIX 系统中,类似 /dev/tty00 这样的文件名代表一个设备。

错误处理。

同步和异步传输:同步传输为阻塞式传输,异步传输为非阻塞式(中断驱动)传输。大多数物理 I/O 是异步的,但是阻塞式 I/O 使用户程序更加容易编写。操作系统使得实际上是中断驱动的 I/O ,变为在用户看来是阻塞式的操作。

缓冲技术:CPU 和 I/O 设备的速度差异明显,因此必须缓冲。有单缓冲和多缓冲。

共享设备与独占设备:独占设备每次只能分配给一个进程使用,隐含死锁的必要条件,所以在考虑独占设备的分配时,要结合防止和避免死锁的安全算法。共享设备是可由若干个进程同时共享的设备,例如磁盘机。

SPOOLing(Simultaneous Peripheral Operation On Line 假脱机技术)用共享设备来模拟独占设备,把一个独占设备转变为具有共享特征的虚拟设备,从而提高系统效率和设备利用率。

4. I/O 软件层次

各个层次:

  1. 用户进程层:执行输入输出系统调用,对 I/O 数据进行格式化,为假脱机输入/输出作准备。
  2. 与设备无关的 I/O 软件:实现设备的命名、设备的保护、成块处理、缓冲技术和设备分配。
  3. 设备驱动程序:设置设备寄存器、检查设备的执行状态。
  4. 中断处理程序:负责 I/O 完成时,唤醒设备驱动程序进程,进行中断处理。
  5. 硬件层:实现物理 I/O 的操作。

Comments