操作系统--设备管理

1、I/O设备的基本概念与分类

 概念:将数据Input/Output (输入/输出)计算机的外部设备

  • 按使用特性分类:人机交互类外部设备、存储设备、网络通信设备
  • 按传输速率分类:低速设备、中速设备、高速设备
  • 按信息交换的单位分类:块设备、字符设备

2、I/O控制器

2.1 主要功能

  • 接受和识别CPU发出的命令(要有控制寄存器)
  • 向CPU报告设备的状态(要有状态寄存器)
  • 数据交换(要有数据寄存器,暂存输入/输出的数据)
  • 地址识别( 由I/O逻辑实现)

2.2 控制器的组成

  • 地址识别( 由I/O逻辑实现)
  • I/O逻辑(负责识别CPU发出的命令,并向设备发出命令)
  • 控制器与设备之间的接口(实现控制器与设备之间的通信)

在这里插入图片描述

2.3 两种寄存器编址方式

  • 内存映射I/O:控制器中的寄存器与内存统一编制,可以采用对内存进行操作的指令来对控制器进行操作
  • 寄存器独立编制:控制器中的寄存器独立编制,需要设置专门]的指令来操作控制器

3、I/O控制方式

完成一次读/写的过程 CPU干预频率 每次I/O的数据传输单位 数据流向
程序直接控制方式 CPU发出I/O指令后需要不断轮询 设备→CPU→内存
中断驱动方式 CPU发出I/O指令后可以做其他事,本次I/O完成后设备控制器发出中断信号 设备→CPU→内存
DMA方式 CPU发出I/O指令后可以做其他事,本次I/O完成后DMA控制器发出中断信号 设备→内存
通道控制方式 CPU发出I/O指令后可以做其他事,通道会执行通道程序以完成I/O,完成后通道向CPU发出中断信号 一组块 设备→内存

4、I/O软件层次结构

  • 用户层软件:实现与用户交互的接口,向上提供方便易用的库函数
  • 设备独立性软件
    • 向上层提供统一的调用接口
    • 设备的保护
    • 差错处理
    • 设备的分配与回收
    • 数据缓冲区管理
    • 建立逻辑设备名到物理设备名的映射关系
  • 设备驱动程序:设置设备寄存器、检查设备状态
  • 中断处理程序:进行中断处理
  • 硬件:执行I/O操作,由机械部件、电子部件组成

在这里插入图片描述
​  属于操作系统内核部分的也称为I/O核心子系统

用户发出I/O请求,处理的具体过程:

  • 用户通过调用用户层软件提供的库函数发出的I/O请求
  • 用户层软件通过“系统调用”请求设备独立性软件层的服务
  • 设备独立性软件层根据LUT调用设备对应的驱动程序
  • 驱动程序向I/O控制器发出具体命令
  • 等待I/O完成的进程应该被阻塞,因此需要进程切换,而进程切换必然需要中断处理

5、I/O核心子系统的核心功能

5.1 假脱机技术

​  又叫SPOOLing技术,用软件的方式模拟脱机技术

  • 输入井和输出井一模拟脱机输入/输出时的磁带
  • 输入进程和输出进程一-模 拟脱机输入/输出时的外围控制机
  • 输入缓冲区和输出缓冲区-一内存中的缓冲区, 输入、输出时的“中转站”

在这里插入图片描述

5.2 设备的分配与回收

5.2.1 设备分配时需要考虑的因素

(1)设备的固有属性

  • 独占设备:一个时段只能分配给一个进程(如打印机)
  • 共享设备:可同时分配给多个进程使用(如磁盘),各进程往往是宏观上同时共享使用设备,而微观上交替使用
  • 虚拟设备:采用SPOOLing技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程使用(如采用SPOOLing 技术实现的共享打印机)

(2)设备分配算法

  • 先来先服务
  • 优先级高者优先
  • 短任务优先

(3)设备分配的安全性

  • 安全分配方式:为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒
  • 不安全分配方式:进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个I/O请求得不到满足时才将进程阻塞

5.2.2 静态/动态分配

  • 静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源
  • 动态分配:进程运行过程中动态申请设备资源

5.2.3 分配中的数据结构

在这里插入图片描述
(1)设备控制表(DCT):系统为每个设备配置一张DCT,用于记录设备情况

在这里插入图片描述
(2)控制器控制表(COCT):每个设备控制器都会对应一张COCT,操作系统根据COCT的信息对控制器进行操作和管理

在这里插入图片描述
(3)通道控制表(CHCT):每个通道都会对应一张CHCT,操作系统根据CHCT的信息对通道进行操作和管理

在这里插入图片描述
(4)系统设备表(SDT) :记录了系统中全部设备的情况,每个设备对应一个表目

在这里插入图片描述
(5)逻辑设备表(LUT): 建立了逻辑设备名与物理设备名之间的映射关系

在这里插入图片描述

5.2.4 设备分配的步骤

  1. 根据进程请求的物理设备名查找SDT

  2. 根据SDT找到DCT并分配设备

  3. 根据DCT找到COCT并分配控制器

  4. 根据COCT找到CHCT并分配通道

    缺点:用户编程时必须使用"物理设备名",若换了一个物理设备,则程序无法运行。若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待

    改进:用户编程时使用逻辑设备名申请设备,操作系统负责实现从逻辑设备名到物理设备名的映射(通过LUT)

5.3 缓冲区管理

 缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区

5.3.1 缓冲区的作用

  • 缓和CPU与I/O设备之间速度不匹配的矛盾
  • 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
  • 解决数据粒度不匹配的问题
  • 提高CPU与I/0设备之间的并行性

5.3.2 缓存区的类型

  • 单缓冲
  • 双缓冲
  • 循环缓冲
  • 缓冲池

 单缓冲示意图

在这里插入图片描述
 缓冲池示意图

在这里插入图片描述