Skip to content

I/O 系统基本概念

输入/输出系统

输入/输出是以主机为中心而言的,将信息从外部设备传送到主机称为输入,反之称为输出

输入/输出系统解决的主要问题是对各种形式的信息进行输入和输出的控制

I/O 系统中的几个基本概念如下:

  • 外部设备:包括输入/输出设备通过输入/输出接口才能访问的外存储设备

  • 接口:在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件,包括传输过程中速度的匹配、电平和格式转换等

  • 输入设备:用于向计算机系统输入命令和文本、数据等信息的部件

  • 输出设备:用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件

  • 外存设备:指除计算机内存及 CPU 缓存等外的存储器

I/O 系统的构成

一般来说,I/O 系统由 I/O 软件和 I/O 硬件两部分构成:

  • I/O 软件:包括驱动程序、用户程序、管理程序、升级补丁等

    通常采用 I/O 指令和通道指令实现 CPU 与 I/O 设备的信息交换

    • I/O 指令:一条指令包括操作码、命令码、设备码,是 CPU 的指令,但和通用指令格式不一样

      操作码:说明要进行 I/O 操作;命令码:做什么操作;设备码:对谁操作

    • 通道指令:指出数据的首地址、传送字数、操作命令;通道指令放在内存中,由通道取出执行

      CPU 执行启动 I/O 设备指令,启动通道代替 CPU 对 I/O 设备进行管理

      注意:在具有通道结构的机器中,I/O 指令不实现 I/O 数据传送,主要完成 I/O 设备的和通道的查询与控制

  • I/O 硬件:包括外部设备、设备控制器和接口、I/O 总线等

    外部设备通过设备控制器来控制 I/O 设备的具体动作通过 I/O 接口与主机(总线)相连

    在操作系统中,通常把 I/O 设备和设备控制器合在一起叫做设备控制器

I/O 控制方式

在输入/输出系统中,经常需要进行大量的数据传输,而传输过程中有各种不同的 I/O 控制方式:

  1. 程序查询方式:CPU 启动 I/O 工作后查询等待并传输 I/O 数据

  2. 程序中断方式:启动 I/O 工作后,数据就绪时向 CPU 发出中断请求,CPU 保存状态后传输 I/O 数据

  3. DMA 方式:启动 I/O 工作后,数据就绪时向 CPU 发出 DMA 请求,数据由 DMA 传输,但传输时 CPU 不能访存

  4. 通道方式:CPU 要进行 I/O 操作时,只需启动有关通道,通道将执行通道程序,从而完成 I/O 操作

方式 1 和方式 2 主要用于数据传输率较低的外部设备(会影响 CPU 执行);方式 3 和方式 4 主要用于数据传输率较高的设备

外部设备

*输入设备

键盘

键盘是最常用的输入设备,通过它可发出命令或输入数据

键盘通常以矩阵的形式排列按键,每个键用符号标明其含义和作用

每个键相当于一个开关,按下键时,电信号连通;松开键时,弹簧弹起键,电信号断开

键盘输入信息可分为 3 个步骤:

  1. 查出按下的是哪个键

  2. 将该键翻译成能被主机接收的编码,如 ASCII 码

  3. 将编码传送给主机

鼠标

鼠标是常用的定位输入设备,它把用户的操作与计算机屏幕上的位置信息相联系,常用的鼠标有机械式和光电式两种

工作原理:鼠标在平面上移动时,其底部传感器把运动的方向和距离检测出来,从而控制光标做相应的运动

输出设备

显示器

按显示设备所用的显示器件分类,有阴极射线管显示器、液晶显示器、发光二极管显示器等

按显示信息内容不同,分为字符显示器、图形显示器和图像显示器;按扫描方式不同,分为光栅扫描和随机扫描两种显示器

常用参数

屏幕大小:以对角线长度表示,常用的有 12~29 英寸等

分辨率:所能表示的像素个数,屏幕上的每个光点就是一个像素,以宽和高的像素数的乘积表示

灰度级:指显示器颜色的个数,n 位可以表示 2n 种不同的亮度或颜色,如黑白图是 8 位表示 256 种颜色

刷新:光点在保持极短的时间后消失,必须在光点消失前再重新扫描显示一遍,这个过程称为刷新

刷新频率:指单位时间内扫描整个屏幕内容的次数;通常刷新频率为 60~120Hz,大于 30Hz 时才不会感到闪烁

显示存储器 VRAM:也称刷新存储器,为了不断提高刷新图像的信号,必须把一帧图像信息存储在刷新存储器中

存储容量由图像分辨率和灰度级决定VRAM 容量 = 分辨率 × 灰度级位数VRAM 带宽 = 分辨率 × 灰度级位数 × 帧频

核心结论:VRAM 计算公式 (2025 必备)

  1. 容量 (B) = (H×V×b)/8
  1. 带宽 (B/s) = (H×V×b×f)/8。其中 H,V 为分辨率,b 为颜色位数,f 为刷新率。

阴极射线管 CRT 显示器

CRT 显示器主要由电子枪、偏转线圈、荫罩、高压石墨电极、荧光粉涂层和玻璃外壳 5 部分组成

