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