
(以下内容全部出自上述课程)
目录
- 程序查询方式
-
- [1. 程序查询方式-模拟过程](#1. 程序查询方式-模拟过程)
- [2. 程序查询方式流程图](#2. 程序查询方式流程图)
- [3. 例题](#3. 例题)
- [4. 小结](#4. 小结)
- 中断的作用和原理
-
- [1. 基本概念](#1. 基本概念)
- [2. 分类(了解)](#2. 分类(了解))
- [3. 中断请求标记](#3. 中断请求标记)
- [4. 中断判优](#4. 中断判优)
-
- [4.1 实现](#4.1 实现)
- [4.2 优先级](#4.2 优先级)
- [5. 中断处理过程](#5. 中断处理过程)
-
- [5.1 中断隐指令](#5.1 中断隐指令)
- [5.2 硬件向量法](#5.2 硬件向量法)
- [5.3 中断服务程序](#5.3 中断服务程序)
- [6. 小结](#6. 小结)
- 多重中断
-
- [1. 多重中断](#1. 多重中断)
- [2. 单重中断与多重中断](#2. 单重中断与多重中断)
- [3. 中断屏蔽技术](#3. 中断屏蔽技术)
- [4. 拓展](#4. 拓展)
- 程序中断方式
- DMA方式
-
- [1. DMA控制器](#1. DMA控制器)
- [2. DMA传送过程](#2. DMA传送过程)
- [3. 特点](#3. 特点)
- [4. DMA传送方式](#4. DMA传送方式)
- [5. 小结](#5. 小结)
程序查询方式


1. 程序查询方式-模拟过程
模拟:打印3个字符:A、B、C
先读状态:
地址线:发送 状态寄存器地址(如 0x379)
控制线:发出 读信号(RD)
数据线:从打印机接收状态字(如"空闲"或"忙碌")


若打印机空闲,则写数据:
地址线:发送 数据寄存器地址(如 0x378)
控制线:发出 写信号(WR)
数据线:向打印机发送要打印的字符(如 R1 中的 'A')


打印机收到数据后开始打印

并更新自身状态为"忙碌 "。

2. 程序查询方式流程图

3. 例题


4. 小结

中断的作用和原理

1. 基本概念
中断就好比你在全神贯注听课, 你的同桌有更重要的事情不得不打断你。

2. 分类(了解)
- 开中断:就是打开中断这个功能,可以中断
- 关中断:就是关闭中断这个功能,不可以中断
- 原子操作 :类似于你上厕所,不准任何人来打断你。

3. 中断请求标记
谁有请求谁就变成1.

4. 中断判优
4.1 实现
硬件实现 :就是与或非排线,通过逻辑运算实现这个功能。
软件实现 :就是写代码,用各种判断语句实现这个功能。

4.2 优先级

5. 中断处理过程
5.1 中断隐指令
- 关中断:就是打开勿扰模式,谁来烦自己都不听。
- 保存断点:就是你在打游戏,你妈妈叫你吃饭,你就得先给游戏存档,吃完饭回来再玩。
- 引出中断服务程序 :就是你打游戏被门铃打断了,你就知道自己需要先去开门(处理突发事件)。

5.2 硬件向量法
当外设发生中断时,由硬件自动产生一个中断类型号(中断向量),CPU 根据这个编号查表,快速找到对应中断服务程序的入口地址,并跳转执行。
- 软件查询法:你每隔一会儿问一遍:"小王,你在吗?"、"小李,你在吗?"...... 逐个排查谁报信。
- 硬件向量法 :每个士兵都有自己的"编号",只要他喊"报告!我是 13 号!"你就知道他是谁,立刻调出他的任务清单,派他去执行。

5.3 中断服务程序
例子-打游戏被门铃叫去开门
- 保护现场:存档
- 中断服务:去开门
- 恢复现场:调入存档
- 中断返回 :玩到哪里还是哪里

6. 小结

多重中断
1. 多重中断
就好比:你打游戏的时候被妈妈叫去吃饭,然后在吃饭的时候又被门铃叫过去开门。

2. 单重中断与多重中断

3. 中断屏蔽技术
例子-家中:
| 设备 | 警报内容 | 优先级 |
|---|---|---|
| 1. 烟雾报警器 | "着火啦!" | ⭐⭐⭐⭐⭐(最高) |
| 2. 门铃 | "有人敲门!" | ⭐⭐⭐⭐ |
| 3. 水龙头漏水 | "水溢出啦!" | ⭐⭐⭐ |
| 4. 闹钟 | "该起床了!" | ⭐⭐ |
现在,每个设备都有一个 "开关按钮" ------ 这就是 屏蔽触发器。
- 当你想忽略某个设备时,就把它的开关按下去(即"屏蔽");
- 当你想让它正常工作时,就打开开关(即"允许申请")。
这些开关组合在一起,形成一个 "屏蔽字寄存器",就像家里的"安全控制面板"。

| 中断源 | 屏蔽字(A B C D) | 解释 |
|---|---|---|
| A | 1110 | 屏蔽 B、C;允许 D 打断(因 D 更高) |
| B | 1111 | 全部屏蔽,防止它打断别人 |
| C | 0110 | 屏蔽 B;允许 A、D 打断 |
| D | 1110 | 屏蔽 A、B、C;允许自身运行 |

4. 拓展


程序中断方式



DMA方式
1. DMA控制器
DMA 控制器通过接管总线控制权,实现外设与主存之间的高速、直接数据传输,极大减轻了 CPU 的负担。
类比-搬家:
- 传统方式(中断/程序查询):你自己一趟趟搬,累死;
- DMA 方式:请个专业搬运工(DMA),你只告诉它"从哪搬到哪",然后去干别的事,等他搬完告诉你就行。
| 阶段 | 步骤 | 说明 |
|---|---|---|
| 传送前 | 1. 接受外设的 DMA 请求 → 发出总线请求 | 外设准备好数据,向 DMA 提出传输请求 |
| 2. CPU 响应 → 发出总线响应信号 → 放弃总线控制权 | CPU 让出总线,进入"DMA 操作周期" | |
| 传送时 | 3. 确定主存地址、长度 → 自动修改地址和计数 | DMA 控制器自动管理内存地址和剩余字数 |
| 4. 规定数据方向 → 执行读/写操作 | 实现主存 ↔ 外设之间的高速数据传输 | |
| 传送后 | 5. 向 CPU 报告完成 | 通知 CPU 数据已传完,CPU 恢复控制 |

| 组件 | 功能 |
|---|---|
| 主存地址计数器(AR) | 记录当前要访问的主存地址(简称 AR),每传送一个字自动加1。 |
| 传送长度计数器(WC) | 记录需传送的数据块长度(简称 WC),每传一个字减1;当计数为0时,表示传输完成。 |
| 数据缓冲寄存器 | 暂存每次传送的一个数据字(如一个字节或字),作为外设与主存之间的"中转站"。 |
| 设备选择逻辑 | 选择当前要通信的外设(I/O 设备)。 |
| 控制/状态逻辑 | 协调 DMA 请求、响应、同步等控制信号,管理整个传输流程。 |
| DMA请求触发器 | 当 I/O 设备准备好数据后,发出一个控制信号,使该触发器置位,向 CPU 提出总线请求(HRQ)。 |

2. DMA传送过程

3. 特点

4. DMA传送方式
你正在 用笔记本电脑打游戏 (代表 CPU 在执行程序),
同时 外接了一个高速移动硬盘在拷贝电影 (代表外设通过 DMA 传输数据到内存)。
现在的问题是:你的电脑只有一个"读写通道"(就像主存总线),打游戏需要频繁读取游戏资源,拷贝电影也需要大量读写硬盘和内存。两者都想用这个通道,怎么办?
- 停止CPU访问主存→"暂停游戏,专心拷贝"
- DMA 与 CPU 交替访存 → "轮流使用,一人一秒"
- **周期挪用(Cycle Stealing)**→ "趁你不注意,偷偷拷一点"


5. 小结
