导图社区 输入输出系统思维导图
“输入输出系统”属于《计算机操作系统》第六章内容,下图将它所有知识点整理在一张图中,方便大家复习时梳理知识要点。
编辑于2020-10-03 13:25:17第六章 输入输出系统
6.1 I/O系统的功能、模型和接口
6.1.1 I/O系统的基本功能
1、方便用户使用I/O设备
隐藏物理设备的细节(用户能直接使用抽象的命令,具体细节由I/O操作系统完成)
与设备的无关性(如使用逻辑设备使用设备,设备驱动程序的可移植性)
2、提高CPU和I/O设备的利用率
提高处理机和I/O设备的利用率(即处理机和I/O设备并行运行)
对I/O设备进行控制(由设备驱动程序完成)
3、用户在共享设备时方便
确保对设备的正确共享
错误处理(临时性错误通过重试操作来解决,持久性错误向上层报告)
6.1.2 I/O系统的层次结构和模型
1、IO系统的层次结构
第一层:用户层软件:产生I/O请求
第二层:设备独立性软件:实现与设备的无关性的软件
第三层:设备驱动程序:与硬件直接相关,将抽象指令转换为具体的命令和参数,交给设备控制器操作,并装入到设备控制器中的命令和参数寄存器
第四层:中断处理程序:接受来自IO设备或用户发来的中断请求
IO系统的本身可分为这3个层次
第五层:硬件(IO设备和控制器):执行I/O操作
2、IO系统的几接口
上接口(系统接口):向上层提供抽象的IO命令
下接口(HW/RW接口)
6.1.3 I/O系统接口
1、块设备接口
2、流设备接口
3、网络接口
下面按照:I/O系统的层次结构从硬件层到用户层软件进行描述
6.2 I/O 设备和设备控制器(硬件层)
引言
执行I/O操作的机械部分:I/O设备
执行控制I/O的电子部件:设备控制器(适配器)
6.2.1 I/O设备
I/O设备分类
1、按传输数据的单位分为:块设备和字符设备
2、按能否共享分为:共享设备和抢占设备
3、按设备使用特性上:存储设备和IO设备
4、按设备的传输效率:高速、中速、低速设备
设备与控制器之间的接口
设备并不是直接和CPU通信,而是和设备控制器通信
控制信号线、数据信号线、状态信号线
6.2.2 设备控制器
1、设备控制器的功能
主要功能:控制一个或多个IO设备,实现IO设备与计算机之间的数据交换,是CPU与IO设备的接口
基本功能
1、接受和识别命令:控制寄存器
2、数据交换:数据寄存器
3、标识和报告设备的状态:状态寄存器
4、地址识别:地址译码器
5、数据缓冲区
6、差错控制:发现差错,将差错检验码置位,并向CPU报告
2、设备控制器的组成
与处理机的接口、与设备的接口、I/O逻辑
6.2.3 内存映像I/O
问题:如何实现CPU的内存单位和设备控制器中的寄存器之间的通信呢?
方法
1、利用特定的I/O指令:设备控制器通过指定设备的控制器地址和其中的寄存器来与CPU的内存单位进行交互
2、内存映像I/O:在编址不再区分内存单元和设备控制器中的寄存器单元,设备控制器直接沿用内存地址的数据
统一了对内存单元和控制器的寄存器的访问方法
6.2.4 I/O通道
1、引入
原因:CPU的负担依然很大
方法:在CPU与设备控制器之间增设IO通道,目的是为了建立独立的IO操作
重点:I/O通道中有一个通道程序,该程序能够将发来的I/O任务完成,完成后向CPU发出中断信号,所以IO通道实际上是一个特殊的处理机
与普通的处理机的区别
1、指令类型简单,仅能对IO指令执行
2、没有自己的内存,通道程序本身是即存在内存中的
2、通道类型
1、字节多路通道
概念:IO通道的处理数据的是字节,一个与处理机连接的主通道,能与多个设备控制器连接的子通道
2、数组选择通道
3、数组多路通道
3、“瓶颈”问题
问题::IO通道的价格昂贵,且每个通道只有一条主通道
方法:多通路方式,一个设备连接到多个控制器上,一个控制器连接到多个通道上
6.3 中断机构和中断处理程序(I/O系统的低层)
6.3.1 中断简介
中断的类型
1、中断(外中断)
发起者:I/O设备发出的中断信号
2、陷入(内中断)
发起者:CPU内部事件引起的中断
中断的相关机制
1、中断向量表
组成:处理程序的入口地址、中断号
过程:中断请求在分析为后中断号,从中断向量表找到对应的处理程序入口,转入处理程序
2、中断优先级
3、多中断源的处理方式
1、屏蔽中断:不允许打断中断
2、嵌套中断:高优先级可以打断低优先级的处理程序
6.3.2 中断处理程序的处理过程
1、检测中断信号:每当设备完成一个数据的读入,控制器便向处理机发送一个中断请求信号
2、保护现场:保护内容常有处理状态字、下一条指令的地址、CPU所有寄存器的内容
3、转入设备处理(驱动)程序:确定引起本次中断的IO设备,并向该设备发送确认信号,设备随后取消该中断请求信号
4、处理中断:正常中断和异常中断的处理方式不一样
5、恢复现场:
6.4 设备驱动程序(I/O系统的次低层)
6.4.1 设备驱动程序概述
主要任务:作为通信程序,将上层交下来的抽象IO要求转换为具体命令和参数交给设备控制器
具有的功能
1、指令转换:在具体的低层命令和高层的抽象命令中进行转换
2、常规检查:检查用户的IO操作的合法性,了解IO的工作状态等
3、启动设备:当设备空闲,便立即启动IO设备
4、响应中断:能够确定引起本次中断的IO设备,并调用对应的中断处理程序
6.4.2 设备驱动程序的处理过程
1、转换:
2、服务请求校验:即进行常规检查中的,对用户请求的IO操作的合法性进行检查
3、设备状态检验:即进行常规检查中的,检查IO设备是否处于准备就绪的状态
4、传送必要的参数 :将转换后的具体参数,在检查无误后开始传送给设备控制器
5、启动I/O设备
6.4.3 对I/O设备的控制方式
概念:指的是处理机是如何去控制IO设备工作的,是一直等待IO操作完毕,还是交给中间的器件帮助,而自身去处理其他作业呢?
1、使用轮询的可编程的I/O方式(程序I/O)
这种方式下,处理机一直循环(轮询)检查IO设备是否已经完成操作
缺点:浪费CPU资源
2、使用中断的可编程I/O方式
该方式下,处理机发出IO指令后,就去处理其他作业,将IO指令交给IO系统,当IO操作完成后发出中断请求
此时,处理机响应中断请求,发现IO操作完成了,数据已交付到内存,现在处理机可以过去处理数据了
优缺点:虽然是使得CPU与IO设备并行操作,但是传输的数据单位是字节,每传送一个字节就要中断一次
3、直接存储器访问方式
特点:传送数据的单位是数据块,并且只有在传送一个或多个数据块的开始和结束才需要COU干预,极大提高了CPU与设备的并行度
运行上:比使用中断的可编程IO方式复杂得多,但是任然要借用中断,不过从中可以看出,直接存储器访问中内存地址的增加时连续的,即输出的的数据是连续存储在内存的
4、I/O通道控制方式
问题:直接存器访问在需要读取多个数据块且写到不同的内存区上任然是需要更多的中断请求
运行上:通道程序由一系列的通道指令组成,重点在于通道指令上有存储数据的内存起始地址、地址的长度、记录结束标志
6.5 与设备无关的I/O软件(I/O系统的高层)
6.5.1 与设备无关软件的基本概念
1、物理设备名:使用物理设备名很不方便
2、逻辑设备名:直接为一类的设备提供一个同一的逻辑设备名,该类的物理设备名都在逻辑设备名之下,且帮助IO重定向
3、二者的转换:配置一张逻辑设备表
6.5.2 与设备无关的软件
概念:执行所有设备的公有操作的软件
具体项
设备驱动程序统一接口、缓冲管理、差错控制、独立设备的分配与回收、逻辑数据块
6.5.3 设备分配
需要的数据结构:设备控制表、控制器表、通道控制表、系统设备控制表
过程:涉及到分配设备、分配控制器、分配通道
6.3.4 逻辑设备名到物理设备名的转换
支持:借用逻辑设备表
一级设备表
内容有:逻辑设备名、物理设备名、驱动程序入口地址
缺点:系统仅一张逻辑设备表,导致所有用户不能使用相同的逻辑设备名,
二级逻辑设备表
一级逻辑设备表有:逻辑设备名+系统设备表指针,每个用户用一个一级逻辑设备表,都指向了系统设备表每个位置
6.6 用户层的IO软件(用户层软件)
6.6.1 系统调用和库函数
1、系统调用:应用程序通过系统调用间接调用OS中的IO过程,向用户提供OS的服务
2、库函数
在C语言和UNIX中,库函数是等效于系统调用的
在WIN系统中,用户程序通过调用库函数使用系统调用
6.6.2 假脱机系统
作用:将一台物理设备映射为多台虚拟设备,允许多个用户共享一台设备
基本想法:
组成:
1、输入井和输出井:在磁盘上开辟出的两个存储区域,模拟脱机时输入和输出的磁盘
2、输入缓冲区和输出换取区:在内存中开辟的两个缓存区,缓和CPU与磁盘的速度不匹配
3、输入进程和输出进程:模拟外围控制器
4、井管理程序
共享打印机:实际上是用户将打印任务提交后,知识将数据暂存在空盘块队列中,等待打印进程调用到文件队列的第一个请求打印表时就开始真正的打印,但是对于用户而言,感觉系统是为他而打印的
6.7 缓存区管理
6.7.1 缓冲的引入
1、缓和CPU和IO设备速度不匹配的矛盾
2、减少CPU的中断频率,为中断信号设置一个缓冲寄存器
3、解决数据粒度(单位大小)不匹配
4、提高CPU与IO设备的并行度
6.7.2 单缓冲区和双缓冲区
1、单缓冲区:只能互斥使用,而且任一时刻只能的单方向传输
2、双缓冲区:可以同时使用各自一方的缓冲区,且支持双向传输数据
6.7.3 环形缓冲区
概念:利用多个缓冲区组成环形的缓冲区
组成:
缓冲区:空闲缓冲区、已装满数据的缓存区、正在使用的缓冲区
指针:指向计算(输出)进程下一个可用的装满数据的缓存区、指向输入进程下一个可用的空缓存区、指向当前正是用的缓冲区的三种指针
问题:
1、系统受计算(输出)限制:缓冲区输出数据过慢,导致环形缓冲区已满
2、系统受输入限制:缓冲区输入数据过慢,导致环形缓冲区常常为空
6.7.4 缓冲池
问题:环形缓冲区属于专用缓冲区,有许多这样的循环缓冲区,会消耗大量内存空间,且利用率不高
缓冲池组成
基本单位:缓冲区
队列:空白缓冲队列、输入队列、输出队列、
6.8 磁盘存储器的性能和调度
6.8.1 磁盘性能的描述
1、磁盘的结构与组织
2、磁盘的类型:固定头磁盘与移动头磁盘
3、磁盘访问时间
内容:寻道时间、磁头移动时间、传输数据时间
其中大头:寻道时间和旋转延迟时间
磁盘调度算法
目标:降低寻道时间
条件:要提前确认本次进程查找数据的磁道号
6.8.2 早期的磁盘调度算法
1、先来先服务(FCFS):不保证寻道时间
2、最短寻道时间优先(SSTF):距离当前磁道最近的磁道,作为下一个扫描的磁道
6.8.3 基于扫描的磁盘调度算法
扫描:指的是考虑磁头的移动方向,类似给人做扫描,从上到下,从下到上,有方向的
1、扫描SCAN算法
解决问题:SSTF算法可能出现饥饿现象
思想:考虑磁头的移动方向,从里向外,然后从外向里
2、循环扫描CSCAN算法
解决问题:SCAN算法磁盘从里向外时 ,恰好有一个进程要求再次访问该磁道,但是必须要等待
思想:重复一个方向的扫描,规定磁头单向移动