5、设备管理篇

厨子大约 9 分钟操作系统设备管理原创面试题技术解析程序员I/O系统

设备管理篇

设备控制器:位于 CPU 和 I/O 之间,其接收来自 CPU 的指令,并控制 I/O 设备。

🌟I/O 控制方式

  1. 程序直接控制方式:向 CPU 和 I/O 设备设备控制器发出命令之后,然后就需要一直检测状态寄存器的值,判断是否结束任务,结束之后再去执行下一个任务。
  2. 中断控制方式:当 CPU 向设备控制器发出启动指令后,则去做其他工作,设备控制器完成任务后,则会发送一个中断指令,告诉他,我已经完成任务了,然后让其继续回来处理任务。但是这样也存在问题,中断过多的话,则会耗费大量 CPU 时间。
  3. DMA 控制方式:数据传输的基本单位是块,然后传输过程是 DMA 控制器直接于内存交换,仅在传送一个或多个块的开始或结束时,才需 CPU 干预。中断控制方式在每个数据传输完之后中断 CPU,DMA 是一批数据全部传输完才进行中断。
  4. 通道控制方式:通道控制方式和 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。这些时钟过去一直占据支配地位。
  • 另外的一种时钟由晶体振荡器、计数器和寄存器组成,示意图如下所示
image-20250602230739328

这种时钟称为 可编程时钟 ,可编程时钟有两种模式,一种是 一键式(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 要求。