具有可视角度大、无坏点、色彩还原度高、色度均匀、可调节的多分辨率模式、响应时间极短等目前 LCD 难以超过的优点

  • 字符显示器:显示字符的方法以点阵为基础,点阵是指由 m × n 个点组成的阵列

    点阵存入由 ROM 构成的字符发生器中,在 CRT 进行光栅扫描的过程中,从字符发生器中依次读出某个字符的点阵,按照点阵中 0 和 1 代码的不同控制扫描电子束的开或关,从而在屏幕上显示字符

    对应于每个字符窗口,所需显示字符的 ASCII 代码被存放在视频存储器 VRAM,以备刷新

    注意:字符显示器的 VRAM 是屏幕可显示字符的个数 × 用于表示字符的位数

  • 图形显示器:将所显示图形的一组坐标点和绘图命令组成显示文件存放在缓冲存储器中

    缓存中的显示文件传送给矢量(线段)产生器,产生相应的模拟电压,直接控制电子束在屏幕上的移动

    目前高质量的图形显示器采用随机扫描方式,优点是分辨率高且显示的曲线平滑;缺点是当显示复杂图形时,会有闪烁感

  • 图像显示器:用于显示图像,比上面两个复杂很多

光栅扫描:指一行一行的刷新;随机扫描:只对要显示的区域扫描

液晶显示器 LCD

原理:利用液晶的电光效应,由图像信号电压直接控制薄膜晶体管,再间接控制液晶分子的光学特性来实现图像的显示

特点:体积小、重量轻、省电、无辐射、绿色环保、画面柔和、不伤眼等

LED 发光二极管显示器

原理:通过控制半导体发光二极管来显示文字、图形、图像等各种信息

LCD 是由液态晶体组成的显示屏,而 LED 则是由发光二极管组成的显示屏

与 LCD 相比,LED 显示器在亮度、功耗、可视角度和刷新速率等方面都更具优势

*打印机

打印机是计算机的输出设备之一,用于将计算机的处理结果打印在相关介质上

按工作原理,分为击打式和非击打式;按工作方式,分为点阵打印机、针式打印机、喷墨式打印机、激光打印机等

针式打印机

原理:在联机状态下,主机发出打印命令,经接口、检测和控制电路,间歇驱动纵向送纸和打印头横向移动,同时驱动打印机间歇冲击色带,在纸上打印出所需的内容

特点:针式打印机擅长多层复写打印,实现各种票据或蜡纸等的打印,其工作原理简单,造价低廉,耗材(色带)便宜,但打印分辨率和打印速度不够高

喷墨式打印机

原理:带电的喷墨雾点经过电极偏转后,直接在纸上形成所需字形,彩色喷墨打印机基于三基色原理,即分别喷射 3 种颜色的墨滴,按一定的比例混合出所要求的颜色

特点:打印噪声小,可实现高质量彩色打印,通常打印速度比针式打印机快;但防水性差,高质量打印需要专用打印纸

激光打印机

原理:计算机输出的二进制信息,经过调制后的激光束扫描,在感光鼓上形成潜像,再经过显影、转印和定影,在纸上得到所需的字符或图像

特点:打印质量高、速度快、噪声小、处理能力强;但耗材多、价格较贵、不能复写打印多份,且对纸张的要求高

激光打印机是将激光技术和电子显像技术相结合的产物,感光鼓(也称硒鼓)是激光打印机的核心部件

外存储器

磁盘存储器

所谓磁表面存储,是指把某些磁性材料薄薄地涂在金属铝或塑料表面上作为载磁体来存储信息

磁盘存储器、磁带存储器和磁鼓存储器均属于磁表面存储器

磁表面存储器的优缺点

优点:

  1. 存储容量大,位价格低

  2. 记录介质可重复使用

  3. 记录信息可长期保存而不丢失,甚至可脱机存档

  4. 非破坏性读出,读出时不需要再生

缺点:存取速度慢,机械结构复杂,对工作环境要求较高

磁盘设备的组成

  1. 存储区域:一块硬盘含有若干记录面,每个记录面划分为若干磁道,而每条磁道又划分为若干扇区,扇区(也称块)是磁盘读写的最小单位,即磁盘按块存取

    • 磁头数 Heads:即记录面数一个记录面对应一个磁头,磁头用于读取/写入盘片上记录面的信息

    • 柱面数 Cylinders:硬盘每面盘片上有多少条磁道,不同面有相同的磁道,磁道是一个圆环

    • 扇区数 Sectors:表示每条磁道上有多少个扇区

    2843224-46fb935cd31addbd

  2. 硬盘存储器的组成:硬盘存储器由磁盘驱动器、磁盘控制器和盘片组成

    • 磁盘驱动器:核心部件是磁头组件和盘片组件,温彻斯特盘是一种可移动磁头固定盘片的硬盘存储器

    • 磁盘控制器:硬盘存储器和主机的接口,即电路,主流的标准有 IDE、SCSI、SATA

磁记录原理

原理:磁头和磁性记录介质相对运动时,通过电磁转换完成读/写操作

编码方法:按某种方案,把一连串的二进制信息变换成存储介质磁层中一个磁化翻转状态的序列,并使读/写控制电路容易、可靠地实现转换

磁记录方式:通常采用调频制 FM 和改进型调频制 MFM 的记录方式

