资源描述
第13章 I/O系统,I/O设备的多样性 Os管理和控制 I/O操作和I/O设备。,13.1 I/O管理概述,外设管理目的 提高效率:提高I/O访问效率,匹配CPU和多种不同处理速度的外设 方便使用:方便用户使用,对不同类型的设备统一使用方法,协调对设备的并发使用 方便控制:方便OS内部对设备的控制:增加和删除设备,适应新的设备类型 外设管理功能 提供设备使用的用户接口:命令接口和编程接口 设备分配和释放:使用设备前,需要分配设备和相应的通道、控制器。 设备的访问和控制:包括并发访问和差错处理(虚拟设备)。 I/O缓冲和调度:目标是提高I/O访问效率,按交互对象分类 人机交互设备:视频显示设备、键盘、鼠标、打印机 与计算机或其他电子设备交互的设备:磁盘、磁带、传感器、控制器 计算机间的通信设备:网卡、调制解调器 按交互方向分类 输入(可读):键盘、扫描仪 输出(可写):显示设备、打印机 输入/输出(可读写):磁盘、网卡 按外设特性分类 使用特征:存储、输入/输出、终端 数据传输率:低速(如键盘)、中速(如打印机)、高速(如网卡、磁盘) 信息组织特征:单个字符或数据块 字符设备(如打印机):通常的输入输出型设备,以字符为单位存储、传输信息;不可寻址 块设备(如磁盘):以数据块为单位存储、传输信息。可寻址,13.1 I/O管理外部设备类型和特征,按资源分配角度分类 独占设备 在一段时间内只能有一个进程使用的设备,一般为低速I/O设备。如打印机,磁带等。 共享设备 在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高。如硬盘 虚拟设备 在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备(实例:SPOOLing技术) 从程序使用角度分 逻辑设备: 用户程序中使用的设备 物理设备:实际完成I/O操作的设备,13.1 I/O管理外部设备类型和特征,13.2 I/O控制技术,程序控制I/O(轮询):CPU代表进程给I/O模块发送一个命令,CPU进入忙等待(输入输出完全由CPU控制) 中断驱动I/O: CPU代表进程给I/O模块发送一个命令,然后CPU继续执行后续指令; 当I/O模块完成后,CPU被该模块(CPU和I/O设备可以共同工作)中断。 直接存储器存取(DMA):CPU给DMA模块发请求,只有当DMA将整个数据块传送结束后,CPU才被中断(数据在内存和外设之间传输时不需要CPU干预)。,设备绝对号和相对号,设备绝对号:计算机系统为每一台设备确定的编号,用来区分和识别设备; 用户在编写程序时不能通过设备的绝对编号来使用设备 设备类型号:操作系统为每类设备规定的一个编号 设备相对号:用户自己规定的所用的同类设备中的第几台。 如Unix中,rfd0和rfd1分别表示第1个和第2个软盘驱动器;,设备绝对号和相对号,设备的指定方式 设备绝对号 设备类型号+设备相对号 用户程序中提出使用设备的申请时,使用系统规定的设备类型号和用户自己规定的设备相对号,由操作系统进行地址转换,变成系统中的设备绝对号;,I/O软件的设计目标: 效率:大多数I/O设备慢,I/O操作一般是系统瓶颈,很大程度上影响系统的性能和吞吐量。因此要改善I/O的有效性,采用多道程序设计、交换。目前比较关注磁盘I/O。 通用性:设备种类、特点和性能千差万别;要求能够以一种一致的方式来管理所有设备一致的外部接口,很难做到通用,但希望能够用统一的方法处理所有设备,用一种层次化的,模块化的方法设计I/O功能。 能够在低层例程中隐藏大部分设备I/O的细节, 使得用户进程和OS高层可以通过一些通用的功能,如读、写、打开、关闭等查看I/O设备。 设备独立性。用户在编写使用软盘或硬盘上文件的程序时,无需为不同的设备类型而修改程序就可以使用 统一命名。一个文件或一个设备的名字只应是一个简单的字符串或一个整数,不应依赖于设备,13.3 设备管理系统的组织,设备独立性,如果用户程序中直接使用真实的物理设备,那么会出现这样的问题:用户指定的设备因故障不能使用,或者该设备正忙于为其他进程服务,只有等待或者修改程序,重新指定设备。 为了实现用户程序与物理设备的无关性,在用户程序中不要直接使用物理设备名(或者设备的物理地址),而只能使用逻辑设备名。逻辑设备是实际物理设备的抽象,它不限于某类具体设备。逻辑设备究竟和哪一个具体的物理设备相对应,还要由系统根据当时的设备忙、闲情况来决定或者由系统管理员指定。,IO软件的基本思想是按分层的思想构成: 较低层软件要使较高层软件独立于硬件的特性, 较高层软件则要向用户提供一个友好的、清晰的、简单的、功能更强的接口,13.3 设备管理系统的组织,13.3 设备管理分层模型,逻辑I/O:将设备当作一个逻辑资源,不涉及实际的设备控制的细节: 针对用户接口,提供抽象的命令,如:Open, Close, Read, 针对通信设备,则是通信体系结构如网络协议栈; 针对文件存储设备,是文件系统的逻辑结构控制; 设备I/O:逻辑设备与物理设备间的过渡协调机构。用户命令到设备操作序列的转换。请求的操作和数据被转换成适当的I/O指令序列、通道命令和控制器指令。可以用I/O缓冲提高I/O效率 调度和控制:是I/O模块和设备硬件真正发生交互的软件层,直接面对硬件设备的控制细节。如I/O操作的排队,设备控制和状态维护、中断处理。这部分通常体现为设备驱动程序;,13.3 设备管理分层模型,进行I/O调用,格式化I/O; Spooling,命名,保护,阻塞,缓冲,分配,建立设备寄存器;检查状态,当I/O结束时,唤醒驱动器,执行I/O操作,I/O系统的层次结构及每层的主要功能,用户进程层执行输入输出系统调用,对I/O数据进行格式化 独立于设备的软件实现设备的命名、设备的保护、成块处理、缓冲技术和设备分配;(逻辑I/O) 设备驱动程序设置设备寄存器、检查设备的执行状态 中断处理程序负责IO完成时,唤醒设备驱动程序进程,进行中断处理 硬件层实现物理IO的操作,I/O系统的层次结构及每层的主要功能,练习题,描述设备管理软件的层次结构,并说明以下的工作各在I/0软件层次的哪一层? 维护一个最近使用的块的缓冲。 为一个磁盘读操作计算磁道、扇区、磁头。 向设备寄存器写命令。 设备保护 各类I/O库函数,缓冲技术的基本思想:在CPU和外设之间设置缓冲区,用于暂存CPU与外设之间交换的数据,从而缓和CPU与外设速度不匹配的矛盾。 缓冲区所在的位置:内存,控制器或外设(多级缓冲机制) 硬件缓冲,如I/O控制器中的数据缓冲寄存器 软件缓冲:在内存画出一个具有n个单元的专用缓冲区。 根据方向:分为输入缓冲和输出缓冲 根据用途:分为专用缓存(为一个设备独占,如键盘缓存)和公用缓存(为多个设备公用),缓冲区,CPU,外设,13.4 缓冲,13.4 缓冲,无缓冲时问题分析:设备直接向进程地址空间传送数据(如用户从磁带中读数据块的操作),则进程要么忙等待,要么阻塞。 如果用忙等待方式,则浪费大量CPU时间; 如果是阻塞方式,则进程阻塞在设备的I/O请求队列中。这时,不能将进程全部换出,还可能出现单进程死锁。(进程在等待I/O操作结果之前被换出,等待I/O事件,而I/O操作也被阻塞,等待该进程被换入。),缓冲技术的用途 可以在发出请求之前就开始执行输入操作(预输入),在发出请求一段时间后才开始执行输出操作(缓输出)。 匹配CPU或用户应用进程与外设的不同处理速度 减少对CPU的中断次数: 提高CPU和I/O设备之间以及各个I/O设备之间的处理并行性。 多道程序环境中提高OS效率和单个进程的工具(技术)之一。,13.4 缓冲用途,单缓冲(single buffer):当一个用户进程发出I/O请求时,OS给该操作分配一个位于主存中系统部分的缓冲区。以面向块的设备为例:输入先传送至系统缓冲区,当传送完成时,进程将该块移动到用户空间,并立即请求另一块预读(对于输出,则称为延迟写)。 好处: 用户可以在下一块数据正在读入时,处理这块数据(用户进程处理某个数据块的同时,下一个数据块正在读入)。由于输入发生功能在系统存储空间而不是用户进程存储区,因此OS可以将该进程换出。 增加了OS的逻辑复杂度:OS必须直到用户进程的缓冲区的分配情况,交换逻辑受到影响。,13.4 缓冲单缓冲区,13.4 缓冲双缓冲和循环缓冲,双缓冲(double buffer):两个缓冲区,CPU和外设都可以连续处理而无需等待对方。当一个进程往一个缓冲区中写数据时(取数据)时,OS正在清空(填充)另一个缓冲区。 循环缓冲(circular buffer):多个缓冲区,CPU和外设的处理速度可以相差较大,如这个进程突然快速执行了大量的I/O。,13.4 I/O 缓冲,13.4 I/O 缓冲,由于外设资源的有限,需解决进程间的外设共享问题,以提高外设资源的利用率。设备分配是对进程使用外设过程的管理。这里有两种作法: 1)在进程间切换使用外设,如键盘和鼠标; 2)通过一个虚拟设备把外设与应用进程隔开,只由虚拟设备来使用设备。,13.4 设备分配,13.4.1 设备分配数据结构,系统设备表(SDT, System Device Table):系统内一张,反映系统中设备资源的状态,记录所有设备的状态及其设备控制表的入口。 设备控制表(DCT, Device Control Table):每个设备一张,描述设备特性和状态。反映设备的特性、设备和控制器的连接情况。 控制器控制表(COCT, COntroller Control Table):每个设备控制器一张,描述I/O控制器的配置和状态。如DMA控制器所占用的中断号、DMA数据通道的分配。 通道控制表(CHCT, CHannel Control Table):每个通道一张,描述通道工作状态。,各表间的关系,系统设备表,设备控制表(DCT),控制器控制表COCT,通道控制表CHCT,13.4.2 设备分配原则,设备分配的原则 合理使用外设(公平和避免死锁) 提高设备利用率 应用程序与设备无关 与设备分配有关的设备属性: 独享设备:打印机等; 共享设备:磁盘、网卡等; 设备分配技术: 独占分配:不会出现死锁;但设备利用率不高; 共享分配:利用率高,但控制复杂 虚拟分配:利用共享设备去实现独占设备的功能;有利于提高设备利用率,先来先服务(FCFS):按I/O请求的先后顺序,排成I/O请求命令队列,队首指向被请求设备的DCT;按FCFS分配设备; 基于优先级:依据进程的优先级,指定I/O请求的优先级,排成不同优先级队列;按优先级高低分配设备;,13.4.2 设备分配算法,先回顾一下设备分类问题 按资源分配角度分类 独占设备 在一段时间内只能有一个进程使用的设备,一般为低速I/O设备。如打印机,磁带等。因数量有限,会成为系统中的“瓶颈”资源,使进程经常处于阻塞状态;设备利用率比较低 共享设备 在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高(如硬盘),13.5 Spooling系统,13.5 虚拟设备,虚拟设备技术 多道程序系统中,进程对设备的需求频繁,尤其是独占设备数量有限、效率低,故引入虚拟设备管理技术。 基本思想:用大容量的快速设备(磁盘)模拟慢速度的独占设备,把一台物理上的独占设备变为逻辑上的多台共享设备。 通过共享型设备来模拟独占型设备的动作,使独占型设备成为共享型设备,提高设备的利用率和系统的效率。 实例:SPOOLing技术(Simultaneously Peripheral Operation On Line,外围设备同时联机操作),是用程序模拟脱机I/O的功能,故又称为假脱机技术。,虚拟设备,13.5 Spooling系统,13.5 SPOOLing系统工作原理,作业执行前用慢速设备将作业预先输入到输入井中,称为预输入(输入井和输出井是某共享设备(磁盘)上的一部分存储空间)。 作业运行后,使用数据时,从输入井中取出 作业执行不必直接启动外设输出数据,只需将这些数据写入输出井中 作业全部运行完毕,再由外设输出全部数据和信息,称为缓输出 实现了对作业输入、组织调度和输出的统一管理使外设在CPU直接控制下,与CPU并行工作(称为假脱机),SPOOLing系统,13.5 SPOOLing系统 举例,假设系统中全部打印机采用了Spooling技术,当某进程要求打印输出时,并不是将某台打印机分配给该进程,而是在某共享设备(磁盘)上的输出井中,为其分配一块存储区,同时为该进程的输出数据建立一个文件,该进程的输出数据实际上并未从打印机上输出,只是以文件形式输出,并输出存放在输出井中。 这个输出文件实际相当于虚拟的打印机。这些输出井中的文件形成了一个输出队列,然后调度输出 用户进程并未真正分到打印机, 用户进程被分配的只是共享设备中的一个存储区,思考:以打印机为例,简述Spooling技术的工作原理,它是如何使一台打印机虚拟成多台打印机的?,13.5 SPOOLing系统 举例,13.5 SPOOLing系统 优点,Spooling技术优点: 高速虚拟I/O操作:应用程序的虚拟I/O比实际I/O速度提高,缩短了应用程序的执行时间。另一方面,程序的虚拟I/O操作时间和实际I/O操作时间分离开来。 实现对独享设备的共享:由Spooling程序提供虚拟设备,可以对独享设备共享使用。,思考题,什么是缓冲?为什么要引入缓冲? 区分独占设备、共享设备、虚拟设备; 理解对共享设备可同时使用的含义; 简述实现虚拟设备的基本条件,虚拟设备的实现原理 解释Spooling系统及其组成;输入井和输出井的位置及作用 设备独立性的含义 设备的分配方法,
展开阅读全文