《Linux操作系统原理分析之设备管理》(28)
- 9 设备管理
- 9.1 设备与设备管理
- 9.1.1 设备的分类
- 9.2 I/O 控制方式
- 9.2.1CPU 控制方式
- 9.2.2 通道控制方式
- 9.3 缓冲技术
- 9.3.1 缓冲技术的引进
- 9.3.2 缓冲的种类
- 9.4 设备的分配
- 9.4.1 设备管理的数据结构
- 9.4.2 设备分配策略
- 9.4.3 设备分配算法
- 9.5 设备处理程序与 I/O 进程
- 9.5.1 设备处理程序
- 9.5.2 I/O 进程
9 设备管理
9.1 设备与设备管理
9.1.1 设备的分类
按从属关系分:
设备种类 | 说明 |
---|---|
系统设备 | Os 生成时已登记在系统中的标准设备,如键盘、显示器等。 |
用户设备 | Os 生成时未登记在系统中的标准设备,如绘图仪、扫描仪等。 |
按设备的资源属性分
设备种类 | 说明 |
---|---|
独占设备 | 打印机(大多数低速设备) |
共享设备 | 磁盘 |
虚拟设备 | 独占设备——>共享设备 |
虚拟设备:指通过虚拟技术将一台独占设备变换为若干台逻辑设备,供若干用户进程同时使用。通常把这种经过虚拟技术处理后的设备称为虚拟设备。例如SPOOLING技术.
9.2 I/O 控制方式
9.2.1CPU 控制方式
-
程序直接控制方式——CPU 一直对 I/O 控制干预
-
中断控制方式——CPU 以字节为单位对 I/O 控制干预
-
DMA 方式——CPU 以一组数据块干预 I/O 控制
DMA 方式又称直接存取(Direct Memory Access)方式。其基本思想是在外围设备和内存之间开辟直接的数据交换通道。在 DMA 方式中I/O 控制器具有比中断方式和程序直接控制方式更强的功能。另外除控制状态寄存器和数据缓冲寄存器之外,DMA 控制器中还包括传送字节计数器、内存地址寄存4器等。这是因为 DMA 方式窃取或挪用 CPU 的一个工作周期把数据缓冲寄存器中的数据直接送到内存
地址寄存器所指向的内存区域中的缘故
9.2.2 通道控制方式
-
I/O 通道:一种硬件机制,指专门用于 I/O 工作的处理机,它由自己的简单的与 I/O 操作相关的指令系统,如数据传输、设备控制等。通道执行的程序为通道程序。
-
通道方式的处理过程 通道方式的处理过程:CPU 向通道发出一条 I/O 指令,通道接收到指令后,从内存中取出本次要执行的通道程序,然后执行该通道程序,仅当通道完成了规定的 I/O 任务后,才向 CPU 发出中断信号(可以提高 CPU 与 I/O 的并行处理能力)
- 通道的分类,按信息交换的方式,分为三类:
a.字节多路通道(中低速)(分时):字节为单位
b.数据选择通道(高速) :块为单位
c.数组多路通道(高中速)(分时):块为单位
- 瓶颈问题
引起原因——通道不足
措施:
a. 提高 I/O 设备的独立性,以减少占用通道的时间,提高 I/O 设备的独立性,最常用的方法是在设备和控制器增设缓冲
b. 增加通路,增加设备道主机之间的通路,是解决“瓶颈”问题的最有效的方法,即可把一个设备连到多个控制器上,而一个控制器又被连到多个通道上。如下图:
9.3 缓冲技术
9.3.1 缓冲技术的引进
1、 CPU 与 I/O 设备间速度不匹配
2、 减少 CPU 的中断频率
(防止每接收一次数据就中断一次,将数据先放到换冲区内,待满时,再中断 CPU,显然减少了中断次数)
3、 提高 CPU 和 I/O 设备的并行性
(例如:打印机工作时,CPU 继续进行计算工作)
9.3.2 缓冲的种类
-
缓冲的实现方式
1)硬件方式
一般是采用专用硬件缓冲器,如 I/O 控制器中的数据缓冲寄存器等。(成本比较高,除关键部件外,一般不采用);
2)软件方式
在内存中开辟出一个具有 N 个单元的专用缓冲区,以便存放输入输出数据。操作系统为每一个缓冲区建立一个数据结构,称为缓存控制块 BCB(buffer control block)。操作系统通过 BCB 对每一个缓存实施具体的管理。 -
缓冲的使用方式 缓冲的使用方式
👉专用缓冲:为某设备/进程专门设置的
👉公用缓冲:为所有的设备/进程设置的,为所有的设备/进程所共享 -
缓冲的组织方式
👉单缓冲
👉双缓冲
👉循环缓冲
👉缓冲池:
9.4 设备的分配
9.4.1 设备管理的数据结构
1. 设备控制表 DCT
2. 控制器控制表 COCT
3. 通道控制表 CHCT
4. 系统设备表 SDT:记录已被连接到系统中的所有物理设备的情况,每个物理设备占一个表目。
9.4.2 设备分配策略
- 独占分配方式
- 共享分配方式(同时分配给多个作业使用,很复杂)
- 虚拟分配方式
虚拟技术 SPOOLING 技术:又称假脱机 I/O 操作,是对脱机输入输出工作的模拟,它需要缓冲技术支持并必须有高速、大容量且可随机存取的外存支持。可将一个独占设备虚拟成多台设备。
9.4.3 设备分配算法
1.先请求先服务(FCFS)
2.优先级高者优先
9.5 设备处理程序与 I/O 进程
设备处理程序包括驱动程序和 I/O 中断处理程序。I/O 处理程序通常是由 I/O 进程完成的。
9.5.1 设备处理程序
设备处理程序是负责直接控制设备完成实际的 I/O 操作的程序,设备驱动程序直接和硬件设备打交道。设备驱动程序包括对设备的各种操作,在操作系统的控制下,cpu 通过执行驱动程序来实现对设备底层硬件设备的处理和操作。
9.5.2 I/O 进程
I/O 进程:为了能够在处理机上执行设备处理程序,当前许多操作系统都设置了专门完成 I/O 操作的进程,属于系统进程。在不同的操作系统中,处理 I/O 操作和配置 I/O 进程的方式不同,大体可以分为三
种:
👉为每一类设备设置一个进程,它专门执行这类设备的 I/O 操作。
👉在整个系统中设置一个 I/O 进程,专门负责对系统中所有各类设备的 I/O 操作。也可以设置一个输入进程和一个输出进程,分别负责处理系统中所有的各类设备的输入或输出操作。
👉系统为每台设备建立一个 I/O 进程,它们分别执行设备各自的处理程序。
当前操作系统多数采用(2)方式。
I/O 进程一般在系统生成时被创建,平时处于睡眠等待状态。I/O 进程在两种情况下被唤醒:
👉当用进程发出设备请求(I/O 请求)。
👉出现 I/O 中断。