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 设备分配的步骤
-
根据进程请求的物理设备名查找SDT
-
根据SDT找到DCT并分配设备
-
根据DCT找到COCT并分配控制器
-
根据COCT找到CHCT并分配通道
缺点:用户编程时必须使用"物理设备名",若换了一个物理设备,则程序无法运行。若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待
改进:用户编程时使用逻辑设备名申请设备,操作系统负责实现从逻辑设备名到物理设备名的映射(通过LUT)
5.3 缓冲区管理
缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区
5.3.1 缓冲区的作用
- 缓和CPU与I/O设备之间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 解决数据粒度不匹配的问题
- 提高CPU与I/0设备之间的并行性
5.3.2 缓存区的类型
单缓冲示意图
缓冲池示意图