磁盘的性能指标

  • 磁盘的容量:磁盘容量有非格式化容量和格式化容量之分

    非格式化容量是指磁记录表面可利用的磁化单元总数,它由道密度和位密度计算而来

    格式化容量是指按照某种特定的记录格式所能存储信息的总量,可能容量没使用充分

    格式化后的容量比非格式化容量要小

  • 记录密度:记录密度是指盘片单位面积上记录的二进制信息量,通常以道密度、位密度和面密度表示

    1. 道密度:沿磁盘半径方向单位长度上的磁道数

    2. 位密度:磁道单位长度上能记录的二进制代码位数,外圈密度小,内圈密度大

    3. 面密度:位密度和道密度的乘积,一个磁道的数据乘以磁道数

  • 平均存取时间:平均存取时间由三部分构成,加起来就是了

    1. 寻道时间:磁头移动到目的磁道的时间

    2. 旋转延迟时间:磁头定位到要读写扇区的时间,取旋转一周时间的一半

    3. 传输时间:传输数据所花费的时间

    由于寻道和找扇区的距离远近不一,因此前两部分通常取平均值

  • 数据传输率:磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输率

    假设磁盘转数为 r 转/秒,每条磁道容量为 N 字节,则数据传输率为 Dr=rN

磁盘地址

若系统中有 4 个驱动器,每个驱动器带一个磁盘,每个磁盘 256 个磁道、16 个盘面,每个盘面划分为 16 个扇区

每个扇区地址要 18 位二进制代码

image-20211028155328795

硬盘的工作过程

硬盘的主要操作是寻址、读盘、写盘;每个操作都对应一个控制字,硬盘工作时,第一步是取控制字,第二步是执行控制字

硬盘属于机械式部件,其读写操作是串行的,不能在同一时刻既读又写,也不能在同一时刻读两组数据或写两组数据

磁盘阵列

RAID(廉价冗余磁盘阵列)是指将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问,具有更好的存储性能、可靠性和安全性

  • RAID 0:无冗余和无校验的磁盘阵列,类似于多模块低位交叉,提高存储容量和读取速度

  • RAID 1:镜像磁盘阵列,如使用两个磁盘进行读写,互为备份

  • RAID 2:采用纠错的海明码的磁盘阵列,这里及下面,使用校验码,当数据出错时进行纠正

  • RAID 3:位交叉奇偶校验的磁盘阵列

  • RAID 4:块交叉奇偶校验的磁盘阵列

  • RAID 5:无独立校验的奇偶校验磁盘阵列

核心结论:RAID 核心对比

  • RAID 0:并行读取,提高速率,无冗余,最快。
  • RAID 1:镜像备份,可靠性高,利用率 50%。
  • RAID 5:奇偶校验位分布在各盘,允许一只盘损坏,常用方案。

RAID 通过同时使用多个磁盘,提高了传输率;通过在多个磁盘上并行存取来大幅提高存储系统的数据吞吐量;通过镜像功能,提高安全可靠性;通过数据校验,提供容错能力

*光盘存储器

光盘存储器是利用光学原理读/写信息的存储装置,它采用聚焦激光束对盘式介质以非接触方式记录信息

完整的光盘存储系统由光盘片、光盘驱动器、光盘控制器和光盘驱动软件组成

光盘片由透明的聚合物基片、铝合金反射层、漆膜保护层的固盘构成

特点:具有存储密度高、携带方便、成本低、容量大、存储期限长和容易保存等优点

光盘的类型如下:

  • CD-ROM:只读型光盘,只能读出其中的内容,不能写入或修改

  • CD-R:只可写入一次信息,之后不可修改

  • CD-RW:可读可写光盘,可以重复读写

  • DVD-ROM:高容量的 CD-ROM,DVD 表示通用数字化多功能光盘

固态硬盘

微小型高档笔记本计算机采用高性能 Flash Memory 作为硬盘来记录数据,这种硬盘称固态硬盘

固态硬盘除需要 Flash Memory 外,还需要其他硬件和软件的支持,是只读存储器

综合应用题

题目:硬磁盘共有 4 个记录面,存储区域内半径为 10cm,外半径为 15.5cm,道密度为 60 道/cm,外层位密度为 600bit/cm,转速为 6000 转/分

  1. 硬磁盘的磁道总数是多少?

  2. 硬磁盘的容量是多少?

  3. 将长度超过一个磁道容量的文件记录在同一个柱面上是否合理?

  4. 假定每个扇区的容量为 512B,每个磁道有 12 个扇区,寻道的平均等待时间为 10.5ms,试计算磁盘平均存取时间

解答:

  1. 磁道总数:60 × (15.5cm - 15cm) × 4 = 1320

  2. 外磁道长度:3.14 × 15.5cm × 2 = 97.34cm

    到磁道信息量:600bit/cm × 97.34cm = 7300.5B = 7300B,磁道不能放 0.5B

    总量为:7300B × 1320 = 963600B

  3. 合理,一位不需要重新寻找磁道,读写速度变快了

  4. 找磁道时间:60s / 6000转 = 10ms,取平均得 5ms

    扫过一个扇区时间:10ms / 12 = 0.83ms

    磁盘平均存取时间:10.5ms + 5ms + 0.83ms = 16.33ms

I/O 接口

I/O 接口(I/O 控制器)是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换

主机和外设具有各自的工作特点,它们在信息形式和工作速度上具有很大的差异,接口正是为了解决这些差异而设置的

I/O 接口的功能

I/O 接口的主要功能如下:

  1. 实现主机和外设的通信联络控制:解决主机与外设时序配合问题,协调不同工作速度的外设和主机之间交换信息

  2. 进行地址译码和设备选择:CPU 送来选择外设的地址码后,接口告诉主机自己是否被选中

  3. 实现数据缓冲:解决 CPU 与外设之间的速度不匹配问题,以避免因速度不一致而丢失数据

  4. 信号格式的转换:外设与主机两者的电平、数据格式都会有差异,接口应提供计算机与外设的信号格式的转换功能

  5. 传送控制命令和状态信息:

    CPU 要启动某一外设时:

    • 通过接口中的命令寄存器向外设发出启动命令

    • 外设准备就绪时,则将**“准备好”状态信息送回接口中的状态寄存器**,并反馈给 CPU

    外设向 CPU 提出中断请求时,CPU 也应有相应的响应信号反馈给外设

