C4 设备管理
第四章-设备管理
4.1-设备管理概述
⭐设备管理的目标
- 解决设备和CPU速度的不匹配,使两者充分并行工作
- 屏蔽设备的具体操作细节,配置驱动程序,提供统一接口
设备控制器
CPU和物理设备之间的接口
组成
⭐IO控制方式
轮询
- CPU向控制器发送I/O命令,轮询I/O结果。
- 若设备未就绪,则重复,直至设备就绪。
- 设备就绪,CPU执行内存交换
中断
- CPU向控制器发出I/O命令,然后干其他事情
- 如果进程支持异步IO,就不用换进程
- 否则进程挂起,换进程
- 控制器在设备就绪后向CPU发出中断
- CPU响应中断,进行内存交换
DMA
CPU向DMA模块发出I/O命令
处理器干其他事,DMA负责等设备就绪和传送数据
DMA数据传完之后中断CPU
DMA一般用周期窃取的方式访问内存。因为CPU大部分情况下用Cache,这时空闲的主存就能被DMA高效利用
I/O通道
- 没看懂是啥
总线
- 解决I/O速度不匹配的问题
- 不同总线结构的本质是让速率相近的设备在一条总线上
单总线
三级总线
南北桥
4.2-I/O软件的实现
设计目标
效率:改善设备效率,尤其是磁盘
通用:用统一标准来管理所有设备
⭐I/O软件的层次结构
从低到高为
- I/O中断处理程序
- I/O设备驱动程序
- 独立于设备的I/O软件
- 用户空间的I/O软件
I/O中断处理程序
位于OS底层,和设备联系紧密
数据传输结束后产生I/O中断,CPU响应请求并转入中断处理程序
功能:检查设备状态寄存器,根据状态进行相关操作
- 报错
- 正常结束,唤醒请求这个I/O的进程
- 其他
I/O设备驱动程序
初始化设备
逻辑I/O请求转化为物理I/O操作
监督设备正确执行,缓冲区纠错
独立于设备的I/O软件
执行适用于所有设备的常用I/O功能
- 设备命名:通过路径名寻址设备
- 设备保护:用户是否有权访问设备
- 提供与设备无关的数据单位:字符/块
- 缓冲技术:调整CPU与I/O速度不匹配
- 分配和状态跟踪:分配设备
- 错误处理/报告:驱动无法处理的错误
用户空间的I/O软件
- 库函数
- 虚拟设备软件,如Spooling
缓冲技术
目的
- 速度不匹配
- 协调逻辑记录大小和物理记录大小的不匹配
- 提高并行
- 减少I/O对CPU的中断次数
- 放宽中断响应时间
缓冲区
放在主存中
缓冲技术类型
- 单缓冲
- 双缓冲
- 循环缓冲
4.3-设备分配-独占型外围设备
独占型外围设备:一次只能由一个进程独占使用
⭐分配方式
- 静态分配:进程运行前申请
- 动态分配:进程随用随申请
分配设备的数据结构
- 设备类表:存不同类设备的信息
- 设备表:存一类设备中不同物理设备的信息
4.5-虚拟设备-SPOOLing系统
SPOOLing系统
SPOOLing-外部设备联机并行操作-假脱机技术
处在用户空间的I/O软件层
核心思想:用高速的磁盘设备来模拟慢速的字符设备,缩短进程在内存中的驻留时间
实现
预输入程序:输入设备通过预输入程序把数据输到输入井就可以干其他事情了
缓输出程序:输出全都计算好了,输出设备就通过缓输出程序慢慢把这一堆数据输完
井交换程序:控制作业进程和井的数据交换
补充-磁盘调度
FIFO-先进先出
按顺序处理请求
SSTF-最短服务时间优先
每次找距离当前磁头最近的任务
- 会饥饿
SCAN-扫描
一次只沿一个方向扫
磁头移动到最外或最内磁道才掉头
⭐LOOK-电梯调度
一次只沿一个方向扫
磁头移动到最外或最内任务才掉头
CSCAN-循环扫描
只会沿一个方向扫
磁头到磁道末端后,返回另一端末端开始扫