导图社区 408操作系统---第5章 IO(输入输出)管理
基于王道课程,I/O设备、/O控制器(设备控制器)、I/O控制方式、I/O软件层次结构、应用程序接口、设备驱动程序接口。
编辑于2023-08-29 21:49:06I/O(输入/输出)管理
I/O设备
分类
特性分类
人机交互
存储设备
网络通讯
传输速度
低速设备
鼠标、键盘
中速设备
激光打印机
高速设备
磁盘机、光盘机
信息交换单位
块设备
信息交换以数据块为单位
例:磁盘
字符设备
信息交换以字符为单位(中断驱动方式)
例:打印机、鼠标、键盘
I/O控制器(设备控制器)
功能
接收识别CPU发出的命令
向CPU报告设备的状态
数据交换(寄存器)
地址识别
组成
CPU与控制器的接口
I/O逻辑
控制器与设备的接口
寄存器的编址
内存映射I/O
寄存器独立编址
I/O控制方式
程序直接控制方式
CPU需要对外设状态进行循环检查
CPU干预频率:高,等待I/O完成过程中,不断轮循检查
数据传送单位:字/次
优点:简单
缺点:CPU处于忙等,利用率低
中断驱动方式
中断机制,每个指令的周期的末位检查中断
CPU干预频率:I/O设备准备数据时,CPU干其他工作
数据传送:字/次
数据流向
写:I/O设备→CPU→内存
读:内存→CPU→I/O设备
优点:CPU不需要轮循检查,利用率高
缺点:频繁的中断处理,消耗CPU时间
DMA方式(直接存储器存储)
在I/O设备和内存之间开辟直接的数据交换通路
干预频率:低,仅在传送数据块开始和结束时,CPU干预
数据传送:块(一次只能是连续块)
数据流向
内存→设备
设备→内存
优点:数据以块为单位,数据不需要经过CPU,直接写入内存
缺点
通道控制方式
通道可以识别和执行通道指令
干预频率:低,只有通道完成一组数据块传输后,才会发出中断信号
数据传送:一组数据块
数据流向
内存→设备
设备→内存
优点:可以实现CPU和I/O设备的并行工作
缺点:实现复杂,需要专门的硬件支持,资源利用率高
注:一个通道可以控制多个I/O控制器;一个I/O控制器可以控制多个I/O设备
I/O软件层次结构
I/O层次结构
I/O软件层
用户层I/O软件
实现与用户交互的接口,直接调用用户层提供的与I/O操作相关的库函数
I/O系统(I/O核心子系统)
设备独立性软件(设备无关性软件)
向上层提供统一的调用接口
设备的保护
差错处理
设备的分配与回收
数据缓冲区管理
建立逻辑设备名到物理设备名的映射关系
设备驱动程序
不同的I/O设备有不同的硬件特性
中断处理程序
I/O硬件
应用程序接口
用户层和设备独立软件之间
字符设备接口
get/put系统调用
向字符设备读/写一个字符
块设备接口
read/write系统调用
向块设备读/写指针位置读/写多个字符
seek系统调用
修改读/写指针位置
网络设备接口
socket接口
子主题
两种模式
阻塞I/O
子主题
非阻塞I/O
设备驱动程序接口
设备独立软件和驱动程序之间
假脱机技术(SPOOLing技术)
用软件模拟脱机技术,缓和CPU高速性和I/O设备低速性之间的矛盾
输入进程:模拟脱机输入的外围控制机
输出进程:模拟脱机输出的外围控制机
输入井:模拟脱机输入时的磁盘
输出井:模拟脱机输出时的磁盘
把独占式打印机“虚拟”成共享式打印机
设备的分配与回收
考虑因素
固有属性
独占设备
共享设备
虚拟设备
分配算法
先来先服务、优先级高者服务、短任务优先服务
安全性
安全分配方式
不安全分配方式
静态分配与动态分配
静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源
动态分配:进程运行过程中动态申请设备资源
数据结构
设备控制表(DCT)
为每个设备配备一张DCT,用于记录设备情况
控制器控制表(COCT)
子主题
通道控制表(CHCT)
记录通道
一个通道可为多个设备控制器服务
系统设备表(SDT)
整个系统只有一张SDT
记录已连接到系统中的所有物理设备的情况
每个设备对应一个表目
分配步骤
根据物理设备名,查找SDT
根据SDT找到DCT
若设备空闲,把设备分配给进程
若设备忙碌,把进程挂入设备等待队列
根据DCT找到COCT
若控制器忙碌,将进程PCB挂到控制器等待队列
不忙碌,则将控制器分配给进程
根据COCT找到CHCT
若通道忙碌,则将进程PCB挂到通道等待队列
不忙碌,则将通道分配给进程
只有当设备、控制器和通道都分配成功,分配才算成功
分配改进
增加逻辑设备表(LUT)
子主题
逻辑设备表的设置
整个系统只有一张LUT:各用户的逻辑名不能重复
每个用户一张LUT:各个用户的逻辑设备名可重复
缓冲区
可以使用硬件作为缓冲区,也可使用内存作为缓存区
硬件作为缓冲区成本高,容量较小,一般多使用内存作为缓冲区
缓冲区非空时,不能对里面冲入数据,只能把数据传出;当缓冲区为空,才能对里面冲入数据
目的
缓和CPU和I/O设备速度不匹配的矛盾
减少对CPU的中断
解决数据单元大小(粒度)不匹配的问题
提高CPU与I/O设备的并行性
缓冲技术
单缓冲
操作系统给进程在主存中设置1个缓冲区
处理每块数据需要耗时:max(C,T)+M
双缓冲区
操作系统给进程在主存中设置2个缓冲区
处理每块数据需要耗时:max(C+M,T)
循环缓冲
多个大小相等的缓冲区,每个缓冲区有一个链接指针指向下一个缓冲区,构成环形
两个指针
in
out
缓冲池
由多个系统共用的缓冲区组成
缓冲队列
空缓冲队列
装满输入数据的缓冲队列
装满输出数据的缓冲队列
4种工作缓冲区
收容输入数据的工作缓冲区
提取输入数据的工作缓冲区
收容输出数据的工作缓冲区
提取输出数据的工作缓冲区
磁盘
磁盘结构
磁盘盘面
磁道
扇区
头
数据区域
尾
磁盘驱动器
磁盘分类
根据磁头是否可移动
固定头磁头:每个磁道有一个磁头
移动头磁盘:每个盘面有一个磁头
根据盘面是否可换
固定盘磁盘
可换盘磁盘
磁盘的管理
磁盘初始化
低级格式化(物理格式化),将磁盘磁道划分成各个扇区
磁盘分区,每个分区由若干柱面组成
逻辑格式化,
引导块
ROM存放自举装入程序
完整的自举程序装在磁盘的启动块上
坏块的管理
坏块:坏了,无法继续使用的扇区
简单的磁盘:逻辑格式化将坏块标记出来
复杂的磁盘:磁盘控制器维护一个坏块链,并准备备用扇区
磁盘调度算法
一次磁盘读/写操作需要时间
寻找时间(寻道时间)
启动磁头臂
移动磁头
延迟时间
旋转磁盘,使磁头定位到目标扇区
传输时间
从磁盘读出或写入时间
磁盘调度算法
先来先服务(FCFS)
按照访问磁盘的请求到达先后顺序来响应
缺点:若访问磁道分散,则寻道时间长
最短寻找时间(SSTF)
每次都优先处理离当前磁头最近的磁道
优点:性能好,平均寻道时间短
缺点:有可能产生饥饿
扫描算法(电梯调度算法):SCAN
只有移动到最外侧磁道的时候才能往内移动
优点:
缺点
必须移动到最外侧或最内侧才能往反方向移动,增加多余移动
对于各个磁道响应频率不平均
LOOK调度算法
对应SCAN算法的第一个缺点
不需要移动移动到最外侧,只要磁头移动方向没有请求,就改变磁头方向
循环扫描(C-SCAN)算法
子主题
优点:
缺点
磁头需要到达最边上才能返回
C-LOOK算法
磁头不需要移动到最外侧,只要磁头移动方向不再有请求,就改变磁头方向
减少延迟时间
磁头读完一个扇区后,需要一定的时间处理后,才能再次读取
交替编号
逻辑上相邻的扇区在物理上有一定的间隔
错位命名
不同盘面扇区错开命名
磁盘的地址结构
(柱面号,盘面号,扇区号)
为什么柱面号在盘面号前面?
连续地址存储时,同一柱面有多个盘面上的磁道,减少磁头移动
固态硬盘(SSD)
组成
闪存翻译层
存储介质
多个闪存芯片
每个芯片包含多个块
每个块包含多个页
读写性能特征
以页为单位读写
以块为单位擦除,块含有多个页
支持随机访问
读快:
写慢:要写的页有数据,不能直接替换,要将其他页内容复制到新的块,再将数据写入新的块,原有块被擦除
磨损均衡技术
将擦除平均分摊在每个块上
动态磨损均衡
写入数据时,优先选择累加擦除次数少的新闪存块
静态磨损均衡
监测并进行数据分配、迁移,读操作多的存储任务,让老旧的闪存块;写操作多的存储任务,用新闪存块