OS-5-IO管理
2021-09-13 20:07:30 0 举报
AI智能生成
操作系统 I/O管理
作者其他创作
大纲/内容
IO软件层次结构
用户层软件
向用户提供IO相关库函数
向用户提供IO相关库函数
设备独立性/无关性软件
·向上提供系统调用接口
·实现设备的保护(设备视为文件)
·(设备)差错处理
·设备分配与回收(临界资源)
·数据缓冲区管理
·建立逻辑设备名↔物理设备名的映射
··LUT逻辑设备表:OS统一LUT vs. 用户独立LUT
LUT表项:逻辑设备名(含路径)-物理设备名-驱动程序入口
·向上提供系统调用接口
·实现设备的保护(设备视为文件)
·(设备)差错处理
·设备分配与回收(临界资源)
·数据缓冲区管理
·建立逻辑设备名↔物理设备名的映射
··LUT逻辑设备表:OS统一LUT vs. 用户独立LUT
LUT表项:逻辑设备名(含路径)-物理设备名-驱动程序入口
设备驱动软件
·负责硬件的具体控制(设置寄存器、检查状态)
··不同厂家硬件特性不同,需要专用的驱动
·负责硬件的具体控制(设置寄存器、检查状态)
··不同厂家硬件特性不同,需要专用的驱动
中断处理程序
IO完成时,IO控制器发送中断信号
由OS分析中断信号并作出相应处理
也要和硬件交互
IO完成时,IO控制器发送中断信号
由OS分析中断信号并作出相应处理
也要和硬件交互
硬件
IO核心子系统
IO调度
可以看做“磁盘调度”的扩展集,使用相似的思想处理
设备保护
UNIX系统“一切皆文件”,设备也有FCB
通过FCB可以实现设备保护
假脱机技术
(SPOOLing)
(SPOOLing)
在用户层实现,可以将独占式设备改造为共享式设备
脱机技术即脱离主机控制的操作,缓和了外围设备IO和CPU的速度矛盾
假脱机原理
用软件模拟脱机
子主题
原理分析:共享打印机
设备分配与回收
设备固有属性
独占设备
共享设备:一般是宏观共享
虚拟设备:采用SPOOLing技术生成的“共享设备”
分配算法
FCFS、SPF...
安全性
安全分配方式
将资源分配后进程将阻塞,直到本次IO完成
破坏了请求-保持条件,不会死锁
对进程而言,CPU和IO设备只能串行工作
不安全分配方式
进程只会在IO请求失败时阻塞
进程可以同时使用多个设备
可能死锁(银行家算法、死锁检测-解除)
策略
静态
一次性分配
破坏了请求-保持条件,不会死锁
动态
实现
一个通道控制多个控制器,一个控制器可控制多个设备
数据结构
每设备配置一张设备控制表DCT
每设备控制器配置一张控制器控制表COCT
通道配置一张通道控制表CHCT
系统控制表SDT:记录所有设备
分配步骤
根据进程提供的物理设备名寻找SDT
改进:进程可提供逻辑设备名(设备类型),映射由LUT完成
由SDT找到DCT,若忙碌将PCB挂到对应设备的等待队列,否则将设备分配给进程
找到COCT,若忙碌将PCB挂到对应设备控制器的等待队列,否则将设备控制器分配给进程
找到CHCT,若忙碌将PCB挂到对应通道的等待队列,否则将通道分配给进程
仅有三者的分配全部成功才算设备分配成功
IO设备
分类
按速率
低速
中速
高速
按使用特性
人机交互
存储设备
网络通信设备
按信息交换单元
块设备:可寻址
字符设备:不可寻址,通常采用中断驱动
可以向计算机输入数据
也可接收计算机输出数据
也可接收计算机输出数据
鼠标键盘
显示器
移动硬盘
UNIX系统将IO设备抽象为特殊的文件。
将IO操作统一到读写操作中
将IO操作统一到读写操作中
IO控制器
设备控制器
设备控制器
功能
接收识别CPU命令
有控制寄存器
向CPU汇报设备状态
有状态寄存器
数据交换
有数据寄存器
地址识别
由IO逻辑电路实现
组成
CPU-控制器接口
包含各种寄存器、可能有多组
IO逻辑电路
接收识别命令、地址译码,发送指令
控制器-设备接口
不一定唯一
寄存器编址方案
内存映像IO:寄存器占用内存地址一部分
寄存器独立编址:IO专用地址
需要额外指明控制器编号
需要专用指令实现操作
IO控制方式
程序直接控制
中断驱动方式
DMA
通道控制方式
缓冲区管理
缓冲区是一个存储区域,既可以由专门的硬件寄存器构成,也可使用内存。
专用硬件缓冲区成本高容量小,仅用于对速度要求极高的场合(TLB相联存储器)
作用
缓和CPU与IO设备的速度矛盾
减少CPU中断频率,放宽CPU中断响应时间的限制
解决数据粒度不匹配的问题
提高CPU和IO设备的并行性能
实现
单缓冲
若无特殊说明,缓冲区大小为1块
只能向空缓冲区充入数据
缓冲区非空时,只允许从缓冲区取出数据
缓冲区充满时
双缓冲
为进程分配两个缓冲区
允许同时传送、输入(不同的缓冲区)
允许同时输入、计算
不允许同时传送、计算
循环缓冲区
大小相等的缓冲区链接为循环队列
in指针指向下一个可充入的缓冲区,out指针指向下一个可取出的缓冲区
缓冲池
众多共用缓冲区组成
按状态组织为:空缓冲队列、输入队列、输出队列
按用途可分为:接收设备输入hin、进程提取输入sin、接收进程输出hout、设备提取输出sout
考察
平均周期
设置初始状态,分析下次进入此状态的时间
单缓冲=max(T,C)+M
双缓冲=max(T,C+M)
0 条评论
下一页