# 输入输出系统

# IO 系统基本概念

# 输入 / 输出系统

  1. 外部设备
  2. 接口
  3. 输入设备
  4. 输出设备
  5. 外存设备

# IO 系统

  1. IO 软件
    驱动程序、用户程序、管理程序、升级补丁
  2. IO 硬件
    外部设备、设备控制器、接口、IO 总线

# IO 控制方式

  1. 程序查询方式
    CPU 通过程序不断查询 IO 设备是否已做好准备
  2. 程序中断方式
    IO 设备准备就绪向 CPU 发出中断请求才予以响应
  3. DMA 方式
    主存和 IO 设备之间有一条直接数据通路,交换信息时无需调用中断软件服务程序
  4. 通道方式
    系统中设有通道控制部件,每个通道挂载若干外设,主机在执行 IO 命令时,只需启动有关通道,通道将执行通道程序,从而完成 IO 操作

# 外部设备

# 输入设备

# 输出设备

# 外存储器

# 磁盘存储器

# 磁盘设备的组成
  1. 存储区域
  2. 硬盘存储器的组成
# 磁记录原理
# 磁盘的性能指标
  1. 磁盘的容量
  2. 记录密度
  3. 平均存取时间
  4. 数据传输率
# 磁盘地址
驱动器号柱面(磁道)号盘面号扇区号

# 磁盘阵列

# IO 接口

# IO 接口的功能

  1. 主机和外设的通信联络控制
  2. 地址译码和设备选择
  3. 数据缓冲
  4. 信号格式转换
  5. 传送控制命令和状态信息

# IO 接口的基本结构

CPU 与外设之间的信息传送,实际上是对接口中的某些寄存器进行读写

  • 内部接口
    与系统总线相连,实质上是对内存、CPU 相连,并行传输
  • 外部接口
    通过接口电缆与外设相连,数据传输可能是串行方式,需要 IO 接口具有串、并转换功能

# IO 接口的类型

  1. 按传送方式:并行接口、串行接口
  2. 按控制方式:程序查询接口、中断接口、DMA 接口
  3. 按功能选择的灵活性:可编程接口、不可编程接口

# IO 接口及其编址

  1. 统一编址(存储器映射方式)
    把 IO 端口当做存储器单元进行地址分配
    • 优点: 不需要专门的输入输出指令,操作更灵活方便,有较大的地址空间
    • 缺点:端口占用存储器地址使内存容量变小,输入输出操作执行速度慢
  2. 独立编址(IO 映射方式)
    IO 端口地址与存储器地址无关,需要设置专门的输入输出指令访问端口
    • 优点:输入输出指令与存储器指令有明显区别,程序编制清晰,便于理解
    • 缺点:输入输出指令少,控制复杂

# IO 方式

# 程序查询方式

信息交换控制由主机执行程序实现设置一个数据缓冲器(数据端口)和一个设备状态寄存器(设备端口),主机进行 IO 操作时,先发出询问信号,读取设备状态,根据设备状态决定下一步的操作

  1. CPU 执行初始化程序,预置传送参数
  2. 向 IO 设备发出命令字,启动 IO 设备
  3. 从外设接口读取状态信息
  4. CPU 不断查询 IO 设备状态,知道外设准备就绪
  5. 传送一次数据
  6. 修改地址和技术请参数
  7. 判断传送是否结束,未结束转到第 3 步

# 程序中断方式

CPU 在程序中安排好于摸个时刻启动某台外设,然后 CPU 继续执行原来的程序。一旦外设完成数据传送的准备工作,就主动向 CPU 发出中断请求,请求 CPU 为自己服务,在可以响应中断的条件下,CPU 暂停正在执行的程序,转去执行中断服务程序为外服务,在中断完成一次主机与外设之间的数据传送后,CPU 回到原来的程序

# 中断处理过程

  1. 关中断
  2. 保存断点
  3. 引出中断服务程序
  4. 保存现场和屏蔽字
  5. 开中断
  6. 执行中断服务程序
  7. 关中断
  8. 恢复现场和屏蔽字
  9. 开中断、中断返回

# DMA 方式(直接存储器存取方式)

完全由硬件进行成组信息传送的控制方式,在外设与内存之间开辟一条 “直接数据通道”,信息不再经过 CPU,降低了 CPU 在传送数据的开销,不需要保护、恢复 CPU 现场等操作

  • 适用于大批量数据的传送,硬件开销较大

# DMA 方式的特点

  • 主存与 CPU 固定联系脱钩,主存既可被 CPU 访问,又可被外设访问
  • 数据块传送时,主存地址的确定、传送数据的计数等由硬件电路直接实现
  • 主存中要开辟缓冲区,及时供给和接收外设的数据
  • DMA 传送速度快,CPU 和外设并行工作,提高系统的效率
  • DMA 在传送开始前要通过程序进行预处理,结束后通过中断方式进行后处理

# DMA 的传送方式

同时访问主存可能产生冲突,解决方法:

  1. 停止 CPU 访问主存
  2. DMA 和 CPU 交替访存
  3. 周期挪用

# DMA 的传送过程

  1. 预处理
    CPU 完成一些必要的准备工作
  2. 数据传送
    完全由 DMA 控制
  3. 后处理
    DMA 控制器向 CPU 发送中断请求,CPU 执行中断服务程序做 DMA 结束处理