【OS笔记40】:设备管理 - 通道控制方式

文章目录

    • [1. 为什么要引入通道?(DMA 的局限性)](#1. 为什么要引入通道?(DMA 的局限性))
    • [2. 通道的概念](#2. 通道的概念)
    • [3. 通道的三种类型](#3. 通道的三种类型)
    • [4. 通道系统的结构示例 (IBM-370)](#4. 通道系统的结构示例 (IBM-370))
    • [5. 通道程序](#5. 通道程序)
    • [6. 总结:通道 I/O 的启动与结束](#6. 总结:通道 I/O 的启动与结束)
      • [核心考点:通道与DMA 的区别](#核心考点:通道与DMA 的区别)

1. 为什么要引入通道?(DMA 的局限性)

DMA 方式虽然解放了 CPU 的数据搬运工作,但仍存在不足:

  1. CPU 干预仍较多:数据的传送方向、内存地址、数据长度等参数都需要 CPU 来设置。
  2. 独占性:一旦开始传送,DMA 控制器就占用了总线。
  3. 缺乏灵活性:DMA 仅仅解决了"数据传送",但对外设的管理和某些控制操作(如寻道)仍需 CPU 操心。

通道技术的出现 ,真正实现了 CPU 与 I/O 设备(及 I/O 与 I/O 之间)的并行工作

核心特征 :在需要进行 I/O 数据交换时,CPU 只需干预两次

  1. 启动通道(下达命令)。
  2. 处理中断(通道完成任务后汇报)。

2. 通道的概念

  • 定义 :通道相当于一台小型处理机(I/O Processor)
  • 职责 :它接受 CPU 的委托,独立执行通道程序,对外部设备的 I/O 操作进行控制。
  • 目标 :实现内存和外设之间的成批数据传输。

3. 通道的三种类型

根据信息交换方式和连接设备的速度,通道分为三种类型:

a) 字节多路通道

Byte Multiplexor Channel

  • 特点
    • "多路":包含若干个子通道,每个子通道连接一台设备。
    • "字节" :以字节为单位进行数据传输。
    • 分时共享:利用不同设备在传送两个字节之间的空闲时间(因为低速设备很慢),轮流为多个设备服务。
  • 适用设备 :主要用于连接低速设备(如键盘、打印机、卡片输入机)。
  • 原理:例如传送一个字节需要 1ms,而通道处理只需几百纳秒,通道就利用这 1ms 的空闲去处理其他设备的请求。

b) 数组选择通道

Selector Channel

  • 特点
    • 独占 :虽然可以连接多台设备,但同一时刻只能为一个设备服务
    • 成组 :一旦选中某台设备,就一直为它服务,直到该设备的数据传输工作全部结束
  • 适用设备 :主要用于连接高速外设(如磁带、磁盘)。
  • 缺点:利用率相对较低(因为高速设备也有寻道等慢速操作,此时通道空闲但也无法服务其他设备)。

c) 数组多路通道

Block Multiplexor Channel

这是前两种方式的结合,综合了优点。

  • 特点
    • 数据传送时 :类似选择通道,独占,以数据块为单位高速传输。
    • 控制操作时 :当设备在做寻址、寻道等控制性慢速操作时,通道暂时断开连接,转去为其他设备服务。
  • 适用设备 :多用于中高速设备
  • 效率:效率最高,结合了字节多路通道的"分时并行"和选择通道的"高速传输"特点。

4. 通道系统的结构示例 (IBM-370)

为理解通道如何连接设备,以下为经典的 IBM-370 结构:

  • 此结构展示了多通路、多控制器的复杂拓扑结构,保证了系统的高可靠性和高吞吐量。

5. 通道程序

Channel Program

通道作为"小处理机",其运行依赖于通道程序

  • 硬件组成:通道拥有自己的运算逻辑、寄存器。
  • 指令系统 :通道具有专门的指令集,称为通道指令
  • 工作方式
    • CPU 把通道程序预先存储在内存中。
    • CPU 发出"启动 I/O"指令,告知通道程序在内存中的位置。
    • 通道取出指令并执行,控制设备进行操作。

6. 总结:通道 I/O 的启动与结束

核心考点:通道与DMA 的区别

特性 DMA 方式 通道方式
控制程度 CPU 控制数据的地址、长度、方向 通道程序控制这些细节,CPU 仅发启动指令
并行度 较低(每台设备通常需一个 DMA 控制器) 极高(一个通道控制器可控制多台设备)
中断频率 块传输结束时中断 一组复杂的 I/O 操作全部结束才中断
本质 硬件控制器 具有指令系统的特殊处理器
相关推荐
自不量力的A同学2 小时前
Midjourney 推出面向动漫领域的图像生成模型:Niji V7
笔记
狐572 小时前
2026-01-12-云计算速成课-期末复习
笔记·云计算·期末复习
saoys2 小时前
Opencv 学习笔记:形态学开 / 闭运算(解决噪点与孔洞问题)
笔记·opencv·学习
深蓝海拓3 小时前
PySide6,QEventLoop.exec()的使用
笔记·python·qt·学习·pyqt
hetao17338373 小时前
2026-01-09~12 hetao1733837 的刷题笔记
c++·笔记·算法
代码游侠3 小时前
学习笔记——嵌入式系统与51单片机核心
笔记·单片机·嵌入式硬件·学习·51单片机
今儿敲了吗3 小时前
计算机网络第三章笔记(四)
笔记·计算机网络
狐574 小时前
2026-01-12-LeetCode刷题笔记-1266-访问所有点的最小时间.md
笔记·算法·leetcode
狐574 小时前
2026-01-11-云计算总复习-期末复习
笔记·云计算·期末复习