340 likes | 523 Views
第13ç« I/O 系统. I/O è®¾å¤‡çš„å¤šæ ·æ€§ Os 管ç†å’ŒæŽ§åˆ¶ I/O æ“作和 I/O 设备。. 13.1 I/O 管ç†ï¼ 概述. 外设管ç†ç›®çš„ æé«˜æ•ˆçŽ‡ï¼š æé«˜ I/O è®¿é—®æ•ˆçŽ‡ï¼ŒåŒ¹é… CPU 和多ç§ä¸åŒå¤„ç†é€Ÿåº¦çš„外设 方便使用: 方便用户使用,对ä¸åŒç±»åž‹çš„设备统一使用方法,å调对设备的并å‘使用 方便控制: 方便 OS å†…éƒ¨å¯¹è®¾å¤‡çš„æŽ§åˆ¶ï¼šå¢žåŠ å’Œåˆ é™¤è®¾å¤‡ï¼Œé€‚åº”æ–°çš„è®¾å¤‡ç±»åž‹ 外设管ç†åŠŸèƒ½ æä¾›è®¾å¤‡ä½¿ç”¨çš„ç”¨æˆ·æŽ¥å£ ï¼šå‘½ä»¤æŽ¥å£å’Œç¼–ç¨‹æŽ¥å£ è®¾å¤‡åˆ†é…和释放: 使用设备å‰ï¼Œéœ€è¦åˆ†é…设备和相应的通é“ã€æŽ§åˆ¶å™¨ã€‚ 设备的访问和控制: 包括并å‘访问和差错处ç†ï¼ˆè™šæ‹Ÿè®¾å¤‡ï¼‰ã€‚
E N D
第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管理-外部设备类型和特征 • 按交互对象分类 • 人机交互设备:视频显示设备、键盘、鼠标、打印机 • 与计算机或其他电子设备交互的设备:磁盘、磁带、传感器、控制器 • 计算机间的通信设备:网卡、调制解调器 • 按交互方向分类 • 输入(可读):键盘、扫描仪 • 输出(可写):显示设备、打印机 • 输入/输出(可读写):磁盘、网卡 • 按外设特性分类 • 使用特征:存储、输入/输出、终端 • 数据传输率:低速(如键盘)、中速(如打印机)、高速(如网卡、磁盘) • 信息组织特征:单个字符或数据块 • 字符设备(如打印机):通常的输入输出型设备,以字符为单位存储、传输信息;不可寻址 • 块设备(如磁盘):以数据块为单位存储、传输信息。可寻址
13.1 I/O管理-外部设备类型和特征 • 按资源分配角度分类 • 独占设备 • 在一段时间内只能有一个进程使用的设备,一般为低速I/O设备。如打印机,磁带等。 • 共享设备 • 在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高。如硬盘 • 虚拟设备 • 在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备.(实例:SPOOLing技术,利用虚设备技术——用硬盘模拟输入输出设备) • 从程序使用角度分 • 逻辑设备:用户程序中使用的设备 • 物理设备:实际完成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个软盘驱动器;
设备绝对号和相对号 • 设备的指定方式 • 设备绝对号 • 设备类型号+设备相对号 • 用户程序中提出使用设备的申请时,使用系统规定的设备类型号和用户自己规定的设备相对号,由操作系统进行地址转换,变成系统中的设备绝对号;
13.3 设备管理系统的组织 • I/O软件的设计目标: • 效率:大多数I/O设备慢,I/O操作一般是系统瓶颈,很大程度上影响系统的性能和吞吐量。因此要改善I/O的有效性,采用多道程序设计、交换。目前比较关注磁盘I/O。 • 通用性:设备种类、特点和性能千差万别;要求能够以一种一致的方式来管理所有设备-一致的外部接口,很难做到通用,但希望能够用统一的方法处理所有设备,用一种层次化的,模块化的方法设计I/O功能。 • 能够在低层例程中隐藏大部分设备I/O的细节, • 使得用户进程和OS高层可以通过一些通用的功能,如读、写、打开、关闭等查看I/O设备。 • 设备独立性。用户在编写使用软盘或硬盘上文件的程序时,无需为不同的设备类型而修改程序就可以使用 • 统一命名。一个文件或一个设备的名字只应是一个简单的字符串或一个整数,不应依赖于设备
13.3 设备管理系统的组织 • I/O软件的基本思想是按分层的思想构成: • 较低层软件要使较高层软件独立于硬件的特性, • 较高层软件则要向用户提供一个友好的、清晰的、简单的、功能更强的接口
User Process Logical I/O Communications Architecture Device I/O Scheduling & Control(Device Driver) Hardware 13.3 设备管理分层模型 返回
13.3 设备管理分层模型 • 逻辑I/O:将设备当作一个逻辑资源,不涉及实际的设备控制的细节: • 针对用户接口,提供抽象的命令,如:Open, Close, Read, • 针对通信设备,则是通信体系结构如网络协议栈; • 针对文件存储设备,是文件系统的逻辑结构控制; • 设备I/O:逻辑设备与物理设备间的过渡协调机构。用户命令到设备操作序列的转换。请求的操作和数据被转换成适当的I/O指令序列、通道命令和控制器指令。可以用I/O缓冲提高I/O效率 • 调度和控制:是I/O模块和设备硬件真正发生交互的软件层,直接面对硬件设备的控制细节。如I/O操作的排队,设备控制和状态维护、中断处理。这部分通常体现为设备驱动程序;
I/O系统的层次结构及每层的主要功能 进行I/O调用,格式化I/O; Spooling 命名,保护,阻塞,缓冲,分配 建立设备寄存器;检查状态 当I/O结束时,唤醒驱动器 执行I/O操作
I/O系统的层次结构及每层的主要功能 • 用户进程层执行输入输出系统调用,对I/O数据进行格式化 • 独立于设备的软件实现设备的命名、设备的保护、成块处理、缓冲技术和设备分配;(逻辑I/O) • 设备驱动程序设置设备寄存器、检查设备的执行状态 • 中断处理程序负责I/O完成时,唤醒设备驱动程序进程,进行中断处理 • 硬件层实现物理I/O的操作
13.4 缓冲 • 缓冲技术的基本思想:在CPU和外设之间设置缓冲区,用于暂存CPU与外设之间交换的数据,从而缓和CPU与外设速度不匹配的矛盾。 • 缓冲区所在的位置:内存,控制器或外设(多级缓冲机制) • 硬件缓冲,如I/O控制器中的数据缓冲寄存器 • 软件缓冲:在内存画出一个具有n个单元的专用缓冲区。 • 根据方向:分为输入缓冲和输出缓冲 • 根据用途:分为专用缓存(为一个设备独占,如键盘缓存)和公用缓存(为多个设备公用) 缓冲区 外设 CPU
13.4 缓冲 • 无缓冲时问题分析:设备直接向进程地址空间传送数据(如用户从磁带中读数据块的操作),则进程要么忙等待,要么阻塞。 • 如果用忙等待方式,则浪费大量CPU时间; • 如果是阻塞方式,则进程阻塞在设备的I/O请求队列中。这时,不能将进程全部换出,还可能出现单进程死锁。(进程在等待I/O操作结果之前被换出,等待I/O事件,而I/O操作也被阻塞,等待该进程被换入。)
13.4 缓冲-用途 • 缓冲技术的用途 • 可以在发出请求之前就开始执行输入操作(预输入),在发出请求一段时间后才开始执行输出操作(缓输出)。 • 匹配CPU或用户应用进程与外设的不同处理速度 • 减少对CPU的中断次数:提高CPU和I/O设备之间以及各个I/O设备之间的处理并行性。 • 多道程序环境中提高OS效率和单个进程的工具(技术)之一。
13.4 缓冲-单缓冲区 • 单缓冲(single buffer):当一个用户进程发出I/O请求时,OS给该操作分配一个位于主存中系统部分的缓冲区。以面向块的设备为例:输入先传送至系统缓冲区,当传送完成时,进程将该块移动到用户空间,并立即请求另一块-预读(对于输出,则称为延迟写)。 • 好处: • 用户可以在下一块数据正在读入时,处理这块数据(用户进程处理某个数据块的同时,下一个数据块正在读入)。由于输入发生功能在系统存储空间而不是用户进程存储区,因此OS可以将该进程换出。 • 增加了OS的逻辑复杂度:OS必须直到用户进程的缓冲区的分配情况,交换逻辑受到影响。
13.4 缓冲-双缓冲和循环缓冲 • 双缓冲(double buffer):两个缓冲区,CPU和外设都可以连续处理而无需等待对方。当一个进程往一个缓冲区中写数据时(取数据)时,OS正在清空(填充)另一个缓冲区。 • 循环缓冲(circular buffer):多个缓冲区,CPU和外设的处理速度可以相差较大,如这个进程突然快速执行了大量的I/O。
13.4 设备分配 • 由于外设资源的有限,需解决进程间的外设共享问题,以提高外设资源的利用率。设备分配是对进程使用外设过程的管理。这里有两种作法: • 1)在进程间切换使用外设,如键盘和鼠标; • 2)通过一个虚拟设备把外设与应用进程隔开,只由虚拟设备来使用设备。
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 设备分配-原则 • 设备分配的原则 • 合理使用外设(公平和避免死锁) • 提高设备利用率 • 应用程序与设备无关 • 与设备分配有关的设备属性: • 独享设备:打印机等; • 共享设备:磁盘、网卡等; • 设备分配技术: • 独占分配:不会出现死锁;但设备利用率不高; • 共享分配:利用率高,但控制复杂 • 虚拟分配:利用共享设备去实现独占设备的功能;有利于提高设备利用率
13.4.2 设备分配-算法 • 先来先服务(FCFS):按I/O请求的先后顺序,排成I/O请求命令队列,队首指向被请求设备的DCT;按FCFS分配设备; • 基于优先级:依据进程的优先级,指定I/O请求的优先级,排成不同优先级队列;按优先级高低分配设备;
13.5 Spooling系统 • 先回顾一下设备分类问题 • 按资源分配角度分类 • 独占设备 • 在一段时间内只能有一个进程使用的设备,一般为低速I/O设备。如打印机,磁带等。数量有限,成为系统中的“瓶颈”资源,使进程处于阻塞状态;设备利用率比较低 • 共享设备 • 在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高。(如硬盘)
13.5 Spooling系统 • 虚拟设备技术 • 通过共享型设备来模拟独占型设备的动作,使独占型设备成为共享型设备,提高设备的利用率和系统的效率。 • 实例:SPOOLing技术(Simultaneously Peripheral Operation On Line,外围设备同时联机操作)
虚拟设备 用户进程 …… 输入设备 虚拟设备 …… 输出设备 虚拟设备 用户进程 虚拟设备 输入井 …… 输出井 …… 虚拟设备
13.5 SPOOLing系统-工作原理 • 作业执行前用慢速设备将作业预先输入到输入井中,称为预输入(输入井和输出井是某共享设备(磁盘)上的一部分存储空间)。 • 作业运行后,使用数据时,从输入井中取出 • 作业执行不必直接启动外设输出数据,只需将这些数据写入输出井中 • 作业全部运行完毕,再由外设输出全部数据和信息,称为缓输出 • 实现了对作业输入、组织调度和输出的统一管理使外设在CPU直接控制下,与CPU并行工作(称为假脱机)
输入装置 通 道 外 设 输入井 输出井 通 道 输出装置 输入装置 输出装置 通 道 主机系统 输入管 输出管 理模块 理模块 SPOOLing系统
13.5 SPOOLing系统-举例 • 假设系统中全部打印机采用了Spooling技术,当某进程要求打印输出时,并不是将某台打印机分配给该进程,而是在某共享设备(磁盘)上的输出井中,为其分配一块存储区,同时为该进程的输出数据建立一个文件,该进程的输出数据实际上并未从打印机上输出,只是以文件形式输出,并输出存放在输出井中。 • 这个输出文件实际相当于虚拟的打印机。这些输出井中的文件形成了一个输出队列,然后调度输出 • 用户进程并未真正分到打印机, • 用户进程被分配的只是共享设备中的一个存储区
打印请求队列 打印机 打印 服务进程 以spooling方式使用外设 13.5 SPOOLing系统-举例 思考:以打印机为例,简述Spooling技术的工作原理,它是如何使一台打印机虚拟成多台打印机的?
13.5 SPOOLing系统-优点 • Spooling技术优点: • 高速虚拟I/O操作:应用程序的虚拟I/O比实际I/O速度提高,缩短了应用程序的执行时间。另一方面,程序的虚拟I/O操作时间和实际I/O操作时间分离开来。 • 实现对独享设备的共享:由Spooling程序提供虚拟设备,可以对独享设备共享使用。
思考题 • 什么是缓冲?为什么要引入缓冲? • 区分独占设备、共享设备、虚拟设备; • 理解对共享设备可同时使用的含义; • 简述实现虚拟设备的基本条件,虚拟设备的实现原理 • 解释Spooling系统及其组成;输入井和输出井的位置及作用 • 设备独立性的含义 • 设备的分配方法