计算机操作系统:5输入输出管理-学习笔记

5.1 I/O 管理概述

I/O 设备

  • 按使用特性分类
    • 人机交互类外部设备
    • 存储设备
    • 网络通信设备
  • 按传输速率分类
    • 低速设备:0~1000 B/s,如鼠标键盘
    • 中速设备:0~100000 B/s,如行式打印机、激光打印机
    • 高速设备:0~1000,000,000 B/s,如磁带、磁盘
  • 按信息交换的单位分类
    • 块设备:有结构,可寻址,速率高
    • 字符设备:无结构,通常采用中断驱动方式

I/O 控制方式

  • 程序直接控制
  • 中断驱动方式
  • DMA 方式
  • 通道控制方式
    • 通道是专门负责输入输出的处理机
    • 与 CPU 相比,通道指令类型单一,没有自己内存,需与 CPU 共享主存
    • 与 DMA 相比,DMA 需要 CPU 控制存储位置与长度,通道可以自己直接控制。DMA 只能对应一台设备与内存传递数据,通道可以控制多台设备与内存交换数据。

I/O 子系统的层次结构

  1. 用户层 I/O 软件:一部分为用户层非内核的库函数,一部分为内核态的需要系统调用来获取的服务
  2. 设备独立性软件
    • 价值
      • 将 物理设备 进一步封装为 逻辑设备
      • 增加设备分配的灵活性且易于实现 I/O 重定向
    • 功能
      • 执行所有设备的公有操作
      • 向用户层提供统一的接口
  3. 设备驱动程序:与设备直接相关,负责具体实现系统对设备发出的操作指令。屏蔽控制器之间的差异。
  4. 中断处理程序
  5. 硬件设备:通常包含一个机械部件和一个电子部件,且一般将电子部件称为 设备控制器(适配器)

设备控制器

  • 功能
    • 通过自带的寄存器接受识别 CPU 或通道的命令
    • 实现数据交换
    • 发现和记录设备自身的状态信息
    • 设备地址识别
  • 组成
    • 与 CPU 的接口:包括三类信号线,分别为 数据线、地址线、控制线
    • 设备控制器与设备的接口:包含 数据、控制、状态 三种信号
    • I/O 控制逻辑

I/O 管理需要完成的内容

  • 状态跟踪
  • 设备存取
  • 设备分配
  • 设备控制

5.2 I/O 核心子系统

I/O 核心子系统主要服务

  • I/O 调度
  • 缓冲与高速缓存
  • 设备分配与回收
  • 假脱机
  • 设备保护和差错处理

I/O 调度概念

  • 磁盘调度算法即为 I/O 调度的一种
  • 通过重新安排 I/O 请求的队列顺序,以改善系统总体效率和应用程序的平均响应时间
  • 可以使用缓冲、高速缓存等技术改善效率

高速缓存与缓冲区

  • Disk Cache:磁盘高速缓存
    • 逻辑上是磁盘高速缓存,物理上通常用内存,可单独开辟一块内存空间用于磁盘高速缓存,也可以直接和请求分页共享未利用的空间

缓冲区

  • 目的
    • 缓和 CPU 与 I/O 设备间速度不匹配的矛盾
    • 减少对 CPU 的中断频率和中断相应时间的限制
    • 解决基本数据单元大小不匹配问题
    • 提高 CPU 和 I/O 设备之间的并行性
  • 实现方式
    • 采用硬件缓冲器:成本较高
    • 采用缓冲区(内存区域)
  • 特点
    • 未写满不可读,未读完不可写
  • 技术分类
    • 单缓冲
    • 双缓冲:提高读写并行率
    • 循环缓冲
    • 缓冲池
  • 缓冲区与高速缓存的对比

设备的分配和回收

  • 设备分类
    • 独占式使用设备,如打印机
    • 分时式使用设备,如磁盘
    • SPOOLing方式使用的外部设备,共享打印机
  • 设备分配的相关数据结构
    • SDT(System Device Table) 系统控制表
      • 记录系统的所有设备信息,每条信息对应其 DCT 和驱动程序入口
    • DCT(Device Control Table) 控制器表
      • 每个设备描述中包含类型、标识符、状态、对应控制器控制表指针、设备队列队首指针
    • COCT(Controller Control Table) 控制器控制表
      • 记录与其相连的通道表指针、控制器队列的队首队尾指针
    • CHCT(Channel Control Table) 通道控制表
      • 通道状态、通道相连的控制器表首址、通道队列队首指针、通道队列队尾指针
  • 设备分配策略
    • 原则
      • 提升效率
      • 避免死锁
    • 分配方式
      • 静态分配:一次性分配给一个作业所有要求的设备
      • 动态分配:随用随分
    • 分配算法
      • 先请求先分配、优先级优先分配
    • 常用方式
      • 独占设备可静态可动态,但通常用静态
      • 共享设备常用动态
  • 设备分配的安全性
    • 安全分配
      • 进程请求 I/O 后便阻塞等待,直到 I/O 完成才恢复
      • 效率低,但不会死锁(破坏持有请求必要条件)
    • 不安全分配
      • 请求 I/O 后继续运行,并允许请求其他资源
      • 并行度高,效率高,但可能死锁,可分配时用如银行家算法进行计算
  • 逻辑设备到物理设备的映射
    • LUT(Logical Unit Table)逻辑设备表:用于逻辑设备至物理设备的映射
      • 两种建表方式
        • 整个系统只设置一张 LUT,不允许相同逻辑设备名,适用于单用户系统
        • 每个用户设置一张 LUT

SPOOLing 技术

  • 输入井和输出井(磁盘中)
  • 输入缓冲区和输出缓冲区
  • 输入进程和输出进程

Leave a Comment