设备管理
设备管理的主要对象是I/O设备以及设备控制器和I/O通道,主要任务是:完成用户提出的I/O请求,提高I/O速率以及提高I/O设备的利用率,主要功能是:缓冲区管理、设备分配、设备处理、虚拟设备以及实现设备独立性等
I/O系统
- I/O设备的类型
- 按照设备使用特性分类
- 存储设备
- 输入输出设备
- 按照速率分类
- 低速设备:键盘、鼠标、语音的输入输出等
- 中速设备:行式打印机、激光打印机
- 高速设备:磁带机、磁盘机、光盘机
- 按照信息交换的单位分类
- 块设备:信息存取总是以块为单位
- 字符设备:信息存取以字符为单位
- 按照设备的共享属性
- 独占设备:需要互斥访问
- 共享设备:可寻址、可随机访问
- 虚拟设备
- 设备与控制器之间的接口
- 设备一般不是与CPU直接通信,而是通过设备控制器通信
- 数据信号线
- 控制信号线
- 状态信号线
- 设备控制器:CPU和I/O设备之间的接口,接收从CPU发来的命令,并且控制I/O设备进行工作
- 责职:控制一个或者多个I/O设备,以实现I/O设备和计算机之间的数据交换
- 基本功能
- 接收和识别命令:接收识别CPU发出的命令
- 数据交换:实现CPU与控制器之间,控制器与设备之间的数据交换
- 标识和报告设备的状态:记下设备的状态供CPU了解
- 地址识别:识别所控制的每个设备的地址
- 数据缓冲
- 差错控制
- 组成
- 设备控制器与处理机接口:用于实现CPU与设备控制器之间的通信
- 设备控制器与设备的接口:一个接口对应一个设备
- I/O逻辑:用于实现对设备的控制
- I/O通道
- 作用:介于CPU和设备控制器之间,建立独立的I/O操作,使数据的传送能独立于CPU
- 本质:一种特殊的处理机,具有执行I/O指令的能力,并通过通道程序控制I/O操作,但与CPU共享内存
- 类型
- 字节多路通道
- 数组选择通道
- 数组多路通道
- 总线系统
- 计算机系统中的各个部件之间的联系,都是通过总线来实现的
I/O控制方式
宗旨:尽量减少主机对I/O控制的干预,把主机从繁杂的I/O控制事务中解脱出来
- 程序I/O方式:不断去查看是否已经完成
- 中断驱动I/O方式:以字节为单位
- 直接存储器访问(DMA)I/O控制方式
- 基本单位是数据库
- 传送的数据直接从设备送入内存,或者相反
- 仅在传送一个或者多个数据块的开始和结束时,才需要CPU的干预
- DMA控制器的组成
缓冲管理
- 单缓冲
- 双缓冲
- 循环缓冲
- 缓冲池
I/O软件
- I/O软件的设计目标和原则
- 与具体设备无关
- 统一命名
- 对于错误的处理
- 缓冲技术
- 设备的分配和释放
- I/O控制方式
- 四个层次
- 用户层软件
- 设备独立性软件
- 设备驱动程序
- 中断处理程序
- 唤醒被阻塞的驱动程序
- 保护被中断进程的的CPU环境
- 转入相应的设备处理程序
- 中断处理
- 恢复被中断进程的现场
设备分配
系统设备不允许用户自行使用,必须由系统统一分配
- 设备分配中的数据结构
- 设备控制表(DCT):每个设备均有,记录本设备的情况
- 控制器控制表、通道控制表、系统设备表
- 设备分配时考虑的因素
- 设备的固有属性
- 独占设备
- 共享设备
- 虚拟设备
- 设备分配算法
- 先来先服务
- 高优先级优先
- 设备分配中的安全性
- 安全分配方式:发出请求后阻塞,CPU与I/O是串行工作
- 不安全分配方式:仅当所请求的设备被占用时才阻塞,应该进行安全性计算
- 独占设备的分配程序
- 基本的设备分配程序
- 分配设备
- 分配控制器
- 分配通道
- 设备分配程序的改进
- 增加设备的独立性
- 考虑多通路情况
- 基本的设备分配程序
- SPOLLing技术
- 原理:在联机情况下实现的同时外围操作或者称为假脱机操作(利用多道技术,来模拟脱机输入、输出时的外围控制机功能),其实就是通过程序模拟硬件,其中磁盘用于模拟设备,进程用于模拟处理器,缓冲区用于缓冲
- 系统组成
- 输入井和输出井:在磁盘上开辟的两大存储空间,用于模拟脱机输入输出时的磁盘设备,用于暂存I/O设备的数据
- 输入缓冲区和输出缓冲区:在内存上开辟的两大缓冲区,用于暂存输入输出设备的数据
- 输入进程SPi和输出进程SPo:用两个进程来模拟脱机I/O时的外围控制机,等到设备真正空闲时,再讲数据传输过去
- 共享打印机:接收请求,然后送到打印机列表
- 特点
- 提高了I/O速度
- 将独占设备改造为共享设备
- 实现了虚拟设备功能
磁盘存储器的管理
- 磁盘性能简介
- 数据组织形式和格式
- 磁道、扇区、…
- 磁盘类型
- 固定磁头:每个磁道都有一个读写头
- 移动磁头:每个盘面仅由一个读写头,需要寻道等操作
- 磁盘访问时间
- 寻道时间:Ts = m * n + s // s:启动磁臂时间,n:移动n个磁道的时间,m与磁盘驱动器速度有关的常数
- 旋转延迟时间:指定扇区移动到磁头下面所需要的时间
- 传输时间:t = b/(r*N)
- 磁盘调度
- 目标:使磁盘的平均寻道时间最小
- 先来先服务(FCFS)
- 根据进程请求访问磁盘的先后顺序进行调度
- 最短寻道时间优先(SSTF Shortest Seek Time First)
- 思想:选择与当前磁头距离最近的磁道,使得每次寻道时间最短,但不保证平均寻道时间最短
- 缺点:可能导致饥饿现象,也就是某个进程得不到资源
- 扫描算法(SCAN)
- 思想:从一个方向访问直到尽头,再反方向(1 - 2 -3 -4 -3 -2 -1 )
- 循环扫描算法(CSCAN)
- 思想:(1 - 2 -3 -4 -1 -2 -3- 4)
- NStepSCAN算法
- 思想:将请求的进程队列分成若干个长度为N的子队列,每个队列按照SCAN算法执行
- FSCAN算法
- 思想:只将队列分成两个子队列,一个保存当前的进程,另一个保存扫描过程中出现的进程
- 磁盘高速缓存
- 利用内存中的存储空间作为磁盘的高速缓存,实际上并不存在一个设备称之为磁盘高速缓存
- 数据交付方式
- 数据交付:直接将高速缓存中的数据传送到请求者进程的内存工作区
- 指针交付:将指向高速缓存区中某个区域的指针交给请求者进程
- 置换算法
- 最近最久未使用
- 访问频率
- 可预见性
- 数据一致性
- 周期性写回磁盘
- 提高磁盘效率的其他方法
- 提前读
- 延迟写
- 优化物理块的分配
- 虚拟盘
- 廉价磁盘冗余阵列(RAID)