linux操作系统华软软件学院电子系P1P1教学内容►设备管理nI/O设备的硬件结构n外设与主机的I/O控制方式n通道技术n设备的分配与释放n设备驱动n缓冲技术n虚拟设备nI/O系统的软件组织linux操作系统华软软件学院电子系P2P2教学要求►了解设备的分类及通道、缓冲技术►理解设备的分配与释放及虚拟设备►掌握外设与主机信息交换的IO控制方式linux操作系统华软软件学院电子系P3P3操作系统整体结构linux操作系统华软软件学院电子系P4P4linux操作系统华软软件学院电子系P5P5linux操作系统华软软件学院电子系P6P6设备管理►设备管理概述n设备管理是计算机中实现对外部设备进行管理、数据传输控制的模块(除CPU和内存)n是系统资源管理中最复杂、最多样化的部分n设备管理实现并行操作,以实现其高利用率u与CPU并行u与其他设备并行n设备管理基于硬件提供的通道、设备物理性能,实现多任务、多进程共享外部设备n大部分外部设备属于临界资源,具备互斥特性linux操作系统华软软件学院电子系P7P7设备管理►设备管理的任务和功能n任务:u对I/O设备的选择、分配和控制u为用户提供友好的界面(接口)u提高设备之间、设备与CPU之间的并发度。n功能:u提供友好(或者统一)的接口u实施设备的分配和回收u实现设备之间、设备与CPU之间的并行操作u解决设备与CPU之间的速度匹配(缓冲技术)linux操作系统华软软件学院电子系P8P8设备的分类按数据传输的数量分类►块设备(BlockDevice):指以数据块为单位来组织和传送数据信息的设备。典型的块设备是磁盘,每个盘块的大小为256B~4KB。►字符设备(CharacterDevice):指以单个字符为单位来传送数据信息的设备。这类设备一般用于数据的输入和输出,有交互式终端、打印机等。输入ls–l/dev查看设备列表,以c或b开头的是什么设备?linux操作系统华软软件学院电子系P9P9设备的分类按资源分配的角度分类►独占设备:指在一段时间内只允许一个用户(进程)访问的设备,大多数低速的I/O设备,如用户终端、打印机等属于这类设备。因为独占设备属于临界资源,所以多个并发进程必须互斥地进行访问。►共享设备:指在一段时间内允许多个进程同时访问的设备。显然,共享设备必须是可寻址的和可随机访问的设备。典型的共享设备是磁盘。共享设备不仅可以获得良好的设备利用率,而且是实现文件系统和数据库系统的物质基础。►虚拟设备:指通过虚拟技术将一台独占设备变换为若干台供多个用户(进程)共享的逻辑设备。一般可以利用假脱机技术(SPOOLing技术)实现虚拟设备。linux操作系统华软软件学院电子系P10P10►I/O设备物理特征输入输出设备都是以字符为I/O传输的基本单位每传送一个字符就发生一次I/O中断输入输出设备的物理特征I/O传输必须以完整的块为基本单位设备每传送完一块发生一次中断存储型设备的物理特征IO设备的物理特性linux操作系统华软软件学院电子系P11P11磁盘的物理特性柱面扇区磁臂磁头硬盘linux操作系统华软软件学院电子系P12P12►时钟n时钟也是一种外部设备,时钟既不是字符设备,也不是块设备n可编程时钟有如下操作模式:u单触发模式u方波模式►终端n存储映像终端:包括显示器和输入键盘,该类终端直接和主机相连nRS-232终端:通过一次传输一位的串行口与计算机通信nX终端:连接在以太网中和主机进行通信linux操作系统华软软件学院电子系P13P13外设与主机的I/O控制方式►循环I/O测试方式n用户程序直接控制I/O操作,测试指令测试一台设备的忙/闲标志,决定主存与外设之间是否要传输,直到该标志为“闲”时,才能继续执行下面的I/O操作指令►程序中断I/O方式n用户进程通过CPU发出指令启动外设,仅当I/O操作正常或异常结束时,I/O控制器向CPU发出中断信号,CPU进行中断处理。linux操作系统华软软件学院电子系P14P14外设与主机的I/O控制方式►直接内存存取方式(DMA)n外设和内存之间直接进行数据交换,不需要CPU干预,多用于块设备的数据传输n过程如下:u当进程要求设备输入数据时,CPU把准备存放输入数据的内存地址和字节数送入DMA控制器。然后设置标志位,启动设备,开始数据输入u发出数据输入要求的进程进入阻塞,调度其他进程进入CPUu输入设备挪用CPU工作周期,将数据从外部缓冲区送入内存uDMA控制器在传输完成时,发出中断信号,CPU进入中断处理程序u中断处理完毕后,CPU返回被中断的进程linux操作系统华软软件学院电子系P15P15外设与主机的I/O控制方式►通道方式n通道是一个独立于CPU的专管输入输出控制的处理机,它控制设备与内存直接进行数据交换。n通道有自己的通道指令,由通道指令构成通道程序。由CPU启动通道工作,通道通过执行通道程序控制数据传输,并在操作结束时向CPU发中断信号,由CPU进行传输结束中断处理通道。linux操作系统华软软件学院电子系P16P16CPU与IO设备的连接图形控制器监控器处理机存储控制器缓存内存SCSI控制器IDE磁盘控制器扩展总线内部接口键盘串口并口磁盘磁盘磁盘磁盘SCSI总线PCI总线扩展总线图5.1典型的PC总线结构linux操作系统华软软件学院电子系P17P17控制器►屏蔽访问设备的具体的时序;►CPU操作控制器,提供命令和数据给控制器,由控制器操纵IO设备►现有的大多数控制器由以下三部分组成:n控制器与CPU接口:用于实现控制器与CPU之间的通信,该接口有三类信号线分别为数据线、地址线、控制线n设备控制器与设备接口:一个控制器可以连接一台或多台设备,相应有一个或多个接口,每个接口连接一台设备nI/O逻辑:用于对I/O进行控制linux操作系统华软软件学院电子系P18P18通道类型►选择通道(selectorchannel):可以连接多个外设,而一次只能访问其中一个外设,执行一道通道程序(单道工作方式)。以块为单位传送数据,速度快,适合高速外部设备。如:磁盘,磁带。►字节多路(bytemultiplexorchannel)通道:以字节为单位传送数据,多个外设分时轮流使用通道(分时系统工作方式)。适合连接低速字符设备。►数组多路(blockmultiplexorchannel)通道:以块为单位传送数据,可以并发访问多个外设,分时执行多道通道程序。适合连接中高速外部设备。如:磁盘,磁带。linux操作系统华软软件学院电子系P19P19处理过程1)当进程要求设备输入数据时,CPU执行Start指令指明I/O操作、通道程序地址、设备号和对应的通道。2)对应通道接收到CPU发来的启动指令之后开始工作,把存放在内存中的通道指令程序读出并执行,并设置对应设备的I/O控制其中的控制状态寄存器,是设备开始工作。3)设备准备好数据,由通道把数据送往通道指令指定的内存区域。4)若数据传送结束,通道通过中断请求线发中断信号请求CPU做中断处理。linux操作系统华软软件学院电子系P20P20中央处理机内存字节多路通道数组多路通道选择通道卡片输入机卡片输入机打印机磁盘磁带通道结构linux操作系统华软软件学院电子系P21P21设备分配系统设备表SDT:每个系统设备占一表目设备控制表UCB:每个设备一张控制器控制表CUCB:每个控制器一张通道控制表CCB:每个通道一张►按一定算法进行设备分配,包括设备、设备控制器及通道►确保n“有”——用户能得到设备使用权。n“安全”——用户使用设备是安全的。linux操作系统华软软件学院电子系P22P22设备分配的数据结构…表目i…表目1…UCB指针获得设备的进程设备标识设备类型…控制器等待队列尾控制器等待队列首CUCB指针设备忙/闲标记设备标识设备类型控制忙/闲标记…控制器等待队列尾控制器等待队列首CCB指针控制器标识通道忙/闲标记通道等待队列尾通道等待队列首通道标识SDTUCB设备控制表控制器控制表CUCBCCB通道控制表………等待进程队列linux操作系统华软软件学院电子系P23P23UCB数据结构►Structdevtab{►intdvid;//设备标识►intdvadd;//设备地址►int*dvec;//中断向量►int*dvbuf;//缓冲区指针►int*dvque;//等待队列►int(*dvinit)();//初始化►int(*dvopen)();//打开int(*dvclose)();//设备关闭int(*dvread)();//设备读int(*dvwrite)();//设备写int(*dvseek)();//设备查询int(*dvcntl)();//设备控制int(*dvgetc)();//取字符int(*dvputc)();//送字符}dct[];linux操作系统华软软件学院电子系P24P24设备分配的原则►设备分配总原则:充分发挥设备利用率,避免由于不合理分配引起进程死锁。►具体考虑以下方面:n设备的固有属性(独占、共享、虚拟)。n设备分配算法(先来先服务、优先级)。n设备分配的安全性(安全或不安全分配方式)。n设备独立性(用户程序独立于使用的物理设备)。linux操作系统华软软件学院电子系P25P25设备分配方式►静态分配:在进程分创建时分配,在进程退出时释放;u优缺点:不会出现死锁;u设备利用率不高;►动态分配:在进程执行过程中根据需要分配,使用结束后释放;u优缺点:需要考虑死锁问题u有利于提高设备利用率linux操作系统华软软件学院电子系P26P26设备调度--输入输出调度算法►先到先服务算法►最短查找时间优先算法►扫描算法(电梯算法)►N步扫描法linux操作系统华软软件学院电子系P27P27缓冲技术►缓冲n是两种不同速度的设备之间传输信息时平滑传输过程的常用手段。►不同的缓冲方式n缓冲器(硬缓冲)u缓冲器是用来暂时存放数据的一种存储装置,它容量较小,存取速度快。n软件缓冲u在I/O操作期间用来临时存放I/O数据的一块存储区域。linux操作系统华软软件学院电子系P28P28缓冲类别►单缓冲(singlebuffer):设一个缓冲区,CPU和外设轮流使用,一方处理完之后接着等待对方处理。►双缓冲(doublebuffer):设两个缓冲区,CPU和外设都可以连续处理而无需等待对方。要求CPU和外设的速度相近。►多缓冲(multiplybuffer):多个缓冲区,CPU和外设的处理速度可以相差较大。如用于输入或输出的环形缓冲区。(一般是专用)►缓冲池(bufferpool):由多个缓冲区构成,既可用于输入也可用于输出,多个进程共享,可用于多种设备。(通用,利用率高)linux操作系统华软软件学院电子系P29P29缓冲类别I/O设备输入用户进程操作系统I/O设备输入用户进程操作系统输入I/O设备用户进程操作系统(a)(b)(c)(a)单缓冲;(b)双缓冲;(c)循环缓冲linux操作系统华软软件学院电子系P30P30虚拟设备虚拟设备的思想是,独占型设备与内存进程之间加入共享型设备作为过渡因为共享型设备速度快,进程I/O传输所需的时间较短,提高了进程执行速度由于信息在独占型设备与共享型设备之间的传输时连续进行的,独占型设备在占用期间一直使用,提供了设备资源的利用率间断传输连续传输进程共享型设备某一区域独占型设备linux操作系统华软软件学院电子系P31P31SPOOLing技术►SPOOLing技术nSimultaneousPeripheralOperationOnLine(并发的非实质性在线操作)nSPOOLing又被称为“假脱机”技术n输入井:在磁盘用于虚拟输入设备的专门空间。该井用于收容输入设备上的输入数据n输出井:在磁盘用于虚拟输出设备的专门空间。该井用于收容用户进程需要输出的数据n虚拟分配:当进程请求I/O时,OS给进程分配的不是真正的物理设备,而是这些可共享的、并与物理设备有逻辑联系的虚拟设备---“井”n采用共享的方式为进程分配一个共享设备“井”n将“井”与指定的独占