跳转至

设备管理

设备概述

计算机常见 IO 设备

  • 设备分类
    • 按照数据传输方式分类
      • 字符设备:数据以字符为单位传输,如键盘、鼠标、打印机等。
      • 块设备:数据以块为单位传输,如硬盘、光盘等。
      • 流设备:数据以连续流的方式传输,如网络接口、串口等。
    • 按照访问方式分类
      • 顺序访问设备:只能按顺序访问数据,如磁带。
      • 随机访问设备:可以随机访问数据,如硬盘。
    • 按照功能分类
      • 输入设备:如键盘、鼠标、扫描仪等。
      • 输出设备:如显示器、打印机等。
      • 输入输出设备:如硬盘、网络接口等。
    • 按存在形式上(OS 角度):
      • 物理设备
      • 逻辑设备
    • 按资源属性(OS 管理角度):
      • 共享设备
      • 独占设备
      • 虚拟设备
  • 设备管理层次关系
    • 底层通信(中断处理):
      • 实现软件和硬件设备的通信。
    • 设备驱动:
      • 功能:接受来自上层的抽象操作请求,并负责操作的具体实施。
      • 主要组成:与设备打交道的软件、共享支持、缓冲区支持等。
    • 对用户层的 I/O 接口:
      • 每个 I/O 调用接口对应具体的设备抽象操作。
    • 使用设备的用户级程序:
      • 通过调用所提供的接口来实现对设备的使用或控制。

中断响应

  • 设备向中断控制器发送中断信号
  • 中断控制器比较各个中断的优先级。如果有未被屏蔽的中断,中断控制器向 CPU 发送中断信号。
  • CPU 现场保存后,通过询问中断控制器,确定中断源(中断号)。
  • 通过中断号,找到对应的中断处理程序。
  • 中断处理结束后,
    • 原运行在核心态:恢复现场,转向被中断的任务继续执行。
    • 原运行在用户态:检查调度标志、信号设置标志(runrun)。如果被设置,进行相应处理。否则恢复现场,继续执行。

设备的四类资源

  • I/O 地址
    • 需要把单个设备的 I/O 编址映射到系统全局编址。
  • I/O 中断请求
    • 中断控制器支持的中断数量有限,每个进行了编号。设备接入系统后,需要分配中断号。
  • I/O 通道
    • I/O 通道是一种 硬件 设施,带有专用处理器的,可以独立地完成系统处理器交付的 I/O 操作任务
    • 通道具有自己专门的指令集,即通道指令。通道执行来自处理器的通道程序,完成后只需向系统处理器发出中断,请求结束。
  • DMA 数据传输通道
    • 内存和 I/O 设备之间的自动化数据通路,在主存和 I/O 设备之间成块传送数据过程中,不需要 CPU 干预,CPU 资源的利用率再次得到提高 。
    • DMA 不仅设有中断机构,而且,还增加了 DMA 传输控制机构(类似于 CPU)。
  • I/O 缓冲区
    • 缓存区需求:
      • 提高 CPU 和外设的并行度
      • 缓解外设速度慢的瓶颈
    • 缓冲区分类:
      • 硬件缓冲:有些设备中会包含专门的硬件寄存器等用于缓冲。
      • 软件缓冲:直接在主存中。
        • 单缓冲:一个缓冲,外设和 CPU 互斥进行操作。
        • 双缓冲:设置两个缓冲区,交替使用。
        • 循环缓冲:类似于循环队列,依次使用。
        • 缓冲池:系统维护一组大小相同的缓冲区,进程和设备按需要申请,使用完后重新归入缓冲池中。

设备分配

  • 设备分配表

    • 设备控制表(device control table,DCT)

      • 一张 DCT 对应一个设备
      • 有指向 COCT 的指针

      DCT

    • 控制器控制表(controller control table,COCT)

      • 一张 COCT 对应一个控制器
      • 有指向 CHCT 的指针
    • 通道控制表(channel control table,CHCT)
      • 一张 CHCT 对应一个通道
      • 有指向 COCT 的指针
    • 系统设备表(system device table,SDT)
      • 一张 SDT 对应一个系统
      • 有指向 DCT 的指针

  • 设备分配方式

    • 静态分配
      • 用于对独占设备的分配,在用户作业开始执行前由系统一次性分配该作业所要求的全部设备。
      • 静态分配方式不会出现死锁,但设备的利用率低。因此,静态分配方式不符合分配的总原则。
    • 动态分配
      • 在进程执行过程中根据执行需要进行。
      • 动态分配方式有利于提高设备的利用率,但如果分配算法使用不当,则有可能造成进程死锁。

上层统一接口

  • 统一标识,统一操作
  • 操作:抽象为文件名-文件操作
  • 主设备号:可以找到相应的设备驱动程序
  • 次设备号:指定具体的物理设备

设备驱动程序

  • 设备驱动程序是操作系统内核的一部分,负责与硬件设备进行通信。
  • 设备驱动程序的主要功能包括:
    • 初始化设备:在设备启动时进行初始化设置。
    • 处理 I/O 请求:接收来自上层的 I/O 请求,并将其转换为设备可以理解的格式。
    • 处理中断:响应设备发出的中断信号,处理设备状态变化。
    • 错误处理:处理设备操作中的错误情况。