1、第七章 设备管理7.1 I/O7.1 I/O系统的组成系统的组成7.2 I/O7.2 I/O控制方式控制方式 7.3 7.3 缓冲管理缓冲管理 7.4 7.4 设备分配设备分配 7.5 7.5 设备处理设备处理 第七章第七章 设备管理设备管理第七章 设备管理7.1.1 I/O系统的结构系统的结构7.1.2 I/O设备设备7.1.3 设备控制器设备控制器7.1.4 I/O通道通道7.1 I/O系统的组成系统的组成第七章 设备管理图7-1 总线型I/O系统结构 CPU存储器磁盘控制器打印机控制器其它控制器磁盘驱动器打印机系统总线7.1.1 I/O系统的结构系统的结构1、微型机、微型机I/O系统系统
2、第七章 设备管理1)ISA和和EISA总线总线1)ISA(Industry Standard Architecture)总线 这是为了1984年推出的80286型微机而设计的总线结构。其总线的带宽为8位,最高传输速率为2 Mb/s。之后不久又推出了16位的(EISA)总线,其最高传输速率为8 Mb/s,后又升至16 Mb/s,能连接12台设备。2)EISA(Extended ISA)总线 到80年代末期,ISA总线已难于满足带宽和传输速率的要求,于是人们又开发出扩展ISA(EISA)总线,其带宽为32位,总线的传输速率高达32 Mb/s,同样可以连接12台外部设备。I/O结构结构(续续1)第七
3、章 设备管理2)局部总线)局部总线(Local Bus)1)VESA(Video Electronic Standard Association)总线 2)PCI(Peripheral Component Interface)总线、AGP*3)PCI Express 总线2、主机、主机I/O系统系统 I/O结构结构(续续2)计算机I/O通道1I/O通道1控制器控制器控制器控制器设备第七章 设备管理7.1.2 I/O设备设备1.I/O设备的类型设备的类型 1)按传输速率分类 按传输速度的高低,可将I/O设备分为三类。第一类是低速低速设备设备,这是指其传输速率仅为每秒钟几个字节至数百个字节的一类设
4、备。属于低速设备的典型设备有键盘、鼠标器、语音的输入和输出等设备。第二类是中速设备中速设备,这是指其传输速率在每秒钟数千个字节至数万个字节的一类设备。典型的中速设备有行式打印机、激光打印机等。第三类是高速设备高速设备,这是指其传输速率在数百千个字节至数十兆字节的一类设备。典型的高速设备有磁带机、磁盘机、光盘机等。第七章 设备管理 2)按信息交换的单位分类 可将I/O设备分成两类。第一类是块设备块设备(Block Device),这类设备用于存储信息。由于信息的存取总是以数据块为单位,故而得名。它属于有结构设备。典型的块设备是磁盘,每个盘块的大小为512 B4 KB。磁盘设备的基本特征是其传输速
5、率较高,通常每秒钟为几兆位;另一特征是可寻址,即对它可随机地读/写任一块;此外,磁盘设备的I/O常采用DMA方式。第二类是字符设备字符设备(Character Device),用于数据的输入和输出。其基本单位是字符,故称为字符设备。I/O设备设备(续续1)第七章 设备管理3)按设备的共享属性分类这种分类方式可将I/O设备分为如下三类:(1)独占设备。(2)共享设备。(3)虚拟设备。I/O设备设备(续续2)第七章 设备管理2.设备与控制器之间的接口设备与控制器之间的接口 图7-2 设备与控制器间的接口 缓冲转换器控制逻辑信号数据数据信号线状态信号线控制信号线至设备控制器I/O设备 I/O设备设备
6、(续续3)第七章 设备管理1.设备控制器的基本功能设备控制器的基本功能 1)接收和识别命令 2)数据交换 3)标识和报告设备的状态 4)地址识别 5)数据缓冲 6)差错控制 7.1.3 设备控制器设备控制器第七章 设备管理2.设备控制器的组成设备控制器的组成 图7-3 设备控制器的组成 数据寄存器控制/状态寄存器数据线I/O逻辑控制器与设备接口1控制器与设备接口i数据状态控制数据状态控制地址线控制线CPU与控制器接口控制器与设备接口 设备控制器设备控制器(续续1)第七章 设备管理1.I/O通道通道(I/O Channel)设备的引入设备的引入 实际上,I/O通道是一种特殊的处理机。它具有执行I
7、/O指令的能力,并通过执行通道(I/O)程序来控制I/O操作。但I/O通道又与一般的处理机不同,主要表现在以下两个方面:一是其指令类型单一,这是由于通道硬件比较简单,其所能执行的命令,主要局限于与I/O操作有关的指令;再就是通道没有自己的内存,通道所执行的通道程序是放在主机的内存中的,换言之,是通道与CPU共享内存。7.1.4 I/O通道通道第七章 设备管理2.通道类型通道类型 1)字节多路通道(Byte Multiplexor Channel)图7-4 字节多路通道的工作原理 控制器A控制器B控制器C控制器D控制器NA1A2A3子通道AB1B2B3子通道BC1C2C3子通道CN1N2N3子通
8、道NA1B1C1A2B2C2设备 I/O通道通道(续续1)第七章 设备管理2)数组选择通道(Block Selector Channel)字节多路通道不适于连接高速设备,这推动了按数组方式进行数据传送的数组选择通道的形成。这种通道虽然可以连接多台高速设备,但由于它只含有一个分配型子通道,在一段时间内只能执行一道通道程序,控制一台设备进行数据传送,致使当某台设备占用了该通道后,便一直由它独占,即使是它无数据传送,通道被闲置,也不允许其它设备使用该通道,直至该设备传送完毕释放该通道。可见,这种通道的利用率很低。I/O通道通道(续续2)第七章 设备管理 3)数组多路通道(Block Multiple
9、xor Channel)数组选择通道虽有很高的传输速率,但它却每次只允许一个设备传输数据。数组多路通道是将数组选择通道传输速率高和字节多路通道能使各子通道(设备)分时并行操作的优点相结合而形成的一种新通道。它含有多个非分配型子通道,因而这种通道既具有很高的数据传输速率,又能获得令人满意的通道利用率。也正因此,才使该通道能被广泛地用于连接多台高、中速的外围设备,其数据传送是按数组方式进行的。I/O通道通道(续续3)第七章 设备管理3.“瓶颈瓶颈”问题问题 图7-5 单通路I/O系统 设备1设备2设备3设备4设备5设备6设备7控制器1控制器2控制器3控制器4通道1通道2存储器 I/O通道通道(续续
10、4)第七章 设备管理图7-6 多通路I/O系统 I/O设备控制器1控制器2通道1通道2存储器I/O设备I/O设备I/O设备 I/O通道通道(续续5)第七章 设备管理7.2.1 程序程序I/O方式方式7.2.2 中断驱动中断驱动I/O控制方式控制方式7.2.3 直接存储器访问直接存储器访问DMA I/O控制方式控制方式7.2.4 I/O通道控制方式通道控制方式7.2 I/O控制方式控制方式第七章 设备管理7.2.1 程序程序I/O方式方式 在程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费。在
11、该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构,使I/O设备无法向CPU报告它已完成了一个字符的输入操作。第七章 设备管理图7-7 程序I/O和中断驱动方式的流程 向I/O控制器发读命令读I/O控制器的状态检查状态?从I/O控制器中读入字向存储器中写字传送完成?未就绪就绪出错CPUI/OI/OCPUI/OCPUCPU 内存下条指令完成未完向I/O控制器发读命令读I/O控制器的状态检查状态?从I/O控制器中读字向内存中写字传送完成?就绪出错CPUI/OI/OCPUI/OCPUCPU 内存下条指令完成未完中断CPU做其它事向I/O控制器发布读块命令CPUDMACP
12、U做其它事读DMA控制器的状态中断DMACPU下条指令(a)程序I/O方式(b)中断驱动方式(c)DMA方式 程序程序I/O方式方式(续续1)第七章 设备管理 在I/O设备输入每个数据的过程中,由于无须CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。可见,这样可使CPU和I/O设备都处于忙碌状态,从而提高了整个系统的资源利用率及吞吐量。例如,从终端输入一个字符的时间约为100 ms,而将字符送入终端缓冲区的时间小于 0.1 ms。若采用程序I/O方式,CPU约有 99.9 ms的时间处于忙等待中。采用中断驱动方式后,CPU可利用这 9
13、9.9 ms的时间去做其它事情,而仅用 0.1 ms的时间来处理由控制器发来的中断请求。可见,中断驱动方式可以成百倍地提高CPU的利用率。7.2.2 中断驱动中断驱动I/O控制方式控制方式第七章 设备管理1.DMA(Direct Memory Access)控制方式的引入控制方式的引入 该方式的特点是:数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块;所传送的数据是从设备直接送入内存的,或者相反;仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。可见,DMA方式较之中断驱动方式,又是成百倍地减少了CPU对I/O的干预,
14、进一步提高了CPU与I/O设备的并行操作程度。7.2.3 直接存储器访问直接存储器访问DMA I/O控制方式控制方式第七章 设备管理2.DMA控制器的组成控制器的组成 图7-8 DMA控制器的组成 DRMARDCCRI/O控制逻辑主机控制器接口控制器与块设备接口count内存CPU命令系统总线DMA控制器 DMA(续1)第七章 设备管理 为了实现在主机与控制器之间成块数据的直接交换,必须在DMA控制器中设置如下四类寄存器:(1)命令/状态寄存器CR。用于接收从CPU发来的I/O命令或有关控制信息,或设备的状态。(2)内存地址寄存器MAR。在输入时,它存放把数据从设备传送到内存的起始目标地址;在
15、输出时,它存放由内存到设备的内存源地址。(3)数据寄存器DR。用于暂存从设备到内存,或从内存到设备的数据。(4)数据计数器DC。存放本次CPU要读或写的字(节)数。DMA(续2)第七章 设备管理3.DMA工作过程工作过程 图7-9 DMA方式的工作流程 设置AR和DC初值启动DMA传送命令挪用存储器周期传送数据字存储器地址增 1字计数寄存器减 1DC 0?请求中断在继续执行用户程序的同时,准备又一次传送否是 DMA(续3)第七章 设备管理1.I/O通道控制方式的引入通道控制方式的引入 I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为
16、对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。例如,当CPU要完成一组相关的读(或写)操作及有关控制时,只需向I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首址和要访问的I/O设备,通道接到该指令后,通过执行通道程序便可完成CPU指定的I/O任务。7.2.4 I/O通道控制方式通道控制方式第七章 设备管理2.通道程序通道程序(1)操作码。(2)内存地址。(3)计数。(4)通道程序结束位P。(5)记录结束标志R。通道控制通道控制(续续1)第七章 设备管理操作 PR计数内存地址WRIT
17、E 0080813WRITE001401034WRITE01605830WRITE013002000WRITE002501850WRITE11250720 通道控制通道控制(续续2)第七章 设备管理7.3.1 缓冲的引入缓冲的引入 7.3.2 单缓冲和双缓冲单缓冲和双缓冲7.3.3 双缓冲双缓冲(Double Buffer)7.3.4 循环缓冲循环缓冲7.3.5 缓冲池缓冲池(Buffer Pool)7.3 缓冲管理缓冲管理第七章 设备管理7.3.1 缓冲的引入缓冲的引入(1)缓和CPU与I/O设备间速度不匹配的矛盾。(2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制。(3)提高CP
18、U和I/O设备之间的并行性。第七章 设备管理图7-10 利用缓冲寄存器实现缓冲 1位缓冲9.6 Kb/s8位缓冲寄存器送内存9.6 Kb/s8位缓冲寄存器9.6 Kb/s送内存(b)(a)(c)缓冲的引入缓冲的引入(续续1)第七章 设备管理工作区处理(C)缓冲区传送(M)输入(T)I/O设备(a)T1M1C1T2M2C2T3M3C3T4t(b)用户进程图7-11 单缓冲工作示意图 7.3.2 单缓冲单缓冲第七章 设备管理工作区用户进程缓冲区1缓冲区2I/O 设备T1(缓冲1)M1C1M2C2M3C3T2(缓冲2)T3(缓冲3)M4C4T4(缓冲4)(a)(b)图7-12 双缓冲工作示意图 7.
19、3.3 双缓冲双缓冲(Double Buffer)第七章 设备管理图7-13 双机通信时缓冲区的设置 缓冲区缓冲区A机B机(a)单缓冲发送缓冲区接收缓冲区接收缓冲区发送缓冲区A机B机(b)双缓冲 双缓冲双缓冲(续续1)第七章 设备管理1.循环缓冲的组成循环缓冲的组成 图7-14 循环缓冲 RGGGRG165423NextiNextgRGGGRC165423NextiNextgcurrent7.3.4 循环缓冲循环缓冲第七章 设备管理2.循环缓冲区的使用循环缓冲区的使用(1)Getbuf过程。(2)Releasebuf过程。循环缓冲循环缓冲(续续1)第七章 设备管理3.进程同步进程同步(1)Ne
20、xti指针追赶上Nextg指针。(2)Nextg指针追赶上Nexti指针。循环缓冲循环缓冲(续续2)第七章 设备管理 1.缓冲池的组成缓冲池的组成 对于既可用于输入又可用于输出的公用缓冲池,其中至少应含有以下三种类型的缓冲区:空(闲)缓冲区;装满输入数据的缓冲区;装满输出数据的缓冲区。为了管理上的方便,可将相同类型的缓冲区链成一个队列,于是可形成以下三个队列:(1)空缓冲队列emq。(2)输入队列inq。(3)输出队列outq。7.3.5 缓冲池缓冲池(Buffer Pool)第七章 设备管理2.Getbuf过程和过程和Putbuf过程过程 Procedure Getbuf(type)begi
21、n Wait(RS(type);Wait(MS(type);B(number)KG-*3=Takebuf(type);Signal(MS(type);end Procedure Putbuf(type,number)begin Wait(MS(type);Addbuf(type,number);Signal(MS(type);Signal(RS(type);end 缓冲池缓冲池(续续1)第七章 设备管理3.缓冲区的工作方式缓冲区的工作方式 图7-15 缓冲区的工作方式 hinsoutsinhout收容输入提取输出用户程序提取输入收容输出缓冲池 缓冲池缓冲池(续续2)第七章 设备管理7.4.1
22、设备分配中的数据结构设备分配中的数据结构7.4.2 设备分配时应考虑的因素设备分配时应考虑的因素7.4.3 设备独立性设备独立性7.4.4 独占设备的分配程序独占设备的分配程序7.4.5 SPOOLing技术技术7.4 设备分配设备分配第七章 设备管理7.4.1 设备分配中的数据结构设备分配中的数据结构1.设备控制表设备控制表DCT 设备类型 type设备标识符:deviceid设备状态:等待/不等待 忙/闲指向控制器表的指针重复执行次数或时间设备队列的队首指针DCT 1DCT 2DCT n设备控制表集合图7-16 设备控制表 第七章 设备管理2.控制器控制表、控制器控制表、通道控制表和系统设
23、备表通道控制表和系统设备表 图7-17 COCT、CHCT和SDT表(c)系统设备表SDT控制器标识符:controllerid控制器状态:忙/闲与控制器连接的通道表指针控制器队列的队首指针控制器队列的队尾指针通道标识符:channelid通道状态:忙/闲与通道连接的控制器表首址通道队列的队首指针通道队列的队尾指针(a)控制器表COCT(b)通道表CHCT表目1表目i设备类设备标识符DCT驱动程序入口 数据结构数据结构(续续1)第七章 设备管理1.设备的固有属性设备的固有属性(1)独享设备。(2)共享设备。(3)虚拟设备。7.4.2 设备分配时应考虑的因素设备分配时应考虑的因素第七章 设备管理
24、2.设备分配算法设备分配算法(1)先来先服务。(2)优先级高者优先。考虑因素考虑因素(续续1)第七章 设备管理3.设备分配中的安全性设备分配中的安全性 1)安全分配方式 2)不安全分配方式 考虑因素考虑因素(续续2)第七章 设备管理 1.设备独立性设备独立性(Device Independence)的概念的概念 为了提高OS的可适应性和可扩展性,在现代OS中都毫无例外地实现了设备独立性,也称为设备无关性。其基本含义是:应用程序独立于具体使用的物理设备。为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备
25、名称。因此,系统须具有将逻辑设备名称转换为某物理设备名称的功能,这非常类似于存储器管理中所介绍的逻辑地址和物理地址的概念。7.4.3 设备独立性设备独立性第七章 设备管理 在实现了设备独立性的功能后,可带来以下两方面的好处。1)设备分配时的灵活性 2)易于实现I/O重定向 设备独立性设备独立性(续续1)第七章 设备管理2.设备独立性软件设备独立性软件 1)执行所有设备的公有操作 这些公有操作包括:对独立设备的分配与回收;将逻辑设备名映射为物理设备名,进一步可以找到相应物理设备的驱动程序;对设备进行保护,禁止用户直接访问设备;缓冲管理,即对字符设备和块设备的缓冲区进行有效的管理,以提高I/O的效
26、率;差错控制。由于在I/O操作中的绝大多数错误都与设备无关,故主要由设备驱动程序处理,而设备独立性软件只处理那些设备驱动程序无法处理的错误。设备独立性设备独立性(续续2)第七章 设备管理 2)向用户层(或文件层)软件提供统一接口 无论何种设备,它们向用户所提供的接口应该是相同的。例如,对各种设备的读操作,在应用程序中都使用read;而对各种设备的写操作,也都使用write。设备独立性设备独立性(续续3)第七章 设备管理3.逻辑设备名到物理设备名映射的实现逻辑设备名到物理设备名映射的实现 1)逻辑设备表2)LUT的设置问题 图7-18 逻辑设备表 逻辑设备名物理设备名驱动程序入口地址/dev/t
27、ty/dev/printer3510242046逻辑设备名/dev/tty/dev/printer系统设备表指针35(a)(b)设备独立性设备独立性(续续4)第七章 设备管理1.基本的设备分配程序基本的设备分配程序 1)分配设备 2)分配控制器 3)分配通道 7.4.4 独占设备的分配程序独占设备的分配程序第七章 设备管理2.设备分配程序的改进设备分配程序的改进 1)增加设备的独立性 2)考虑多通路情况 独占设备的分配独占设备的分配(续续1)第七章 设备管理 1.什么是什么是SPOOLing 为了缓和CPU的高速性与I/O设备低速性间的矛盾而引入了脱机输入、脱机输出技术。该技术是利用专门的外围
28、控制机,将低速I/O设备上的数据传送到高速磁盘上;或者相反。事实上,当系统中引入了多道程序技术后,完全可以利用其中的一道程序,来模拟脱机输入时的外围控制机功能,把低速I/O设备上的数据传送到高速磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。这样,便可在主机的直接控制下,实现脱机输入、输出功能。此时的外围操作与CPU对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作称为SPOOLing(Simultaneaus Periphernal Operating On-Line),或称为假脱机操作。7.4.5 SPOOLing技术技术第七章 设备管
29、理2.SPOOLing系统的组成系统的组成 图7-19 SPOOLing系统的组成 输入进程SPi输入进程SPo输入缓冲区Bi输出缓冲区Bo输入井输出井磁盘输入设备输出设备 SPOOLing(续续1)第七章 设备管理3.共享打印机共享打印机 共享打印机技术已被广泛地用于多用户系统和局域网络中。当用户进程请求打印输出时,SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给该用户进程,而只为它做两件事:由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中;输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到请求打印队列上。SPO
30、OLing(续续2)第七章 设备管理4.SPOOLing系统的特点系统的特点(1)提高了I/O的速度。(2)将独占设备改造为共享设备。(3)实现了虚拟设备功能。SPOOLing(续续3)第七章 设备管理7.5.1 设备驱动程序的功能和特点设备驱动程序的功能和特点7.5.2 设备驱动程序的处理过程设备驱动程序的处理过程7.5.3 中断处理程序的处理过程中断处理程序的处理过程7.5 设备处理设备处理第七章 设备管理7.5.1 设备驱动程序的功能和特点设备驱动程序的功能和特点1.设备驱动程序的功能设备驱动程序的功能 (1)接收由I/O进程发来的命令和参数,并将命令中的抽象要求转换为具体要求,例如,将
31、磁盘块号转换为磁盘的盘面、磁道号及扇区号。(2)检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。第七章 设备管理 (3)发出I/O命令,如果设备空闲,便立即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。(4)及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。(5)对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序。功能和特点功能和特点(续续1)第七章 设备管理2.设备处理方式设备处理方式 (1)为每一类设备设置一个进程,专门用于执行这类设
32、备的I/O操作.(2)在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备的I/O操作。(3)不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序(模块),供用户进程或系统进程调用。功能和特点功能和特点(续续2)第七章 设备管理3.设备驱动程序的特点设备驱动程序的特点 (1)驱动程序主要是指在请求I/O的进程与设备控制器之间的一个通信和转换程序。(2)驱动程序与设备控制器和I/O设备的硬件特性紧密相关,因而对不同类型的设备应配置不同的驱动程序。(3)驱动程序与I/O设备所采用的I/O控制方式紧密相关。(4)由于驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言书写。功能
33、和特点功能和特点(续续3)第七章 设备管理1.将抽象要求转换为具体要求将抽象要求转换为具体要求 2.检查检查I/O请求的合法性请求的合法性 3.读出和检查设备的状态读出和检查设备的状态 4.传送必要的参数传送必要的参数 5.工作方式的设置工作方式的设置 6.启动启动I/O设备设备 7.5.2 设备驱动程序的处理过程设备驱动程序的处理过程第七章 设备管理图7-20 中断现场保护示意图 PSW程序状态字PC(N1)程序计数器R0Rn寄存器开始返回用户程序中断服务子例程PSWPC(N1)中断栈TTM线指针YNN1R0Rn 驱动程序过程驱动程序过程(续续1)第七章 设备管理唤醒被阻塞的驱动程序进程对被中断进程的CPU环境进行保护分析中断原因,转入相应的中断处理程序终端中断处理程序打印机中断处理程序磁盘中断处理程序恢复被中断进程的CPU现场返回被中断的进程,继续执行中断请求信号图7-21 中断处理流程 驱动程序过程驱动程序过程(续续2)第七章 设备管理7.5.3 中断处理程序的处理过程中断处理程序的处理过程1.唤醒被阻塞的驱动程序进程唤醒被阻塞的驱动程序进程2.保护被中断进程的保护被中断进程的CPU现场现场3.分析中断原因、转入相应的设备中断处理程序分析中断原因、转入相应的设备中断处理程序4.进行中断处理进行中断处理5.恢复被中断进程的现场恢复被中断进程的现场