5、设备管理篇
设备管理篇
设备控制器:位于 CPU 和 I/O 之间,其接收来自 CPU 的指令,并控制 I/O 设备。
🌟I/O 控制方式
- 程序直接控制方式:向 CPU 和 I/O 设备设备控制器发出命令之后,然后就需要一直检测状态寄存器的值,判断是否结束任务,结束之后再去执行下一个任务。
- 中断控制方式:当 CPU 向设备控制器发出启动指令后,则去做其他工作,设备控制器完成任务后,则会发送一个中断指令,告诉他,我已经完成任务了,然后让其继续回来处理任务。但是这样也存在问题,中断过多的话,则会耗费大量 CPU 时间。
- DMA 控制方式:数据传输的基本单位是块,然后传输过程是 DMA 控制器直接于内存交换,仅在传送一个或多个块的开始或结束时,才需 CPU 干预。中断控制方式在每个数据传输完之后中断 CPU,DMA 是一批数据全部传输完才进行中断。
- 通道控制方式:通道控制方式和 DMA 类似,但是所需要的 CPU 干预更少,我们可以将他理解成一个简单的控制器,代理 CPU 进行处理。
控制方式 | 数据传输单位 | CPU干预频率 | 硬件复杂度 | 主要优点 | 主要缺点 | 典型应用场景 |
程序直接控制 | 字节/字 | 全程参与 | 低 | 实现简单 | CPU利用率极低(忙等待) | 早期嵌入式设备 |
中断控制 | 字节/字 | 每次传输后中断 | 中 | 支持多任务并行 | 高频中断导致CPU开销大 | 鼠标、键盘等低速设备 |
DMA控制 | 数据块 | 整块传输开始/结束时 | 高 | 大幅减少CPU干预 | 需要专用DMA控制器 | 磁盘、网卡等高速设备 |
通道控制 | 数据块组 | 仅需初始化和结束时 | 最高 | 近乎完全解放CPU | 需要复杂通道处理器 | 大型机、高性能存储系统 |
关键特性对比
维度 | 程序直接控制 | 中断控制 | DMA控制 | 通道控制 |
数据流向 | CPU↔设备 | CPU↔设备 | 设备↔内存 | 设备↔内存 |
并行能力 | 无 | 有限 | 较强 | 强 |
硬件成本 | 几乎为零 | 低 | 中等(DMA芯片) | 高(通道处理器) |
传输效率 | 极低 | 低-中 | 高 | 极高 |
典型延迟 | 微秒级 | 毫秒级 | 纳秒级 | 纳秒级 |
I/O 软件的层次结构
I/O 子系统
I/O 核心子系统是设备控制的各类方法,其提供的主要服务就是 I/O调度
,高速缓存与缓冲区
、设备分配与回收
、假脱机
。
I/O调度
:就是确定一个好的顺序来执行 I/O 请求。因为应用程序所发布系统调用顺序不一定总是最佳选择,所以需要通过调度来改善系统的整体性能。主要是通过重新安排任务队列顺序以改善系统总体调用。
引入缓存
:引入缓冲后可以降低设备对 CPU 的中断频率,放宽对中断响应时间的限制。
缓存的分类
- 单缓存
- 双缓存:可以交替使用,提高并行速度
- 循环缓存
假脱机技术
这个是经常用到的,我们系统中有一些独占设备,然后某个进程获得了独占设备的使用权,但是却不经常使用,却又卡着让别人用不了,这就造成了资源的浪费,所以我们将独占设备改造成共享设备,提高利用率。
主要原理是,利用输入缓冲区,输入井,输出缓冲区,输出井来完成。
操作系统中的时钟是什么
时钟(Clocks)
也被称为 定时器(timers)
,时钟/定时器对任何程序系统来说都是必不可少的。时钟负责维护时间、防止一个进程长期占用 CPU 时间等其他功能。时钟软件(clock software)
也是一种设备驱动的方式。下面我们就来对时钟进行介绍,一般都是先讨论硬件再介绍软件,采用由下到上的方式,也是告诉你,底层是最重要的。
时钟硬件
在计算机中有两种类型的时钟,这些时钟与现实生活中使用的时钟完全不一样。
- 比较简单的一种时钟被连接到 110 V 或 220 V 的电源线上,这样每个
电压周期
会产生一个中断,大概是 50 - 60 HZ。这些时钟过去一直占据支配地位。 - 另外的一种时钟由晶体振荡器、计数器和寄存器组成,示意图如下所示

这种时钟称为 可编程时钟
,可编程时钟有两种模式,一种是 一键式(one-shot mode)
,当时钟启动时,会把存储器中的值复制到计数器中,然后,每次晶体的振荡器的脉冲都会使计数器 -1。当计数器变为 0 时,会产生一个中断,并停止工作,直到软件再一次显示启动。还有一种模式是 方波(square-wave mode)
模式,在这种模式下,当计数器变为 0 并产生中断后,存储寄存器的值会自动复制到计数器中,这种周期性的中断称为一个时钟周期。
设备控制器的主要功能
设备控制器是一个 可编址
的设备,当它仅控制一个设备时,它只有一个唯一的设备地址;如果设备控制器控制多个可连接设备时,则应含有多个设备地址,并使每一个设备地址对应一个设备。
设备控制器主要分为两种:字符设备和块设备
设备控制器的主要功能有下面这些
- 接收和识别命令:设备控制器可以接受来自 CPU 的指令,并进行识别。设备控制器内部也会有寄存器,用来存放指令和参数
- 进行数据交换:CPU、控制器和设备之间会进行数据的交换,CPU 通过总线把指令发送给控制器,或从控制器中并行地读出数据;控制器将数据写入指定设备。
- 地址识别:每个硬件设备都有自己的地址,设备控制器能够识别这些不同的地址,来达到控制硬件的目的,此外,为使 CPU 能向寄存器中写入或者读取数据,这些寄存器都应具有唯一的地址。
- 差错检测:设备控制器还具有对设备传递过来的数据进行检测的功能。
什么是 DMA
DMA 的中文名称是 直接内存访问
,它意味着 CPU 授予 I/O 模块权限在不涉及 CPU 的情况下读取或写入内存。也就是 DMA 可以不需要 CPU 的参与。这个过程由称为 DMA 控制器(DMAC)的芯片管理。由于 DMA 设备可以直接在内存之间传输数据,而不是使用 CPU 作为中介,因此可以缓解总线上的拥塞。DMA 通过允许 CPU 执行任务,同时 DMA 系统通过系统和内存总线传输数据来提高系统并发性。
直接内存访问的特点
DMA 方式有如下特点:
- 数据传送以数据块为基本单位
- 所传送的数据从设备直接送入主存,或者从主存直接输出到设备上
- 仅在传送一个或多个数据块的开始和结束时才需 CPU 的干预,而整块数据的传送则是在控制器的控制下完成。
DMA 方式和中断驱动控制方式相比,减少了 CPU 对 I/O 操作的干预,进一步提高了 CPU 与 I/O 设备的并行操作程度。
DMA 方式的线路简单、价格低廉,适合高速设备与主存之间的成批数据传送,小型、微型机中的快速设备均采用这种方式,但其功能较差,不能满足复杂的 I/O 要求。