思考:I/O 设备执行完命令(准备就绪)后向 I/O 数据线上发送中断信息,CPU 执行完一条指令后检查 I/O 数据线信号,如果发生中断就进入中断周期,然后根据中断码执行相应的程序把 I/O 设备的数据进行处理

I/O 接口的基本结构

I/O 接口在主机侧通过 I/O 总线与内存、CPU 相连

通过数据总线,在数据缓冲寄存器内存或 CPU 的寄存器之间进行数据传送

同时接口和设备的状态信息被记录在状态寄存器中,通过数据线将状态信息送到 CPU

CPU 对外设的控制命令也通过数据线传送,一般将其送到 I\O 接口的控制寄存器

状态寄存器和控制寄存器在传送方向上是相反的,它们可以是两个寄存器,也可以是一个寄存器

image-20211028190040751

地址线和控制线的作用:

  • 接口中的地址线用于给出要访问的 I/O 接口中的寄存器的地址,用以选择和主机交换信息的寄存器

  • 同时控制线传送来读/写信号确认是读还是写寄存器,此外控制线还会传送一些仲裁信号和握手信号

接口对命令的处理:

  • 将命令写入控制寄存器后,接口中的 I/O 控制逻辑会对其内的命令字进行译码

  • 将译码得到的控制信号通过外设界面控制逻辑送到外设

  • 同时将数据缓冲寄存器的数据发送到外设,或从外设接收数据到数据缓冲寄存器

  • 另外,它还会收集外设状态到状态寄存器

对数据缓冲寄存器、状态/控制寄存器的访问操作是通过相应的指令来完成的,通常称这类指令为 I/O 指令

I/O 指令只能在操作系统内核的底层 I/O 软件中使用,它们是一种特权指令

思考:CPU 根据端口对接口的寄存器进行读写,然后接口根据寄存器的内容进行解析并给外设发出命令

I/O 接口的类型

从不同的角度看,I/O接口可以分为不同的类型:

  1. 按数据传送方式可分为并行接口和串行接口,接口要完成数据格式的转换

    注意:这里指的是外设和接口一侧的传送方式,而在主机和接口一侧,数据总是并行传送的

  2. 按主机访问 I/O 设备的控制方式可分为程序查询接口、中断接口和 DMA 接口

  3. 按功能选择的灵活性可分为可编程接口和不可编程接口

I/O 端口及其编址

I/O 端口是指接口电路中可被 CPU 直接访问的寄存器,主要有数据端口、状态端口和控制端口,若干端口加上相应的控制逻辑电路组成接口

CPU 能对数据端口执行读写操作,但对状态端口只能执行读操作,对控制端口只能执行写操作

I/O 端口要想能够被 CPU 访问,就必须要对各个端口进行编号,每个端口对应一个端口地址

  • 统一编址,存储器映射方式:是指把 I/O 端口当作存储器的单元进行地址分配,用访存指令就可以访问 I/O 端口

    其对应的 I/O 地址要求固定在地址的某个部分,可以前面、中间、后面,但是要固定

    优点:不需要专门的 I/O 指令,可使 CPU 访问 I/O 的操作更灵活、更方便,还可使端口有较大的编址空间

    缺点:端口占用存储器地址,使内存容量变小而且利用存储器编址的 I/O 设备进行数据输入/输出操作,执行速度较慢

  • 独立编址,I/O 映射方式:I/O 端口的地址空间与主存地址空间是两个独立的地址空间

    无法从地址码的形式上区分,需要设置专门的 I/O 指令来访问 I/O 端口

    优点:输入/输出指令与存储器指令有明显区别,程序编制清晰,便于理解

    缺点:I/O 指令功能少,一般只能对端口进行传送操作;需要 CPU 提供存储器读/写、I/O 设备读/写两组控制信号,增加了控制的复杂性

I/O 方式

程序查询方式

信息交换的控制完全由主机执行程序实现,主机进行 I/O 操作时,根据读取设备的状态决定进行数据传送还是等待

程序查询方式的工作流程如下:

  1. CPU 执行初始化程序,并预置传送参数

  2. 向 I/O 接口发出命令字,启动 I/O 设备

  3. 从外设接口读取其状态信息

  4. CPU 不断查询 I/O 设备状态,直到外设准备就绪

  5. 传送一次数据

  6. 修改地址和计数器参数

  7. 判断传送是否结束,若未结束转第 3 步,直到计数器为 0

image-20211029145846405

在这种控制方式下,CPU一旦启动 I/O,就必须停止现行程序的运行,并在现行程序中插入一段程序

程序查询方式的主要特点是 CPU 有踏步等待现象,CPU 与 I/O 串行工作

优点:接口设计简单、设备量少;缺点:CPU 花费时间来查询和等待一段时间内只能和一台外设交换信息,效率大大降低

程序中断方式

现代计算机系统中都配有完善的异常和中断处理系统,CPU 的数据通路中有相应的异常和中断的检测和响应逻辑

在外设接口中有相应的中断请求和控制逻辑,操作系统中有相应的中断服务程序

异常和中断

异常

