540 lines
25 KiB
Markdown
540 lines
25 KiB
Markdown
# 第5章 输入输出系统
|
||
|
||
> 📖 本章介绍I/O设备与主机交换信息的三种控制方式:程序查询、中断和DMA。
|
||
> 🎯 重点理解中断处理过程和DMA工作原理
|
||
> ⚠️ 期中/期末重点章:中断处理过程、中断屏蔽字、DMA工作方式、三种I/O方式对比都是高频考点
|
||
> 📝 课后习题重点关注 5.1~5.4、5.27、5.28、5.33~5.35
|
||
|
||
---
|
||
|
||
## 📋 本章目录
|
||
|
||
- [[#5.1 概述]]
|
||
- [[#5.2 I/O设备]]
|
||
- [[#5.3 接口]]
|
||
- [[#5.4 程序查询方式]]
|
||
- [[#5.5 程序中断方式]]
|
||
- [[#5.6 DMA方式]]
|
||
- [[#本章小结]]
|
||
- [[#📖 真题与作业精选]]
|
||
- [[#例题与解析]]
|
||
|
||
---
|
||
|
||
## 5.1 概述
|
||
|
||
### 5.1.1 输入输出系统的发展
|
||
|
||
```mermaid
|
||
graph LR
|
||
A[早期阶段] --> B[接口模块阶段]
|
||
B --> C[DMA阶段]
|
||
C --> D[通道阶段]
|
||
D --> E[IO处理机阶段]
|
||
|
||
style A fill:#ff9999
|
||
style B fill:#ffcc99
|
||
style C fill:#ffff99
|
||
style D fill:#99ff99
|
||
style E fill:#99ccff
|
||
```
|
||
|
||
| 阶段 | 特点 | CPU参与度 |
|
||
|------|------|----------|
|
||
| 早期阶段 | IO设备直接连CPU,串行工作 | 完全参与 |
|
||
| 接口模块阶段 | 通过接口连接,可并行工作 | 部分参与 |
|
||
| DMA阶段 | IO与主存直接通路,CPU不参与数据传输 | 少量参与 |
|
||
| 通道阶段 | 通道独立管理IO | 不参与 |
|
||
| IO处理机阶段 | IO处理机独立工作 | 不参与 |
|
||
|
||
I/O系统的发展可以理解为物流系统的进化:早期阶段CPU亲自搬运所有货物,效率低下;接口模块阶段有了快递员(接口),CPU可以做其他事情;DMA阶段有了直达通道,I/O设备和内存之间直接传送数据;通道阶段有了物流中心(通道)独立管理;I/O处理机阶段有了独立物流公司完全独立工作。
|
||
|
||
### 5.1.2 输入输出系统的组成
|
||
|
||
```mermaid
|
||
graph TB
|
||
A[输入输出系统] --> B[I/O软件]
|
||
A --> C[I/O硬件]
|
||
|
||
B --> B1[I/O指令]
|
||
B --> B2[通道指令]
|
||
B --> B3[管理程序]
|
||
|
||
C --> C1[I/O接口]
|
||
C --> C2[I/O设备]
|
||
```
|
||
|
||
#### I/O指令格式
|
||
|
||
```mermaid
|
||
graph LR
|
||
subgraph "I/O指令格式"
|
||
OP[操作码] --> CMD[命令码] --> DEV[设备码]
|
||
end
|
||
```
|
||
|
||
**命令码功能**:
|
||
- 数据输入(IO → CPU)
|
||
- 数据输出(CPU → IO)
|
||
- 状态测试(查询设备状态)
|
||
- 形成操作命令
|
||
|
||
I/O指令就像快递单:操作码告诉CPU要做什么操作(读数据、写数据、查询状态),命令码告诉I/O设备要做什么,设备码告诉CPU是哪个I/O设备(打印机、硬盘、键盘)。
|
||
|
||
---
|
||
|
||
## 5.2 I/O设备
|
||
|
||
### 5.2.1 I/O设备分类
|
||
|
||
| 类型 | 设备 | 特点 |
|
||
|------|------|------|
|
||
| 输入设备 | 键盘、鼠标、扫描仪 | 人 → 机 |
|
||
| 输出设备 | 显示器、打印机 | 机 → 人 |
|
||
| 外存储器 | 磁盘、磁带、光盘 | 存储信息 |
|
||
|
||
输入设备像人的感官(键盘像手,鼠标像手,扫描仪像眼睛),接收外界信息传给计算机;输出设备像表达器官(显示器像眼睛,打印机像手),把计算机的信息传给人;外存储器像记忆器官(磁盘像大脑,磁带像笔记本),存储信息长期保存。
|
||
|
||
### 5.2.2 I/O设备与主机联系方式
|
||
|
||
```mermaid
|
||
graph TB
|
||
subgraph "联系方式"
|
||
A[I/O设备] --> B[编址方式]
|
||
B --> B1[统一编址]
|
||
B --> B2[独立编址]
|
||
|
||
A --> C[联络方式]
|
||
C --> C1[立即响应]
|
||
C --> C2[异步联络]
|
||
C --> C3[同步联络]
|
||
end
|
||
```
|
||
|
||
#### 编址方式
|
||
|
||
| 方式 | 特点 | 优点 | 缺点 |
|
||
|------|------|------|------|
|
||
| **统一编址** | I/O设备和内存使用同一地址空间 | 指令统一,编程简单 | 占用内存地址 |
|
||
| **独立编址** | I/O设备和内存使用不同地址空间 | 不占用内存地址 | 指令不同,编程复杂 |
|
||
|
||
统一编址就像办公室和仓库使用同一套门牌号,找办公室和仓库都用同一套门牌号简单,但仓库占用了办公室的门牌号;独立编址就像办公室和仓库使用不同的门牌号系统,仓库不占用办公室的门牌号,但找办公室和仓库要用不同的门牌号系统复杂。
|
||
|
||
#### 联络方式
|
||
|
||
| 方式 | 特点 | 适用场景 |
|
||
|------|------|----------|
|
||
| **立即响应** | 设备立即响应CPU请求 | 简单设备 |
|
||
| **异步联络** | 使用握手信号,速度灵活 | 大多数设备 |
|
||
| **同步联络** | 使用统一时钟,速度固定 | 高速设备 |
|
||
|
||
立即响应就像你问一个问题对方立即回答,只能用于简单设备;异步联络像你问一个问题对方准备好后回答,速度灵活适合大多数设备;同步联络像所有设备按同一时钟工作,速度快但受限于最慢设备。
|
||
|
||
---
|
||
|
||
## 5.3 接口
|
||
|
||
### 5.3.1 I/O接口的功能
|
||
|
||
**主要功能**:
|
||
1. **设备选择**:选择是哪个I/O设备
|
||
2. **数据缓冲**:缓冲数据,解决速度不匹配
|
||
3. **数据格式转换**:串行/并行转换
|
||
4. **控制命令传递**:传递CPU的控制命令
|
||
5. **状态反馈**:反馈设备状态
|
||
|
||
I/O接口就像快递站:设备选择告诉快递站是哪个包裹,数据缓冲暂时存放包裹解决速度不匹配,数据格式转换把包裹转换成适合运输的形式,控制命令传递传递发货人的命令,状态反馈反馈包裹的状态。
|
||
|
||
### 5.3.2 I/O接口的类型
|
||
|
||
| 类型 | 特点 | 应用 |
|
||
|------|------|------|
|
||
| **并行接口** | 多位数据同时传输 | 打印机接口 |
|
||
| **串行接口** | 一位一位传输 | USB、网络 |
|
||
| **专用接口** | 为特定设备设计 | 显卡接口 |
|
||
|
||
并行接口像8个人同时送8封信,速度快但成本高距离短;串行接口像一个人送8封信分8次送,成本低距离长但速度慢;专用接口专门为某种设备设计,性能好兼容性好但只能用于特定设备。
|
||
|
||
---
|
||
|
||
## 5.4 程序查询方式
|
||
|
||
### 5.4.1 工作原理
|
||
|
||
```mermaid
|
||
graph TB
|
||
A[CPU启动设备] --> B[CPU查询设备状态]
|
||
B --> C{设备准备好?}
|
||
C -->|否| B
|
||
C -->|是| D[CPU传输数据]
|
||
D --> E[操作完成]
|
||
```
|
||
|
||
**工作流程**:
|
||
1. CPU启动I/O设备
|
||
2. CPU不断查询设备状态
|
||
3. 设备准备好后,CPU传输数据
|
||
4. 操作完成
|
||
|
||
程序查询方式就像你等公交车:你到公交站等车(CPU启动设备),不断看公交站牌看车来了没有(查询设备状态),公交车来了(设备准备好),你上车(CPU传输数据),到达目的地(操作完成)。
|
||
|
||
**特点**:
|
||
- **优点**:简单,容易实现
|
||
- **缺点**:CPU要不断查询,效率低
|
||
|
||
这是三种I/O方式中考查频率最高的一种,考试常以对比题形式出现。早期计算机和简单嵌入式系统常用这种方式,CPU要等打印机打印完才能做其他事情。
|
||
|
||
---
|
||
|
||
## 5.5 程序中断方式
|
||
|
||
### 5.5.1 中断的基本概念
|
||
|
||
> [!info] 定义
|
||
> 中断是指CPU暂时中止当前程序,转去处理某个紧急事件,处理完后返回原程序继续执行。
|
||
|
||
中断就像你正在工作时有人敲门:你正在工作(CPU执行程序),有人按门铃(I/O设备请求服务),你暂停工作(CPU暂停当前程序),去开门(CPU处理中断请求),回来继续工作(CPU返回原程序继续执行)。
|
||
|
||
### 5.5.2 中断的分类
|
||
|
||
| 分类方式 | 类型 | 特点 |
|
||
|----------|------|------|
|
||
| **产生原因** | 硬件中断、软件中断 | 硬件中断由设备产生,软件中断由程序产生 |
|
||
| **是否可屏蔽** | 可屏蔽中断、不可屏蔽中断 | 可屏蔽中断可以被禁止,不可屏蔽中断不能 |
|
||
| **优先级** | 高优先级、低优先级 | 高优先级中断可以打断低优先级中断 |
|
||
|
||
硬件中断像有人按门铃,由硬件设备产生;软件中断像你自己决定要开门,由程序产生。可屏蔽中断像你可以选择不开门,某些不重要的中断可以被禁止;不可屏蔽中断像你必须开门,电源故障、硬件错误不能被禁止。
|
||
|
||
### 5.5.3 中断处理过程
|
||
|
||
> 这是考试高频考点,期中/期末都曾出过简答题或论述题,务必完整背诵七个步骤。
|
||
|
||
```mermaid
|
||
graph TB
|
||
A[中断请求] --> B[中断判优]
|
||
B --> C[中断响应]
|
||
C --> D[保存现场]
|
||
D --> E[中断服务]
|
||
E --> F[恢复现场]
|
||
F --> G[中断返回]
|
||
```
|
||
|
||
**详细流程**:
|
||
|
||
1. **中断请求**:I/O设备向CPU发送中断请求信号,CPU在每条指令执行完后检查中断请求
|
||
|
||
2. **中断判优**:如果有多个中断请求,需要判优,优先级高的中断先处理
|
||
|
||
3. **中断响应**:CPU响应中断请求,关中断防止新的中断打断
|
||
|
||
4. **保存现场**:保存当前程序的状态(PC、寄存器等),以便中断返回后继续执行
|
||
|
||
5. **中断服务**:执行中断服务程序,处理I/O设备的请求
|
||
|
||
6. **恢复现场**:恢复之前保存的状态,准备返回原程序
|
||
|
||
7. **中断返回**:返回原程序继续执行,开中断允许新的中断
|
||
|
||
> [!important] 中断响应过程四步要点(考试常考简答)
|
||
> 中断响应的具体步骤可以概括为四步:
|
||
> 1. **关中断** -- 防止新中断打断响应过程
|
||
> 2. **保存断点** -- 将PC(程序计数器)和PSW(程序状态字)保存到堆栈中
|
||
> 3. **识别中断源** -- 确定是哪个设备发出的中断
|
||
> 4. **转入服务程序入口** -- 跳转到对应的中断服务程序
|
||
>
|
||
> 注意:断点信息(PC和PSW)通常保存在**堆栈**中,这是考试经常考的细节。
|
||
|
||
这就像你正在工作时有人敲门:有人按门铃(中断请求),如果有多个人按门铃决定先开哪个门(中断判优),你决定去开门(中断响应),把正在做的工作记下来(保存现场),去开门处理事情(中断服务),回来看看之前做到哪里了(恢复现场),继续之前的工作(中断返回)。
|
||
|
||
当你按键盘时:键盘向CPU发送中断请求,如果有其他中断键盘中断可能优先级较低,CPU响应键盘中断,保存当前程序的状态,执行键盘中断服务程序处理按键,恢复之前保存的状态,返回原程序继续执行。
|
||
|
||
### 5.5.4 中断判优方法
|
||
|
||
| 方法 | 特点 | 优点 | 缺点 |
|
||
|------|------|------|------|
|
||
| **软件查询** | CPU用程序查询哪个设备请求中断 | 简单,灵活 | 速度慢 |
|
||
| **硬件判优** | 用硬件电路判优 | 速度快 | 复杂,成本高 |
|
||
|
||
软件查询像你挨个问"是你按门铃吗?",简单容易实现但速度慢;硬件判优像有一个专门的设备告诉你谁按了门铃,速度快立即知道是谁但需要额外设备成本高。
|
||
|
||
### 5.5.5 中断优先级
|
||
|
||
**设置原则**:
|
||
1. **硬件故障中断**:最高优先级
|
||
2. **软件中断**:较高优先级
|
||
3. **I/O中断**:中等优先级
|
||
4. **用户程序中断**:较低优先级
|
||
|
||
硬件故障中断像火灾报警最紧急,软件中断像重要电话比较紧急,I/O中断像门铃响了一般紧急,用户程序中断像有人找你聊天不紧急。
|
||
|
||
### 5.5.6 中断屏蔽
|
||
|
||
> 中断屏蔽字的设置是考试高频题型,期中/期末均出现过。务必掌握屏蔽字的构造方法:对于n个中断源,屏蔽字为n位,第i位为1表示屏蔽该中断源,为0表示开放。高优先级的中断源会屏蔽所有比自己低的中断源。
|
||
|
||
**原理**:通过设置中断屏蔽字,可以禁止某些中断。
|
||
|
||
中断屏蔽就像你设置了"请勿打扰",设置了门铃响了你也不去开门;不设置门铃响了你就去开门。CPU正在处理重要任务时屏蔽某些中断,CPU空闲时允许所有中断。
|
||
|
||
**屏蔽字构造规则**:
|
||
- 每个中断源对应一个n位的屏蔽字(n为中断源总数)
|
||
- 屏蔽字的第i位为1,表示该中断源处理时屏蔽第i个中断源
|
||
- 为0表示允许(开放)该中断源
|
||
- 高优先级中断源会屏蔽所有比自己优先级低的中断源
|
||
|
||
屏蔽字的构造方法看下面的真题精选部分有详细例题。
|
||
|
||
---
|
||
|
||
## 5.6 DMA方式
|
||
|
||
### 5.6.1 DMA的基本概念
|
||
|
||
> [!info] 定义
|
||
> DMA(Direct Memory Access)是指I/O设备和内存之间直接传送数据,不经过CPU。
|
||
|
||
DMA就像直达快递:传统方式你要从A地寄东西到B地必须经过C地(CPU),DMA方式A地直接寄到B地不经过C地。硬盘读取数据时直接把数据传到内存不经过CPU。
|
||
|
||
### 5.6.2 DMA的工作方式
|
||
|
||
> DMA的三种工作方式是本章核心知识点,考试常以简答或对比题形式出现。
|
||
|
||
| 方式 | 特点 | 优点 | 缺点 |
|
||
|------|------|------|------|
|
||
| **停止CPU访问** | DMA传送时,CPU停止访问内存 | 简单 | CPU效率低 |
|
||
| **周期挪用** | DMA在CPU不访问内存时传送 | CPU效率高 | 控制复杂 |
|
||
| **交替访问** | DMA和CPU交替访问内存 | 效率最高 | 硬件复杂 |
|
||
|
||
停止CPU访问像高速公路完全给DMA使用,CPU不能使用,简单但CPU效率低;周期挪用像DMA在CPU不使用高速公路时使用,CPU效率高但需要复杂的控制逻辑;交替访问像DMA和CPU轮流使用高速公路,效率最高但硬件复杂成本高。
|
||
|
||
### 5.6.3 DMA的工作过程
|
||
|
||
```mermaid
|
||
graph TB
|
||
A[CPU初始化DMA] --> B[DMA请求]
|
||
B --> C[DMA响应]
|
||
C --> C1[DMA接管总线]
|
||
C1 --> D[数据传送]
|
||
D --> E[传送完成]
|
||
E --> F[DMA释放总线]
|
||
F --> G[CPU继续工作]
|
||
```
|
||
|
||
**详细流程**:
|
||
|
||
1. **CPU初始化DMA**:CPU设置DMA控制器的参数,包括内存起始地址、传送字节数、传送方向
|
||
|
||
2. **DMA请求**:I/O设备向DMA控制器发送请求,DMA控制器向CPU发送总线请求
|
||
|
||
3. **DMA响应**:CPU响应总线请求,DMA控制器接管总线
|
||
|
||
4. **数据传送**:DMA控制器控制数据传送,I/O设备和内存直接传送数据
|
||
|
||
5. **传送完成**:DMA控制器传送完成,向CPU发送中断请求
|
||
|
||
6. **DMA释放总线**:DMA控制器释放总线,CPU继续工作
|
||
|
||
这就像你让快递员帮你寄东西:你告诉快递员要寄什么东西寄到哪里(CPU初始化DMA),快递员去取东西(DMA请求),快递员拿到东西(DMA响应),快递员把东西送到目的地(数据传送),快递员告诉你东西送到了(传送完成),快递员去忙其他事情(DMA释放总线)。
|
||
|
||
当你从硬盘复制文件到内存时:CPU告诉DMA控制器要从硬盘读取多少数据到内存哪里,DMA控制器向CPU请求总线使用权,CPU把总线使用权给DMA控制器,硬盘直接把数据传到内存不经过CPU,DMA控制器告诉CPU传送完成了,DMA控制器释放总线CPU继续工作。
|
||
|
||
### 5.6.4 DMA与中断的区别
|
||
|
||
> DMA与中断的区别是考试必考内容,几乎每年都有相关题目,建议完整记忆下面的对比表。
|
||
|
||
| 特性 | DMA | 中断 |
|
||
|------|-----|------|
|
||
| **数据传送** | I/O和内存直接传送 | 通过CPU传送 |
|
||
| **CPU参与度** | 只在开始和结束参与 | 全程参与 |
|
||
| **响应时间** | 每个机器周期结束响应 | 每条指令结束响应 |
|
||
| **适用场景** | 大量数据传送 | 少量数据传送 |
|
||
|
||
DMA像直达快递,东西直接从A地寄到B地不经过C地,速度快C地可以做其他事情但需要额外的快递员;中断像普通快递,东西从A地寄到C地再从C地寄到B地,简单不需要额外快递员但速度慢C地要全程参与。
|
||
|
||
硬盘读取大量数据到内存用DMA,键盘按键、鼠标点击用中断。
|
||
|
||
---
|
||
|
||
## 📝 本章小结
|
||
|
||
### 核心概念
|
||
|
||
1. **I/O系统发展**:从CPU完全参与到完全不参与
|
||
2. **I/O设备**:输入设备、输出设备、外存储器
|
||
3. **I/O接口**:设备选择、数据缓冲、格式转换
|
||
4. **程序查询**:CPU不断查询,效率低
|
||
5. **程序中断**:CPU响应中断,效率较高
|
||
6. **DMA**:I/O和内存直接传送,效率最高
|
||
|
||
### 关键术语
|
||
|
||
| 术语 | 英文 | 含义 |
|
||
|------|------|------|
|
||
| I/O | Input/Output | 输入输出 |
|
||
| DMA | Direct Memory Access | 直接内存访问 |
|
||
| Interrupt | Interrupt | 中断 |
|
||
| Interface | Interface | 接口 |
|
||
|
||
### 重点图示
|
||
|
||
> [!summary] 必须掌握的图
|
||
> 1. I/O系统发展过程图
|
||
> 2. 中断处理过程图
|
||
> 3. DMA工作过程图
|
||
> 4. 三种I/O方式的比较
|
||
|
||
---
|
||
|
||
## 📖 真题与作业精选
|
||
|
||
> 以下题目来自期中/期末考试真题、作业四及复习资料,覆盖本章高频考点,建议认真做完并理解。
|
||
|
||
### 精选1:中断屏蔽字设置(复习资料原题)
|
||
|
||
**题目**:设有4个中断源 A、B、C、D,硬件优先级为 A > B > C > D。现需要改变中断处理顺序为 C > A > D > B,请设置各中断源的中断屏蔽字。
|
||
|
||
**答案**:
|
||
|
||
屏蔽字为4位,从左到右分别对应 A、B、C、D。0 表示开放,1 表示屏蔽。
|
||
|
||
| 中断源 | 处理顺序 | 屏蔽字 (A B C D) | 解释 |
|
||
|--------|----------|-------------------|------|
|
||
| A | 第2 | **1 1 0 1** | A屏蔽自己和B、D,开放C(C优先级高于A) |
|
||
| B | 第4 | **0 1 0 0** | B只屏蔽自己,其余全部开放 |
|
||
| C | 第1 | **1 1 1 1** | C优先级最高,屏蔽所有 |
|
||
| D | 第3 | **0 1 0 1** | D屏蔽自己和B,开放A和C |
|
||
|
||
**构造方法**:对于某个中断源 X,查看期望的处理优先级顺序。X 在处理过程中,所有优先级**低于** X 的中断源都应被屏蔽(对应位设为1),X 自身也被屏蔽,而所有优先级**高于** X 的中断源应被开放(对应位设为0)。
|
||
|
||
- C 处理时:C 优先级最高,没有比它更高的,全部屏蔽 -> `1111`
|
||
- A 处理时:只有 C 比 A 高,所以开放 C,屏蔽 A、B、D -> `1101`
|
||
- D 处理时:C 和 A 比 D 高,所以开放 C 和 A,屏蔽 D 和 B -> `0101`
|
||
- B 处理时:A、C、D 都比 B 高,全部开放,只屏蔽 B 自身 -> `0100`
|
||
|
||
> 这是中断屏蔽字的经典考法,期中/期末都曾出现。做题关键:先确定期望的优先级顺序,然后对每个中断源,开放所有优先级比自己高的,屏蔽自己和所有优先级比自己低的。
|
||
|
||
### 精选2:三种I/O方式对比(作业四原题)
|
||
|
||
**题目**:对比程序查询、程序中断和DMA三种I/O控制方式的工作原理和特点。
|
||
|
||
**答案**:
|
||
|
||
| 对比项 | 程序查询 | 程序中断 | DMA |
|
||
|--------|----------|----------|-----|
|
||
| **工作原理** | CPU全程轮询设备状态 | 设备就绪后触发中断通知CPU | 硬件直接在I/O设备和内存间传送数据 |
|
||
| **CPU参与度** | 全程参与 | 传送时参与 | 仅在初始化和结束时参与 |
|
||
| **CPU效率** | 最低,CPU被占用 | 较高,但频繁中断有开销 | 最高,CPU基本被解放 |
|
||
| **实现复杂度** | 最简单 | 中等 | 最复杂,硬件成本高 |
|
||
| **适用场景** | 简单嵌入式系统 | 中等数据量,如键盘鼠标 | 大量高速数据传送,如硬盘 |
|
||
|
||
三种方式的核心区别在于CPU参与程度:程序查询CPU全程轮询效率最低,程序中断由设备就绪触发中断解放了CPU但频繁中断仍有开销,DMA通过专用硬件直接传送速度最快效率最高但硬件成本也最高。
|
||
|
||
> 这是三种I/O方式对比的标准答题框架,考试时按这个表格回答即可拿到满分。
|
||
|
||
### 精选3:中断响应过程(复习资料原题)
|
||
|
||
**题目**:简述CPU中断响应的具体过程。
|
||
|
||
**答案**:
|
||
|
||
CPU中断响应过程分为四步:
|
||
|
||
1. **关中断**:CPU关闭中断允许触发器,防止在响应过程中被新的中断打断
|
||
2. **保存断点**:将PC(程序计数器)和PSW(程序状态字)压入堆栈保存,确保中断处理完后能正确返回
|
||
3. **识别中断源**:通过硬件或软件方法确定是哪个设备发出的中断请求
|
||
4. **转入服务程序入口**:将中断服务程序的入口地址送入PC,开始执行中断服务程序
|
||
|
||
注意:断点信息(PC和PSW)通常保存在**堆栈**中。关中断是第一步,因为如果在保存断点之前被新中断打断,断点信息就会丢失或出错。
|
||
|
||
> 中断响应过程和中断处理过程是两个不同的概念:中断响应是四步(关中断、保存断点、识别中断源、转入入口),中断处理是七步(请求、判优、响应、保存现场、服务、恢复现场、返回)。考试中注意区分。
|
||
|
||
---
|
||
|
||
## 🧪 例题与解析
|
||
|
||
### 例题1:中断处理过程
|
||
|
||
**题目**:简述中断处理的完整过程。
|
||
|
||
**答案**:
|
||
|
||
中断处理的完整过程:中断请求(I/O设备向CPU发送中断请求信号),中断判优(如果有多个中断请求决定先处理哪个),中断响应(CPU响应中断请求,关中断),保存现场(保存当前程序的状态),中断服务(执行中断服务程序),恢复现场(恢复之前保存的状态),中断返回(返回原程序继续执行,开中断)。
|
||
|
||
这就像你正在工作时有人敲门:有人按门铃,如果有多个人按门铃决定先开哪个门,你决定去开门,把正在做的工作记下来,去开门处理事情,回来看看之前做到哪里了,继续之前的工作。
|
||
|
||
### 例题2:DMA与中断比较
|
||
|
||
**题目**:比较DMA和中断两种I/O方式的区别。
|
||
|
||
**答案**:
|
||
|
||
DMA是I/O和内存直接传送,CPU只在开始和结束参与,每个机器周期结束响应,适合大量数据传送;中断是通过CPU传送,CPU全程参与,每条指令结束响应,适合少量数据传送。
|
||
|
||
DMA像直达快递,东西直接从A地寄到B地不经过C地,速度快C地可以做其他事情但需要额外的快递员;中断像普通快递,东西从A地寄到C地再从C地寄到B地,简单不需要额外快递员但速度慢C地要全程参与。
|
||
|
||
### 例题3:程序查询方式
|
||
|
||
**题目**:简述程序查询方式的工作原理和优缺点。
|
||
|
||
**答案**:
|
||
|
||
工作原理:CPU启动I/O设备,不断查询设备状态,设备准备好后CPU传输数据,操作完成。优点是简单容易实现,不需要额外硬件;缺点是CPU效率低要不断查询,不能同时处理多个设备。
|
||
|
||
这就像你等公交车:你到公交站等车,不断看公交站牌看车来了没有,公交车来了你上车,到达目的地。简单但你不能做其他事情效率低。
|
||
|
||
### 例题4:中断优先级
|
||
|
||
**题目**:简述中断优先级的设置原则。
|
||
|
||
**答案**:
|
||
|
||
硬件故障中断最高优先级(火灾报警最紧急),软件中断较高优先级(重要电话比较紧急),I/O中断中等优先级(门铃响了一般紧急),用户程序中断较低优先级(有人找你聊天不紧急)。
|
||
|
||
### 例题5:DMA工作过程
|
||
|
||
**题目**:简述DMA的完整工作过程。
|
||
|
||
**答案**:
|
||
|
||
DMA的完整工作过程:CPU初始化DMA(设置参数),DMA请求(I/O设备向DMA控制器发送请求),DMA响应(CPU响应总线请求,DMA控制器接管总线),数据传送(I/O设备和内存直接传送数据),传送完成(向CPU发送中断请求),DMA释放总线(CPU继续工作)。
|
||
|
||
这就像你让快递员帮你寄东西:你告诉快递员要寄什么东西寄到哪里,快递员去取东西,快递员拿到东西,快递员把东西送到目的地,快递员告诉你东西送到了,快递员去忙其他事情。
|
||
|
||
---
|
||
|
||
## ⚡ 知识点速记卡
|
||
|
||
> 考前快速过一遍,30秒回忆整章核心。本章是期中/期末重点章,常见题型:简答题(中断处理过程、三种I/O对比)、计算/分析题(中断屏蔽字设置)、对比题(DMA vs 中断)。课后习题重点做 5.1~5.4、5.27、5.28、5.33~5.35。
|
||
|
||
**三种I/O方式**(CPU参与度从高到低):程序查询(CPU一直等)→ 程序中断(设备准备好通知CPU)→ DMA(I/O和内存直接传,CPU只管开头和结尾)。
|
||
|
||
**程序查询**:CPU不断轮询设备状态,简单但CPU效率最低,适合简单嵌入式系统。
|
||
|
||
**中断处理七步**:中断请求 → 中断判优 → 中断响应(关中断)→ 保存现场 → 中断服务 → 恢复现场 → 中断返回(开中断)。
|
||
|
||
**中断响应四步**:关中断 → 保存断点(PC和PSW到堆栈)→ 识别中断源 → 转入服务程序入口。注意区分"中断响应"和"中断处理"两个概念。
|
||
|
||
**中断屏蔽字**:n个中断源用n位表示,0开放1屏蔽。高优先级中断源处理时屏蔽所有低优先级中断源。这是考试常考的计算/分析题。
|
||
|
||
**中断优先级**:硬件故障 > 软件中断 > I/O中断 > 用户程序。
|
||
|
||
**DMA三大要点**:①I/O和内存直接传送,不经过CPU ②CPU只在初始化和结束时参与 ③每个机器周期结束时响应(比中断更快)。
|
||
|
||
**DMA三种工作方式**:停止CPU访问(简单但CPU空等)、周期挪用(CPU不访存时DMA传送)、交替访问(效率最高但硬件复杂)。
|
||
|
||
**DMA vs 中断**:DMA适合大量数据传送(硬盘),中断适合少量数据(键盘)。DMA在机器周期末响应,中断在指令周期末响应。DMA数据不经过CPU,中断数据经CPU中转。
|
||
|
||
---
|
||
|
||
## 🔗 相关链接
|
||
|
||
- [[00_计算机组成原理学习指南]] - 返回主目录
|
||
- [[04_存储器]] - 上一章
|
||
- [[06_运算方法]] - 下一章
|
||
- [[08_CPU结构与功能]] - CPU相关内容
|
||
|
||
---
|
||
|
||
*本章难度:⭐⭐⭐⭐ 中等*
|
||
*重要程度:⭐⭐⭐⭐⭐ 重点考试章节*
|
||
*必做习题:5.1~5.4、5.27、5.28、5.33~5.35*
|