导图社区 计算机操作系统—输入输出管理
一篇关于计算机操作系统IO的一些基本概念,介绍详细、描述全面、希望能对感兴趣的小伙伴学习提供帮助。
编辑于2023-12-01 15:12:41I/O管理
I/O管理概述
I/O设备分类
按使用特性分类
人机交互类外部设备
存储设备
网络通信设备
传输速率
低速设备
中速设备
高速设备
信息交换的单位
块设备
传输快,可寻址
字符设备
传输慢,不可寻址,采用中断驱动的方式
I/O控制器
主要功能
接受和识别CPU发出的指令(控制寄存器)
向CPU报告设备的状态(状态寄存器)
数据交换(数据寄存器 暂存数据)
地址识别(由I/O逻辑实现)
组成
CPU与控制器之间的接口(实现控制器与CPU之间的通信)
I/O逻辑(负责识别CPU发出的命令,并向设备发出命令)
控制器与设备之间的接口(实现控制器与设备之间的通信)
两种寄存器编址方式
内存映射I/O
控制器中的寄存器与内存统一编址
可以采用对内存进行操作的指令来对控制器进行操作
寄存器独立编址
控制器中的寄存器独立编址
需要设置专门的指令来操作控制器
I/O控制方式
程序直接控制
缺点:CPU和I/O设备只能串行工作,导致CPU的利用率极低
中断驱动方式
允许I/O设备主动打断CPU的运行并请求服务, 从而解放CPU,使得其向I/O控制器发送读命令后可以继续做其他有用的工作
缺点:由于数据中的每个字在存储器与I/O控制器之间的传输都必须经过CPU 导致中断驱动方式仍会消耗较多的CPU时间
DMA(直接存储器存取)方式
在I/O设备和内存之间开辟直接的数据通路,彻底接放CPU
特点
基本单位是数据块
所传送的数据,是从设备直接送入内存的,或者相反
仅在传送一个或多个连续数据块的开始和结束时,才需CPU干预 整块数据的传送是在DMA控制器的控制下完成的
通道方式
I/O通道是专门负责输入/输出的处理机,其是DMA方式的发展,可以进一步减少CPU的干预 即把对一个数据块的读(或写)为单位的干预减少为对一组数据块的读(或写)及有关控制和管理为单位的干预。 同时又可以实现CPU、通道和I/O设备三者的并行操作
通道指令类型单一,没有自己的内存,通道所执行的通道程序是放在主机的内存中的,通道与CPU共享内存
I/O软件层次结构
用户层I/O软件
实现于用户交互的接口
设备独立性软件
执行所有设备的共有操作
对设备的分配与回收
将逻辑设备名映射为物理设备名
对设备进行保护
缓冲管理
差错控制
提供独立于设备的大小统一的逻辑块,屏蔽设备之间信息交换单大小和传输速率的差异
向用户层提供统一接口
设备驱动程序
与硬件之间相关,负责具体实现系统对设备发出的操作指令
中断处理程序
用于处理中断相关事项
硬件
包括一个机械部件(设备本身)和一个电子部件(设备控制器/适配器)
设备控制器的功能
识别或接受CPU或通道发来的命令
实现数据交换
发现和记录设备或自身的状态信息
设备地址识别
I/O核心子系统
I/O调度概念
确定一个好的顺序来执行I/O请求
高速缓存与缓冲区
单缓冲
设备——(T)——缓冲区——(M)——工作区——(C)——处理
缓冲区充满再向工作区传送数据,当工作区满,缓冲区就同时为空了
假设初始状态,工作区满,缓冲区为空: 处理一块数据平均耗时Max(C , T)+M
双缓冲
假设初始状态,缓冲区1满,缓冲区2空,工作区空: 处理一块数据平均耗时Max(T,C+M)
缓冲区1满,在向缓冲区2装数据,此时可以从缓冲区1中取数据 缓冲区只有满了才可以取数据
循环缓冲
多个缓冲区链接成循环队列,in指针指向第一个空缓冲区,out指针指向第一个满缓冲区
缓冲池
三个队列
空缓冲队列
输入队列
输出队列
四种工作缓冲区
用于收容输入数据的工作缓冲区、用于提取输入数据的工作缓冲区
用于收容输出数据的工作缓冲区、用于提取输出数据的工作缓冲区
缓冲区于高速缓冲的对比
缓冲区的概念
一般利用内存作为缓冲区
缓解CPU与设备的速度矛盾、减少对CPU的中断频率 解决数据粒度不匹配的问题、提高CPU与I/O设备之间的并行性
特点
当缓冲区的数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出
当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满后,才能从缓冲区把数据传出
设备分配与回收
应该考虑的因素
固有属性
独占设备、共享设备、虚拟设备(SPOOLing)
分配算法
先来先服务、优先级高者优先、短任务优先
安全性
安全分配方式
不安全分配方式
静态分配与动态分配
动态分配在进程执行过程中根据执行需要进行
设备分配管理中的数据结构
设备控制表(DCT)
每个设备对应一张DCT,关键字段:类型/标识符/状态/指向COCT的指针/等待队列指针
控制器控制表(COCT)
每个控制器对应一张COCT,关键字段:状态/指向CHCT的指针/等待队列指针
通道控制表(CHCT)
有指向连接的控制器表的指针,等待通道的进程pcb队列首尾指针
系统设备表(SDT)
记录整个系统中所有设备的情况,每个设备对应一个表目
关键字段
设备类型/标识符/DCT/驱动程序入口
一个通道控制多个控制器、一个控制器控制多个设备
设备分配的步骤
1、根据进程请求的物理设备名查找SDT 2、根据SDT找到DCT并分配设备 3、根据DCT找到COCT并分配控制器 4、根据COCT找到CHCT并分配通道
只有设备、控制器、通道三者都分配成功,这次设备才算分配成功,之后便可启动I/O设备进行数据传输
缺点
用户编程时必须使用“物理设备名",若换了一个物理设备,则程序无法运行。 若请求的设备正在忙碌,则即使系统中还有同类型的设备,进程也必须等待
设备分配步骤的改进
用户编程时使用逻辑设备名申请设备,OS负责实现从逻辑设备名到物理设备名的映射
逻辑设备表的设置
整个系统只有一张LUT:各用户所用的逻辑设备名不允许重复
每个用户一张LUT:各用户的逻辑设备名可以重复
假脱机技术(SPOOLing)
脱机技术
外围控制机+更高速的设备——磁带
作用:缓解设备与CPU的速度矛盾,实现预输入、缓输出
SPOOLing
用软件的方法模拟脱机技术
输入井和输出井
存储区域
输入进程和输出进程
输入缓冲区和输出缓冲区
输入缓冲区
暂存由输入设备送来的数据
输出缓冲区
暂存从输出井从来的数据
共享打印机
用SPOOLing技术将独占式的打印机"虚拟"成共享打印机