异常是指由 CPU 内部异常引起的意外事件,分为硬故障中断和程序性异常

  • 硬故障中断:由硬连线出现异常引起的;如电源掉电、存储器线路错等

  • 程序性异常:也称软中断,是指在 CPU 内部因执行指令而引起的异常事件;如整除 0、溢出、断点、单步跟踪、非法指令、栈溢出、地址越界、缺页、分时系统中的时间片中断、用户态到核心态的切换等

按发生异常的报告方式和返回方式不同,内部异常可分为故障(Fault)、自陷(Trap)和终止(Abort)三类:

故障 Fault

指在引起故障等指令启动后、执行结束前,被检测到的异常事件,分为可恢复异常和不可恢复异常

  • 对于缺段、缺页等异常:将所需的段或页面调入主存后,可回到发生故障的指令继续执行,断点为当前发生故障的指令

  • 对于非法操作码、除数为 0 等异常:无法通过异常处理程序恢复故障,因此不能回到原断点执行,必须终止进程的执行

自陷 Trap

自陷也称陷阱或陷入,它是预先安排的一种异常事件,就像预先设定的陷阱一样

自陷可以看作是为程序员提供的程序,并提供特定的指令去调用,执行完返回自陷指令的下一条指令执行

注意:当自陷指令是转移指令时,并不是返回到下一条指令执行,而是返回到转移目标指令执行

程序调试的断点设置、系统调用指令、条件自陷指令等都属于陷阱指令,执行到这些指令时,无条件或有条件地自动调出操作系统内核程序进行执行

终止 Abort

如果在执行指令的过程中发生了使计算机无法继续执行的硬件故障,如电源掉电、线路故障等

那么程序将无法继续执行,只能终止,此时,调出中断服务程序来重启系统

这种异常与故障和自陷不同,不是由特定指令产生的,而是随机发生的

核心结论:内中断(异常)细分表

| 类别 | 原因 | 返回行为 | 示例 |

| :--- | :--- | :--- | :--- |

| 故障 (Fault) | 指令执行异常 | 返回当前指令 (重新执行) | 缺页、地址越界 |

| 自陷 (Trap) | 预定事件/指令 | 返回下一条指令 | 系统调用、断点 |

| 终止 (Abort) | 硬件故障 | 无法返回 | 电源掉电 |

外部中断

外中断是指来自 CPU 外部、与 CPU 执行指令无关的事件引起的中断,包括 I/O 设备发出的 I/O 中断,外部信号中断,以及各种定时器引起的时钟中断等;外中断在狭义上一般称为中断,若未说明,一般是指外中断

考点追踪:外部中断事件判定(2009, 2020)

  1. 属于外部中断:键盘输入、定时器到时、网络数据包从网卡到达、DMA 传送结束信号。
  1. 属于内部异常:除 0、非法指令、地址越界、访存缺页(2009/2020 高频混淆项,它是指令执行过程中发生的,属于异常)。

外中断和内部异常在本质上是一样的,但它们之间有以下两个重要的不同点:

  1. 缺页或溢出等异常事件是由特定指令在执行过程中产生的外中断不和任何指令相关联,也不阻止任何指令的完成

  2. 异常的检测是由 CPU 自身完成的,不必通过外部的某个信号通知 CPU;对于中断,CPU 必须通过总线获取中断源的标识信息,才能获知哪个设备发生了何种中断

有些教材也将异常和中断统称为中断,将由 CPU 内部产生的异常称为内中断,将通过中断请求线 INTRNMI 从 CPU 外部发出的中断请求称为外中断

中断的基本概念

程序中断指:在执行程序工程中,出现急需处理的异常或特殊请求,就暂停程序处理请求,处理完后再返回断点执行原程序

程序中断的作用如下:

  1. 实现 CPU 与 I/O 设备的并行工作

  2. 处理硬件故障和软件错误

  3. 实现人机交互,用户干预机器需要用到中断系统

  4. 实现多道程序、分时操作,多道程序的切换需借助于中断系统

  5. 实时处理需要借助中断系统来实现快速响应

  6. 实现应用程序和操作系统(管态程序)的切换,称为软中断

  7. 多处理器系统中各处理器之间的信息交流和任务切换

程序中断方式的思想:

  1. CPU 在程序中安排好于某个时刻启动某台外设后继续执行原来的程序,不用一直等待外设准备就绪

  2. 一旦外设完成数据传送的准备工作,就主动向 CPU 发出中断请求,请求 CPU 为自己服务

  3. 在可以响应中断的条件下,CPU 暂时中止正在执行的程序,转去执行中断服务程序为外设服务

  4. 在中断服务程序中完成一次主机与外设之间的数据传送,传送完成后,CPU 返回原来的程序

image-20211029165250647

思考:外设把数据准备好后,放到接口的数据寄存器中,然后发中断通知 CPU 取数据,可能为:

  • 自己继续准备数据,如果自己再次准备好数据后 CPU 还没有取走数据,那么会把接口的数据寄存器的原数据覆盖了

  • 等 CPU 响应中断了,自己再继续准备数据,与 CPU 执行中断服务程序并行,这样不会覆盖原数据,但会比上面慢

程序中断方式工作流程

中断请求

中断源是请求 CPU 中断的设备或事件,一台计算机允许有多个中断源,每个中断源向 CPU 发出中断请求的时间是随机的

中断系统需对每个中断源设置中断请求标记触发器 INTR,当其状态为 1 时,表示中断源有请求

这些触发器可组成中断请求标记寄存器,该寄存器可集中在 CPU 中,也可分散在各个中断源中

