11.输入输出系统

发布时间 2023-12-24 21:33:28作者: 风雨zzm

I/O系统管理的主要对象

I/O系统管理的主要对象是I/O设备和相应的设备控制器。其最主要的任务是,完成用户提出的I/O请求,提高I/O速率,以及提高设备的利用率,并能为更高层的进程方便地使用这些设备提供手段。

I/O设备类型

  • 传输速率分类:低速设备(键盘、鼠标)、中速设备(打印机)、高速设备(磁盘机)
  • 信息的交换的单位分类:块设备(磁盘)、字符显示设备(终端机、打印机)
  • 按设备共享属性分类:独占设备(打印机)、共享设备(磁盘)、虚拟设备

I/O接口(设备控制器)的组成

  1. 设备控制器与CPU的接口
  2. 设备控制器与设备的接口
  3. I/O逻辑

I/O控制方式

  1. 程序直接控制方式(CPU主动询问,CPU利用率低)

    ​ 早期的计算机系统无中断机构,CPU采用这种方式控制I/O操作,该方式又叫忙等待方式。在程序I/O方式中,由于CPU的高速性和I/O设备的低速性, 致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中, 造成对CPU的极大浪费。在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构, 使I/O设备无法向CPU报告它已完成了一个字符的输入操作。

  2. 中断驱动方式(CPU被动通知,CPU利用率稍微提高)

    允许I/O设备主动打断CPU工作,并请求服务

    • 广泛使用,适合低速设备(键盘、鼠标)

    • 中断驱动方式下的CPU以字(节)为单位对I/O进行干预

  3. DMA(直接存储性存取)方式(CPU被动通知,CPU利用率进一步提高)

    在I/O设备和内存之间开辟直接的数据交换通路

    • 数据传输基本单位数据块
    • 数据在设备与内存之间直接传递(不需经过CPU)
    • 仅在传送一个或多个数据块的开始结束才需CPU干预,其余均在控制器的控制下完成
    • DMA控制器的组成:(1)命令/状态寄存器CR (2)内存地址寄存器MAR (3)数据寄存器DR (4) 数据计数器DC
  4. 通道控制方式(CPU被动通知,CPU利用率更进一步提高)

    在DMA方式下,CPU每发出一条I/O指令只能去读(写)一个连续的数据块,当一次需要去读多个离散的数据块并分别送入不同的内存区域时,则需进行多次中断处理。I/O通道方式把CPU的干预由一个数据块减少为一组数据块,并可以实现CPU、通道、I/O设备三者的并行工作,更有效地提高了系统的资源利用率。

I/O方式 控制部件 I/O数据传输 CPU对I/O干预的数据单位
轮询程序I/O方式 CPU 内存←→CPU←→设备*/设备控制器 全程干预
中断驱动I/O方式 CPU中断控制器 内存←→CPU←→设备/设备控制器 字(节)
直接存储器访问方式(DMA) DMA控制器 内存←→设备/设备控制器 数据块
I/O通道方式 I/O通道 内存←→设备/设备控制器 一组数据块

设备驱动程序

将接收到的抽象要求转换为具体要求。
检查I/O请求的合法性,了解I/O设备的状态传递参数,
设置设备的工作方式。
发出I/O命令,启动I/O设备,完成I/O操作。
及时响应由控制器或通道发来的I/O请求并进行处理。
对设置有通道的系统,驱动程序根据用户的I/O请求可
自动构成通道程序

引入缓冲区的目的

  1. 缓和CPU与I/O设备间速度不匹配的矛盾

  2. 减少对CPU的中断频率, 放宽对CPU中断响应时间的限制

  3. 解决数据粒度不匹配的问题

  4. 提高CPU和I/O设备之间的并行性

SPOOLing系统

Spooling技术就是用于将一台独占设备改造成共享设备的一种技术

定义:在联机情况下实现的外围操作与CPU对数据的处理同时进行,称为假脱机操作,又叫Spooling。

SPOOLing系统组成:

image
  1. 输入井和输出井(模拟两块磁盘)
  2. 输入缓冲区和输出缓冲区(内存中开辟)
  3. 输入进程和输出进程(模拟外围机操作)
  4. 井管理进程(控制作业与磁盘井之间的信息交换)

SPOOLing系统特点:

  1. 提高了I/O的速度
  2. 将独占设备改造为共享设备
  3. 实现了虚拟设备功能

设备的数据结构

  • 系统设备表(SDT):整个系统一张
  • 设备控制表(DCT):系统为每一个设备设置了一张用于记录设备状态的数据结构
  • 控制器控制表(COCT)

逻辑设备名到物理设备名映射的实现

  • 逻辑设备表(LUT):为了实现设备的独立性,用于将逻辑设备名映射成物理设备名
  • LUT的设置方式: ① 整个系统设置一张LUT ② 每个用户设置一张LUT