第七章 输入输出系统
第一节 I/O接口
- I/O 接口(I/O控制器)
- 是主机和外设之间的交接界面
- 通过接口可以实现主机和外设之间的信息交换。
- 为什么要使用I/O接口?
- 接口是为了解决主机和外设在信息形式和工作速度上的差异而设置的
「IO接口」功能
- I/O 接口的主要功能如下:
- 1)进行地址译码和设备选择
- CPU 送来选择外设的地址码后
- 接口必须对地址进行译码以产生设备选择信息
- 使主机能和指定外设交换信息
- 2)实现主机和外设的通信联络控制
- 解决主机与外设时序配合问题
- 协调不同工作速度的外设和主机之间交换信息
- 以保证整个计算机系统能统一、协调地工作。
- 3)实现数据缓冲
- CPU 与外设之间的速度不匹配
- 为消除速度差异,接口必须设置数据缓冲寄存器,用于数据暂存
- 以避免因速度不一致而丢失数据
- 4)信号格式的转换
- 外设与主机两者的电平、数据格式都存在差异
- 接口应提供计算机与外设的信号格式的转换功能
- 如电平转换、并/串或串/并转换、模/数或数/模转换等。
- 5)传送控制命令和状态信息
- CPU 要启动某一外设时
- 通过接口中的命令寄存器向外设发出启动命令
- 外设准备就绪时
- 则将
“准备好”状态信息
送回接口中的状态寄存器 - 并反馈给CPU
- 外设向 CPU 提出中断请求时
- CPU 也应有相应的响应信号反馈给外设
- 1)进行地址译码和设备选择
「I/O接口」基本结构
- I/O 接口如何与内存、CPU相连?
- 在主机侧通过I/O 总线
- 通过数据总线
- 在数据缓冲寄存器与内存或CPU的寄存器之间进行数据传送。
- 同时接口和设备的状态信息被记录在状态寄存器中,通过数据线将状态信息送到CPU。
- CPU对外设的控制命令也通过数据线传送,一般将其送到 I/O 接口的控制寄存器。
- 状态寄存器和控制寄存器在传送方向上是相反的。
「I/O接口」地址线
- 用于给出要访问的I/O接口中的寄存器的地址
- 寄存器的地址和读/写控制信号一起被送到I/O接口的控制逻辑部件
- 通过控制线传送来的读/写信号确认是读寄存器还是写寄存器
- 此外控制线还会传送一些仲裁信号和握手信号
「I/O接口」I/O 控制逻辑
- 能对控制寄存器中的命令字进行译码
- 并将译码得到的控制信号通过外设界面控制逻辑送到外设
- 将数据缓冲寄存器的数据发送到外设
- 从外设接收数据到数据缓冲寄存器
- 具有收集外设状态到状态寄存器的功能。
「I/O接口」I/O指令
- 什么是I/O指令?
- 通过I/O指令完成对数据缓冲寄存器、状态/控制寄存器的访问操作
- I/O指令使用范围?
- I/O指令只能在操作系统内核的底层I/O软件中使用
- 是一种特权指令
- 注意
- 接口和端口是两个不同的概念
- 什么是端口?
- 端口是指接口电路中可以进行读/写的寄存器
- 什么是接口?
- 若干端口加上相应的控制逻辑组成接口
「I/O接口」接口类型
- 从不同的角度看,I/O接口可以分为不同的类型。
- 按数据传送方式分
- 并行接口(一字节或一个字的所有位同时传送)
- 串行接口(一位一位地传送)
- 接口要完成数据格式的转换。
- 注意:这里所说的数据传送方式,指的是外设和接口一侧的传送方式。
- 按主机访问I/O设备的控制方式分
- 程序查询接口
- 中断接口
- DMA 接口等
- 按功能选择的灵活性分
- 可编程接口
- 不可编程接口
「I/O端口」端口编址
- I/O 端口
- 是指接口电路中可被 CPU 直接访问的寄存器
- 接口的组成
- 数据端口
- 状态端口
- 控制端口
- 若干端口加上相应的控制逻辑电路
- CPU 对端口的操作
- 数据端口
- 执行读写操作
- 状态端口
- 执行读操作
- 控制端口
- 执行写操作
- 数据端口
- I/O 端口能被CPU 访问的条件
- 必须要对各个端口进行编号
- 每个端口对应一个端口地址
- I/O 端口的编址方式
- 存储器统一编址(存储器映射方式)
- 是指把 I/O 端口当作存储器的单元进行地址分配
- CPU 不需要设置专门的 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 接口发出命令字,启动 I/O 设备
- 从外设接口读取其状态信息
- CPU 不断查询 I/O 设备状态,直到外设准备就绪
- 传送一次数据
- 修改地址和计数器参数
- 判断传送是否结束,若未结束转第3步,直到计数器为0
程序查询控制方式中CPU的动作
- 在程序查询控制方式下
- CPU 一旦启动I/O
- 就必须停止现行程序的运行
- 并在现行程序中插入一段程序
程序查询方式的主要特点
- CPU有“踏步”等待现象
- CPU 与 I/O 串行工作
- 这种方式的接口设计简单、设备量少
- 但 CPU 在信息传送过程中要花费很多时间来查询和等待
- 一段时间内只能和一台外设交换信息
- 效率大大降低
「I/O方式」程序中断方式
程序中断的基本概念
- 程序中断是指在计算机执行现行程序的过程中
- 出现某些急需处理的异常情况或特殊请求
- CPU 暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,处理完毕后再返回到现行程序的断点处,继续执行原程序。
- 早期中断技术的功能
- 处理数据传送
- 如今中断技术的主要功能有
- 实现 CPU 与 I/O 设备的并行工作
- 处理硬件故障和软件错误
- 实现人机交互,用户干预机器需要用到中断系统
- 实现多道程序、分时操作
- 多道程序的切换需借助于中断系统
- 实时处理需要借助中断系统来实现快速响应
- 实现应用程序和操作系统(管态程序)的切换,称为“软中断”
- 多处理器系统中各处理器之间的信息交流和任务切换
- 程序中断方式的思想
- CPU 在程序中启动外设,然后继续执行当前的程序
- 不需要像查询方式那样一直等待外设准备就绪
- 外设
- 一旦外设完成数据传送的准备工作
- 就主动向CPU发出中断请求
- 请求CPU为自己服务
- CPU
- 在可以响应中断的条件下
- CPU 暂时中止正在执行的程序
- 转去执行中断服务程序为外设服务
- 在中断服务程序中完成一次主机与外设之间的数据传送
- 传送完成后
- CPU返回原来的程序
- 在可以响应中断的条件下
- 如图7.3所示。
- CPU 在程序中启动外设,然后继续执行当前的程序
中断请求
- 中断源
- 请求 CPU 中断的设备或事件
- 一台计算机允许有多个中断源
- 每个中断源向 CPU 发出中断请求的时间是随机的
- 为记录中断事件并区分不同的中断源
- 中断系统需对每个中断源设置中断请求标记触发器
- 当其状态为“1”时,表示中断源有请求
- 这些触发器可组成中断请求标记寄存器
- 该寄存器可集中在 CPU 中,也可分散在各个中断源中
- 可屏蔽中断(通过 INTR 线发出)
- 优先级最低,在关中断模式下不会被响应
- 不可屏蔽中断(通过 NMI 线发出)
- 用于处理紧急和重要的事件,如时钟中断、电源掉电等
- 其优先级最高
- 其次是内部异常,即使在关中断模式下也会被响应
中断响应判优
- 中断响应优先级
- 指 CPU 响应中断请求的先后顺序
- 由于许多中断源提出中断请求的时间都是随机的
- 因此当多个中断源同时提出请求时
- 需通过中断判优逻辑来确定响应哪个中断源的请求
- 中断响应的判优通常是通过硬件排队器实现的
- 不可屏蔽中断 > 内部异常 > 可屏蔽中断
- 内部异常中:硬件故障 > 软件中断
- DMA 中断请求优先于 I/O设备传送的中断请求
- 在 I/O传送类中断请求中
- 高速设备优先于低速设备
- 输入设备优先于输出设备
- 实时设备优先于普通设备
- 注意
- 中断优先级包括
- 响应优先级:在硬件线路上是固定的,不便改动。
- 处理优先级:可利用中断屏蔽技术动态调整,以实现多重中断
- 中断优先级包括
CPU 响应中断的条件
- 原因
- CPU 在满足一定的条件下响应中断源发出的中断请求
- 并经过一些特定的操作,转去执行中断服务程序
- CPU 响应中断条件
- 中断源有中断请求
- CPU 允许中断及开中断(异常和不可屏蔽中断不受此限制)
- 一条指令执行完毕(异常不受此限制),且没有更紧迫的任务
TIP
+ I/O设备的就绪时间是随机的
+ CPU在**每条指令执行阶段结束前**向接口发出**中断查询信号**
+ 以获取 I/O 的**中断请求**
+ **CPU响应中断的时间**是在**每条指令执行阶段的结束时刻**
+ 这里说的中断仅指 I/O 中断,**内部异常不属于**此类情况
中断响应过程
- CPU 响应中断后,经过某些操作,转去执行中断服务程序。
- 这些操作是由硬件直接实现的,我们将它称为中断隐指令。
- 中断隐指令并不是指令系统中的一条真正的指令,只是一种虚拟的说法,本质上是硬件的一系列自动操作。
- 它所完成的操作如下
- 关中断
- CPU 响应中断后
- 首先
- 要保护程序的断点和现场信息
- 过程中
- CPU 不能响应更高级中断源的中断请求
- 否则
- 若断点或现场保存不完整
- 在中断服务程序结束后
- 就不能正确地恢复并继续执行现行程序
- 保存断点
- 为保证在中断服务程序执行完后能正确地返回到原来的程序
- 必须将原程序的断点(指令无法直接读取的PC和PSW 的内容)
- 保存在栈或特定寄存器中。
- 必须将原程序的断点(指令无法直接读取的PC和PSW 的内容)
- 注意异常和中断的差异
- 异常指令通常并没有执行成功
- 异常处理后要重新执行,所以其断点是当前指令的地址。
- 中断的断点则是下一条指令的地址。
- 为保证在中断服务程序执行完后能正确地返回到原来的程序
- 引出中断服务程序
- 识别中断源
- 将对应的服务程序入口地址送入程序计数器PC。
- 识别的两种方法
- 硬件向量法
- 软件查询法
- 识别中断源
- 关中断
中断向量
- 中断识别分为
- 向量中断
- 非向量中断(软件查询法)
- 为什么需要中断向量?
- 每个中断都有一个唯一的类型号
- 每个中断类型号都对应一个中断服务程序
- 每个中断服务程序都有一个入口地址
- CPU 必须找到入口地址,即中断向量。
- 中断向量表
- 集中存放系统中的全部中断向量的存储器的某个区域
- 中断向量法
- CPU 响应中断后,通过识别中断源获得中断类型号
- 然后据此计算出对应中断向量的地址
- 再根据该地址从中断向量表中取出中断服务程序的入口地址
- 并送入程序计数器 PC,以转而执行中断服务程序
- 向量中断
- 采用中断向量法的中断
中断处理过程
- 关中断
- 保存断点
- 中断服务程序寻址
- 保存现场和屏蔽字
- 进入中断服务程序后首先要保存现场和中断屏蔽字
- 现场信息是指用户可见的工作寄存器的内容
- 它存放着程序执行到断点处的现行值。
- 注意
- 现场和断点,这两类信息都不能被中断服务程序破坏。
- 现场信息
- 因为用指令可直接访问
- 所以通常在中断服务程序中通过指令把它们保存到栈中
- 即由软件实现
- 断点信息
- 由 CPU 在中断响应时自动保存到栈或指定的寄存器中
- 即由硬件实现
- 开中断
- 允许更高级中断请求得到响应,实现中断嵌套
- 执行中断服务程序
- 中断请求的目的
- 关中断
- 保证在恢复现场和屏蔽字时不被中断
- 恢复现场和屏蔽字
- 将现场和屏蔽字恢复到原来的状态
- 开中断、中断返回
- 中断服务程序的最后一条指令通常是一条中断返回指令
- 使其返回到原程序的断点处,以便继续执行原程序。
TIP
1~3
由中断隐指令(硬件自动) 完成4~9
由中断服务程序完成什么是恢复现场?
- 由中断服务程序完成
- 是指在中断返回前
- 必须将寄存器的内容恢复到中断处理前的状态
- 中断返回由中断服务程序的最后一条中断返回指令完成。
单重中断
- CPU 在执行中断服务程序的过程中
- 又出现了新的更高优先级的中断请求
- 而CPU对新的中断请求不予响应
多重中断(中断嵌套)
- 若 CPU 暂停现行的中断服务程序
- 转去处理新的中断请求
- CPU 要具备多重中断的功能满足下列条件:
- 在中断服务程序中提前设置开中断指令。
- 优先级别高的中断源有权中断优先级别低的中断源。
- 中断处理优先级
- 定义
- 是指多重中断的实际优先级处理次序
- 可以利用中断屏蔽技术动态调整
- 从而可以灵活地调整中断服务程序的优先级
- 使中断处理更加灵活。
- 不使用中断屏蔽技术
- 则处理优先级和响应优先级相同。
- 现代计算机中的中断屏蔽技术
- 每个中断源都有一个屏蔽触发器
1
表示屏蔽该中断源的请求0
表示可以正常申请- 所有屏蔽触发器组合在一起便构成一个屏蔽字寄存器
- 屏蔽字寄存器的内容称为屏蔽字
- 定义
- 中断处理优先级
- 关于中断屏蔽字的设置及多重中断程序执行的轨迹
多重中断举例
第二节 DMA方式
- 什么是DMA方式?
- DMA 方式是一种完全由硬件进行成组信息传送的控制方式,
- 它具有程序中断方式的优点,
- 即在数据准备阶段,CPU 与外设并行工作。
- DMA 方式在外设与内存之间开辟一条
“直接数据通道”
- 信息传送不再经过CPU
- 降低了 CPU 在传送数据时的开销
- 因此称为直接存储器存取方式
- DMA 方式在外设与内存之间开辟一条
- 即在数据准备阶段,CPU 与外设并行工作。
- DMA方式中的中断
- 中断的作用仅限于故障和正常传送结束时的处理
- 优点:DMA操作简单(数据传送不经过CPU,也就不需要保护、恢复CPU 现场等繁琐操作)
- 缺点:硬件开销比较大(适用于大批量数据的传送)
「DMA」特点
主存和 DMA 接口之间有一条直接数据通路。
DMA 方式传送数据不需要经过CPU
因此不必中断现行程序
I/O与主机并行工作
程序和传送并行工作
DMA 使主存与 CPU 的固定联系脱钩
- 主存既可被 CPU 访问,又可被外设访问
DMA数据块传送时
- 主存地址的确定、传送数据的计数等都由硬件电路直接实现。
主存中要开辟专用缓冲区,及时供给和接收外设的数据。
DMA 传送速度快
- CPU和外设并行工作,提高了系统效率。
DMA 在各时段的处理
- 传送开始前
- 要通过程序进行预处理
- 结束后
- 要通过中断方式进行后处理
- 传送开始前
「DMA」DMA 控制器
什么是DMA控制器(DMA接口)?
- DMA 方式中,对数据传送过程进行控制的硬件
「DMA控制器」数据传送步骤
- 当 I/O 设备需要进行数据传送时,通过 DMA 控制器向 CPU 提出 DMA 传送请求
- CPU 响应之后将让出系统总线
- 由 DMA 控制器接管总线进行数据传送。
「DMA控制器」主要功能
- 接受外设发出的 DMA 请求,并向CPU发出总线请求。
- CPU 响应并发出总线响应信号,DMA 接管总线控制权,进入DMA 操作周期。
- 确定传送数据的主存单元地址及长度,并自动修改主存地址计数和传送长度计数。
- 规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
- 向 CPU 报告 DMA 操作结束。
「DMA控制器」组成
- 主存地址计数器:存放要交换数据的主存地址。
- 传送长度计数器:记录传送数据的长度,计数溢出时,数据即传送完毕,自动发中断请求信号。
- 数据缓冲寄存器:暂存每次传送的数据。
- DMA 请求触发器:每当 I/O设备 准备好数据后,给出一个控制信号,使 DMA 请求触发器置位。
- “控制/状态”逻辑:由控制和时序电路及状态标志组成,用于 指定传送方向、修改传送参数,并对 DMA 请求信号、CPU 响应信号 进行协调和同步。
- 中断机构:当一个数据块传送完毕后触发中断机构,向 CPU 提出中断请求。
「DMA控制器」接管总线(对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 请求时
- 周期挪用(或周期窃取)
- 当I/O设备有 DMA 请求时,有三种情况
- CPU 不在访存(如CPU正在执行乘法指令)
- 因此 I/O的访存请求与 CPU 未发生冲突
- CPU 正在访存
- 此时必须待存取周期结束后,CPU 再将总线占有权让出
- I/O和 CPU 同时请求访存
- 出现访存冲突,CPU 暂时放弃总线占有权
- I/O访存优先级高于CPU 访存
- 因为 I/O 不立即访存就可能丢失数据
- 此时由 I/O 设备挪用一个或几个存取周期
- 传送完一个数据后立即释放总线
- 是一种单字传送方式。
- CPU 不在访存(如CPU正在执行乘法指令)
- 当I/O设备有 DMA 请求时,有三种情况
- DMA 与 CPU 交替访存
- 适用于 CPU 的工作周期比主存存取周期 长的情况
- 举例
- CPU 的工作周期是 1.2us
- 主存的存取周期小于 0.6us
- 则可将一个 CPU 周期分为
和 两个周期 - 其中
专供DMA访存 专供CPU访存
- 这种方式不需要总线使用权的申请、建立和归还过程
- 总线使用权是通过
和 分时控制的
- 举例
- 适用于 CPU 的工作周期比主存存取周期 长的情况
「DMA」传送过程
- 预处理
- 由 CPU 完成一些必要的准备工作。
- 首先
- CPU 执行几条 I/O 指令
- 用以测试 I/O 设备状态
- 初始化 DMA 控制器中的有关寄存器
- 设置传送方向
- 启动该设备等。
- 然后
- CPU 继续执行原来的程序
- 直到 I/O 设备准备好发送的数据(输入情况)或接收的数据(输出情况)时
- I/O设备向 DMA 控制器发送 DMA 请求
- 再由 DMA 控制器向 CPU 发送总线请求(有时将这两个过程统称为 DMA 请求),用以传输数据。
- 数据传送
- 可以以单字节(或字) 为基本单位,也可以以数据块为基本单位
- 对于以数据块为单位的传送(如硬盘)
- DMA 占用总线后的数据输入和输出操作都是通过循环来实现的
- 该循环也是由 DMA 控制器(而非通过CPU 执行程序)实现
- 即数据传送阶段完全由 DMA (硬件)控制
- 后处理
- DMA 控制器向 CPU 发送中断请求
- CPU 执行中断服务程序做 DMA 结束处理
- 包括校验送入主存的数据是否正确
- 测试传送过程中是否出错(错误则转诊断程序)
- 决定是否继续使用 DMA 传送其他数据等
「DMA」DMA方式和中断方式的区别
DMA方式 | 中断方式 | |
---|---|---|
CPU资源的占用 | 不中断现行程序,无需保护现场 除了预处理和后处理,其他时候不占用任何CPU 资源 | 程序的切换,需要保护和恢复现场 |
响应时期 | 只能发生在每条指令执行结束时(执行周期后) | 可以发生在任意一个机器周期结束时 (取指、间址、执行周期后均可) |
CPU的干预 | 不需要 CPU 的干预 因此数据传输率非常高,适合于高速外设的成组数据传送。 | 需要 CPU 的干预 |
优先级 | 高 | 低 |
功能 | 仅局限于大批数据的传送 | 具有处理异常事件的能力 |
数据传送 | 靠硬件传送 | 靠程序传送 |
第三节 疑难点
I/O 设备有哪些编址方式?各有何特点?
- 统一编址
- 是在主存地址中划出一定的范围作为 I/O地址
- 以便通过访存指令即可实现对 I/O的访问
- 但主存的容量相应减少。
- 独立编址
- 是指 I/O 地址 和主存是分开的
- I/O 地址不占主存空间
- 但访存需专门的 I/O 指令
CPU 响应中断应具备哪些条件?
- 在 CPU 内部设置的中断屏蔽触发器必须是开放的。
- 外设有中断请求时 2. 中断请求触发器必须处于
“1”
状态 + 保持中断请求信号。 3. 外设(接口)中断允许触发器必须为“1”
+ 这样才能把外设中断请求送至CPU。 - 具备上述三个条件时,CPU 在现行指令结束的最后一个状态周期响应中断。
中断响应优先级和中断处理优先级分别指什么?
- 中断响应优先级
- 是由硬件排队线路或中断查询程序的查询顺序决定的,不可动态改变;
- 中断处理优先
- 可以由中断屏蔽字来改变
- 反映的是正在处理的中断是否比新发生的中断的处理优先级低(屏蔽位为
“0”
,对新中断开放)- 若是,则中止正在处理的中断,转到新中断去处理,处理完后再回到刚才被中止的中断继续处理
中断向量、向量地址,向量中断三个概念是什么关系?
- 中断向量
- 定义
- 中断服务程序的入口地址
- 中断服务程序:每个中断源对应的处理程序
- 中断服务程序的入口地址
- 中断向量表
- 所有中断的中断服务程序入口地址构成的一个表
- 中断向量跳转表
- 中断服务程序入口的跳转指令构成的一张表
- 定义
- 向量地址(中断类型号)
- 定义
- 中断向量表或中断向量跳转表中
- 每个表项所在的内存地址或表项的索引值
- 中断向量表或中断向量跳转表中
- 定义
- 向量中断
- 定义
- 一种识别中断源的技术或方式
- 识别中断源的目的
- 找到中断源对应的中断服务程序的入口地址的地址
- 即获得向量地址。
- 定义
程序中断和调用子程序有何区别?
两者的根本区别主要表现在服务时间和服务对象上不一样。
调用子程序过程
- 发生的时间是已知的和固定的
- 即在主程序中的调用指令(CALL)执行时
- 发生主程序调用子程序过程
- 调用指令所在位置是已知的和固定的
程序中断过程
- 发生的时间一般是随机的
- CPU 执行主程序时收到中断源提出的中断申请,发生中断过程
- 中断申请一般由硬件电路产生
- 申请提出时间是随机的
调用子程序和程序中断产生原因的区别
- 调用子程序
- 是程序设计者事先安排的
- 执行中断服务程序
- 是由系统工作环境随机决定的
- 调用子程序
子程序与主程序与中断服务程序之间的关系
- 子程序与主程序
- 子程序完全为主程序服务,两者属于主从关系。
- 主程序需要子程序时就去调用子程序,
- 并把调用结果带回主程序继续执行。
- 中断服务程序与主程序
- 二者一般是无关的,不存在谁为谁服务的问题
- 两者是平行关系
- 子程序与主程序
调用过程的区别
- 主程序调用子程序的过程
- 完全属于软件处理过程,不需要专门的硬件电路
- 中断处理系统
- 是一个软/硬件结合的系统,需要专门的硬件电路才能完成中断处理的过程。
- 主程序调用子程序的过程
嵌套层级的区别
- 子程序嵌套
- 可实现若干级,嵌套的最多级数受计算机内存开辟的堆栈大小限制
- 中断嵌套级数
- 主要由中断优先级来决定,一般优先级数不会很大。
- 子程序嵌套
程序中断方式相比于程序查询方式中的优缺点
- 从宏观上看
- 程序中断方式克服了程序查询方式中的 CPU
“踏步”现象
- 实现了 CPU 与 I/O 并行工作
- 提高了 CPU 的资源利用率
- 程序中断方式克服了程序查询方式中的 CPU
- 微观操作分析
- CPU 在处理中断服务程序时,仍需暂停原程序的正常运行
- 尤其是当高速 I/O 设备或辅助存储器频繁地、成批地与主存交换信息时
- 需要不断打断 CPU 执行现行程序,而执行中断服务程序
- 从宏观上看