内中断皆为不可屏蔽中断,而外中段要根据发出的信号线而定:

  • 通过 INTR 信号线发出的外中断是可屏蔽中断,在关中断 (IF=1) 的情况下才会被响应

  • 通过 NMI 信号发出的外中断是不可屏蔽中断,即使在关中断 (IF=0) 的情况下也会被响应

不可屏蔽中断的处理优先级最高,任何时候发生不可屏蔽中断,都要中止现行程序的执行,转到不可屏蔽中断处理程序执行

中断分类

  1. 重新启动中断:这是为操作人员重新启动一个程序用的,在一般情况下,处理机不能禁止这类中断

  2. 机器检验错中断:当发生硬件或软件故障时发生机器校验错中断

    包括有电源故障、运算器误动作、主存储器校验错、输入输出通道硬件故障、处理机的其它各种故障等

  3. 程序性错误引起的中断:执行指令中出现错误

    主要包括指令或数据格式错误,在程序执行过程中出现非法操作码、主存保护错误、地址越界错误、各种运算溢出错误、除数为零错误、有效位为零错误、用户态下使用管态指令错误等

  4. 访问管理程序中断:当用户程序要调用管理程序时,执行访管指令引起的中断,处理机一般不能禁止这类中断

  5. 外部事件中断:与 CPU 执行指令无关的事件引起的中断,包括各种用于记时、记费、控制的定时器中断

  6. 输入输出中断:用于处理机管理各种外围设备,管理通道处理机等

选择题:机器检验错中断 > 访管指令中断 > 程序性中断 > 外部中断 > 重新启动中断

中断判优

中断系统在一瞬间只能响应一个中断源的请求,多个中断源同时提出请求时,通过中断判优逻辑确定响应哪个中断源的请求

中断判优既可以用硬件实现,又可用软件实现

  • 硬件实现是通过硬件排队器实现的,它既可以设置在 CPU 中,又可以分散在各个中断源中

  • 软件实现是通过查询程序实现的

一般来说,优先级的划分为:

  1. 硬件故障中断属于最高级,其次是软件中断

  2. 不可屏蔽中断优于可屏蔽中断

  3. DMA 请求优于 I/O 设备传送的中断请求

  4. 高速设备优于低速设备

  5. 输入设备优于输出设备

  6. 实时设备优于普通设备

CPU 响应中断的条件

CPU 响应中断必须满足:

  1. 中断源有中断请求,即有中断请求触发器处于 1 状态

    外设发送了中断请求且被外设接口中断允许触发器允许(允许触发器置 1)

  2. CPU 允许中断即开中断,即 CPU 内的中断屏蔽触发器是开发的

  3. 一条指令执行完毕,且没有更紧迫的任务

注意:对于外中断,CPU 在每条指令执行阶段的结束时刻向接口发出中断查询信号,以获取 I/O 的中断请求

中断响应

CPU 响应中断后,经过某些由硬件直接实现的操作,转去执行中断服务程序,称这些操作为中断隐指令,它无法被用户使用

考点追踪:中断隐指令 vs 中断服务程序(2012, 2017, 2024)

  1. 中断隐指令 (硬件自动)
  • 关中断:防止现场保存被干扰。
  • 保存断点:保存 PC (2012) 和 PSW (2018)。
  • 引出中断服务程序:将跳转地址送入 PC。
  1. 中断服务程序 (软件/程序员编写)
  • 保存现场:保存通用寄存器内容 (2012)。
  • 开中断:允许嵌套。
  • 设置中断屏蔽字:动态调整处理优先级。
  • 恢复现场、中断返回

它所完成的操作如下:

  1. 关中断:为了在保护程序的断点和现场信息的过程中,不能被其他中断打扰,导致信息没保存好,必须先关闭中断

  2. 保存断点:为保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点保存起来

  3. 引出中断服务程序:实质是取出中断服务程序的入口地址并传送给程序计数器 PC

其中断点信息为:程序计算器 PC 和状态标志寄存器 PSWR 的内容,因为指令无法访问它们

中断向量

每个中断都有一个类型号,每个中断类型号都对应一个中断服务程序,每个中断服务程序都有一个入口地址

使用存储器某个空间存放系统的全部中断向量,这个空间叫做中断向量表,可以根据中断类型号在中断向量表找到中断向量

中断向量法:CPU 响应中断后,中断硬件会自动将中断向量地址传送给 CPU 来实现程序的切换

向量中断:采用中断向量法的中断,要使用中断向量法得有中断向量表等一系列的东西

注意:中断向量中断服务程序的入口地址中断向量地址是指中断服务程序的入口地址的地址

中断处理过程

大部分计算机,中断处理流程如下:

  1. 关中断:在保护断点和现场期间不能被新的中断所打断,必须关中断

    否则若断点或现场保存不完整,就不能正确地恢复并继续执行现行程序

  2. 保存断点:断点可以压入堆栈,也可以存入主存的特定单元中,断点信息无法由软件访问,故由硬件实现

  3. 引出中断服务程序:中断服务程序的入口地址的获得方式,硬件向量法和软件查询法

    • 硬件向量法:通过硬件产生中断向量地址,再由中断向量地址找到中断服务程序的入口地址

    • 软件查询法:用软件编程的办法寻找入口地址

    注意:硬件产生的实际上是中断类型号,而中断类型号指出了中断向量存放的地址,因此能产生中断向量地址

  4. 保存现场和屏蔽字:进入中断服务程序后首先要保存现场和中断屏蔽字,现场信息是指用户可见的工作寄存器的内容

    注意:现场和断点,这两类信息都不能被中断服务程序破坏,现场信息可以直接用指令保存到栈中,由软件实现

  5. 开中断:允许更高级中断请求得到响应,实现中断嵌套

  6. 执行中断服务程序:这是中断请求的目的

  7. 关中断:保证在恢复现场和屏蔽字时不被中断

  8. 恢复现场和屏蔽字:将现场和屏蔽字恢复到原来的状态

  9. 开中断、中断返回:中断服务程序的最后一条指令通常是一条中断返回指令,返回到原程序的断点处,继续执行原程序

1~3 在 CPU 进入中断周期后,由中断隐指令(硬件自动)完成;4~9 由中断服务程序完成

注意:对于单重中断系统,中断只会在最后才开回来,中间不会开的,因为不能嵌套中断

多重中断和中断屏蔽技术

在 CPU 在执行中断服务程序的过程中,又出现了新的更高优先级的中断请求:

  • 单重中断:CPU 对新的中断请求不予响应

  • 多重中断,中断嵌套:CPU 暂停现行的中断服务程序,转去处理新的中断请求

image-20211029201233691

中断屏蔽技术主要用于多重中断,CPU 要具备多重中断的功能,必须满足下列条件:

  1. 在中断服务程序中提前设置开中断指令

  2. 优先级别高的中断源有权中断优先级别低的中断源

每个中断源都有一个屏蔽触发器1 表示屏蔽该中断源的请求,0 表示可以正常申请,所有屏蔽触发器组合在一起便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字;在中断程序中会设置屏蔽字;下面给个例题说明如何求屏蔽字

注意:优先次序是排队器实现的,是多个中断一起发送时谁先响应;处理次序是屏蔽字实现的,是多个中断谁先执行完

核心结论:响应优先级 vs 处理优先级(2024)

  1. 响应优先级:由硬件排队电路(查询顺序)固定,不可改。
  1. 处理优先级:由中断屏蔽字决定。屏蔽字为 1 表示屏蔽(优先级高),为 0 表示不屏蔽。
  • 设置屏蔽字是进入服务程序后的软件动作。
  • 通过屏蔽字可以实现“低响应优先级、高处理优先级”的特殊排队。

题目:设某机有 4 个中断源 A、B、C、D 其硬件排队优先次序为 A>B>C>D 现要求将中断处理次序改为 D>A>C>B

  1. 写出每个中断源对应的屏蔽字

  2. 时间轴给出的 4 个中断源的请求时刻,画出 CPU 执行程序的轨迹。设每个中断源的中断服务程序时间均为 20us

    image-20211029201911505

解答:

  1. 在中断处理次序改为 D>A>C>B 后,D 具有最高优先级,可以屏蔽其他所有中断,且不能中断自身,因此 D 对应的屏蔽字为 1111;A 具有次高优先级,只能被 D 中断,因此 A 对应的屏蔽字为 1110,以此类推,得到 4 个中断源的屏蔽字

    image-20211029202453160

  2. 根据处理次序,在时刻 5,B 发中断请求,获得 CPU;在时刻 10,D 发中断请求,此时 B 虽还未执行完毕,但 D 的优先级高于 B,于是 D 中断 B 而获得 CPU;在时刻 30,D 执行完毕,B 继续获得 CPU;在时刻 35,A 发中断请求,此时 B 虽还未执行完毕,但 A 的优先级高于 B,于是 A 中断 B 而获得 CPU,如此继续下去

    image-20211029202647551

DMA 方式

DMA 方式是一种完全由硬件进行成组信息传送的控制方式,它具有程序中断方式的优点

这种方式适用于磁盘机、磁带机等高速设备大批量数据的传送,它的硬件开销比较大

在 DMA 方式中,中断的作用仅限于故障和正常传送结束时的处理

DMA 方式的特点

主存和 DMA 接口之间有一条直接数据通路(逻辑通路),传送数据不需要经过 CPU,不必中断现行程序

I/O 与主机并行工作,程序和传送并行工作,DMA 方式具有下列特点:

  1. 它使主存与 CPU 的固定联系脱钩,主存既可被 CPU 访问,又可被外设访问

  2. 在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现

  3. 主存中要开辟专用缓冲区,及时供给和接收外设的数据

  4. DMA 传送速度快,CPU 和外设并行工作,提高了系统效率

  5. DMA 在传送开始前要通过程序进行预处理结束后要通过中断方式进行后处理

DMA 控制器的组成

在 DMA 方式中,对数据传送过程进行控制的硬件称为 DMA 控制器(DMA 接口)

当 I/O 设备需要进行数据传送时,通过 DMA 控制器向 CPU 提出 DMA 传送请求,CPU 响应之后将让出系统总线,由 DMA 控制器接管总线进行数据传送

其主要功能如下:

  1. 接受外设发出的 DMA 请求,并向 CPU 发出总线请求

  2. CPU 响应此总线请求,发出总线响应信号,代替 CPU 接管总线控制权,进入 DMA操作周期

  3. 确定传送数据的主存单元地址及长度,并自动修改主存地址计数和传送长度计数

  4. 规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作

  5. 向 CPU 报告 DMA 操作的结束

image-20211029205148881

  • 主存地址计数器:存放要交换数据的主存地址

  • 传送长度计数器:记录传送数据的长度,计数溢出时,数据即传送完毕,自动发中断请求信号

  • 数据缓冲寄存器:暂存每次传送的数据

  • DMA 请求触发器:每当 I/O 设备准备好数据后,给出一个控制信号,使 DMA 请求触发器置位

  • 控制/状态逻辑:由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对 DMA 请求信号和 CPU 响应信号进行协调和同步

  • 中断机构:当一个数据块传送完毕后触发中断机构,向 CPU 提出中断请求

在 DMA 传送过程中,DMA 控制器将接管 CPU 的地址总线、数据总线和控制总线CPU 的主存控制信号被禁止使用

而当 DMA 传送结束后,将恢复 CPU 的一切权利并开始执行其操作

DMA 的传送方式

主存和 I/O 设备之间交换信息时,不通过 CPU,但当 I/O 设备和 CPU 同时访问主存时,可能发生冲突

为了有效地使用主存,DMA 控制器与 CPU 采用以下方式使用主存:

  • 停止 CPU 访存:当 I/O 设备有 DMA 请求时,由 DMA 控制器向 CPU 发送一个停止信号,使 CPU 脱离总线,停止访问主存,直到 DMA 传送一块数据结束,数据传送结束后,DMA 控制器通知 CPU 可以使用主存,并把总线控制权交还给 CPU

  • 周期挪用,周期窃取:当 I/O 设备有 DMA 请求时,会遇到 3 种情况:

    1. 此时 CPU 不在访存(如 CPU 正在执行乘法指令),因此 I/O 的访存请求与 CPU 未发生冲突

    2. CPU 正在访存,此时必须待存取周期结束后,CPU 再将总线占有权让出

    3. I/O 和 CPU 同时请求访存,出现访存冲突,此时 CPU 要暂时放弃总线占有权

    I/O 访存优先级高于 CPU 访存,因为 I/O 不立即访存就可能丢失数据

    由 I/O 设备挪用一个或几个存取周期,传送完一个数据后立即释放总线,是一种单字传送方式

  • DMA 与 CPU 交替访存:这种方式适用于 CPU 周期比主存存取周期长的情况

考点追踪:DMA 响应时机与访存优先级(2013, 2018, 2020)

  1. 响应时机:DMA 请求可在每个存储周期(总线周期/机器周期)结束时被响应。而中断响应必须在指令执行结束时
  1. 优先级DMA 请求优先级 > 中断请求优先级。原因:高速设备(如磁盘)数据不及时处理会丢失。
  1. 总线冲突:DMA 和 CPU 同时申请总线时,DMA 优先获得。DMA 采用“周期挪用”时,CPU 需让出一个存取周期,此时 CPU 正常工作但访存受阻。

若 CPU 周期是 1.2us,主存的存取周期小于 0.6us,则可将一个 CPU 周期分为 C1C2 两个周期,其中 C1 专供 DMA 访存,C2 专供 CPU 访存

这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过 C1C2 分时控制的

DMA 的传送过程

DMA 的数据传送过程分为预处理、数据传送、后处理:

  1. 预处理:由 CPU 完成一些必要的准备工作

    1. CPU 执行几条 I/O 指令,用以测试 I/O 设备状态

    2. 向 DMA 控制器的有关寄存器置初值、设置传送方向、启动该设备

    3. CPU 继续执行原来的程序,直到 I/O 设备准备好发送的数据或接收的数据

    4. I/O 设备向 DMA 控制器发送 DMA 请求,再由 DMA 控制器向 CPU 发送总线请求,用以传输数据

  2. 数据传送:DMA 的数据传输可以以单字节(或字)为基本单位,也可以以数据块为基本单位

    对于以数据块为单位的传送(如硬盘),DMA 占用总线后的数据输入和输出操作都是通过循环来实现的

    循环也是由 DMA 控制器实现的,即数据传送阶段完全由 DMA(硬件)控制

  3. 后处理:DMA 控制器向 CPU 发送中断请求,CPU 执行中断服务程序做 DMA 结束处理

    包括校验送入主存的数据是否正确、测试传送过程中是否出错(错误则转入诊断程序)及决定是否继续使用 DMA 传送其他数据块等

image-20211029212623495

DMA方式和中断方式的区别

DMA 方式和中断方式的重要区别如下:

  1. 中断方式是程序的切换,需要保护和恢复现场;DMA方式除了预处理和后处理,其他时候不占用 CPU 的任何资源

  2. 对中断请求的响应只能发生在每条指令执行完毕时(即指令的执行周期后)

    对 DMA请求的响应可以发生在每个机器周期结束时,只要 CPU 不占用总线就可被响应

  3. 中断传送过程需要 CPU 的干预;而 DMA 传送过程不需要 CPU 的干预,数据传输率非常高,适合高速外设成组数据传送

  4. DMA 请求的优先级高于中断请求

  5. 中断方式具有对异常事件的处理能力;DMA 方式仅局限于传送数据块的 I/O 操作

  6. 从数据传送来看,中断方式靠程序传送,DMA 方式靠硬件传送

核心结论:DMA 与中断全方位对比

| 特性 | 中断方式 | DMA 方式 |

| :--- | :--- | :--- |

| 数据单位 | 字/字节 | 数据块 |

| 请求原因 | CPU 处理时间 | 总线使用权 |

| 响应时间 | 指令执行结束 | 存储/总线周期结束 |

| 硬件复杂度 | 较低 | 高 |

| CPU干预 | 每次传送都需干预 | 仅预处理、后处理干预 |

| 应用场景 | 低速字符设备 | 高速块设备 (SSD, 网卡) |

Released under the MIT License.