电信学院计算机系第七章设备管理I/O系统的组成I/O控制方式缓冲管理设备分配设备处理电信学院计算机系7.1I/O系统的组成7.1.1I/O系统的结构7.1.2I/O设备7.1.3设备控制器7.1.4I/O通道电信学院计算机系7.1.1I/O系统的结构•微型机I/O系统–多采用总线结构–CPU和内存直接连到总线上,I/O设备通过设备控制器连到总线上–设备控制器是处理器和设备之间的接口CPU存储器磁盘控制器打印机控制器…其它控制器磁盘驱动器打印机系统总线电信学院计算机系7.1.1I/O系统的结构•主机I/O系统–利用I/O通道形成四级结构:主机、通道、控制器和设备–通道代替CPU与设备控制器通信及对其控制计算机I/O通道控制器设备I/O通道控制器设备控制器控制器电信学院计算机系7.1.2I/O设备•设备类型–按传输速率分•低速设备:鼠标、键盘、显示器•高速设备:硬盘•中速设备:打印机电信学院计算机系7.1.2I/O设备•设备类型–按信息交换的单位分•块设备:以数据块为单位存取数据,如硬盘——速度快、可寻址、DMA方式•字符设备:以字符为单位存取数据,——速度慢、不可寻址、中断驱动电信学院计算机系7.1.2I/O设备•设备类型–按设备共享属性分•独占设备:临界资源•共享设备:可寻址、可随机访问•虚拟设备电信学院计算机系7.1.2I/O设备•设备类型–按交互对象分•人机交互:视频显示设备、键盘、鼠标、打印机•与其他电子设备交互:磁盘、磁带、传感器、控制器•计算机间交互:网卡、调制解调器电信学院计算机系7.1.2I/O设备•设备与控制器之间的接口–在设备与控制器之间有接口,其中有三种类型的信号:•数据信号•控制信号•状态信号缓冲转换器控制逻辑信号数据数据信号线状态信号线控制信号线至设备控制器I/O设备电信学院计算机系7.1.3设备控制器•设备控制器的功能–接收和识别命令:控制寄存器–数据交换:数据寄存器–设备状态的了解和报告:状态寄存器–地址识别:地址译码器–数据缓冲–差错控制电信学院计算机系7.1.3设备控制器•设备控制器的组成–设备控制器与处理机的接口–设备控制器与设备的接口–I/O逻辑数据寄存器控制/状态寄存器数据线I/O逻辑…控制器与设备接口1控制器与设备接口i数据状态控制数据状态控制…地址线控制线CPU与控制器接口控制器与设备接口电信学院计算机系7.1.4I/O通道•通道设备的引入–I/O通道是一种特殊的处理机,能执行I/O指令,跳过执行通道I/O程序控制I/O操作•指令单一,只执行I/O指令•需与CPU共享内存电信学院计算机系7.1.4I/O通道•通道类型–字节多路通道(ByteMultiplexorChannel)•含有非分配型子通道,每个子通道连接一台设备•子通道按时间片共享主通道,每次一字节•适用连接低速且速度相近的设备控制器A控制器B控制器C控制器D控制器N…A1A2A3…子通道AB1B2B3…子通道BC1C2C3…子通道CN1N2N3…子通道NA1B1C1…A2B2C2…设备电信学院计算机系7.1.4I/O通道•通道类型–数组选择通道(BlockSelectorChannel)•只有一个分配型子通道,按数组方式传送数据•可连接高速设备,通道利用率低–数组多路通道(BlockMultiplexorChannel)•有多个非分配型子通道,按数组方式传送数据•数据传输速率和通道利用率都较满意电信学院计算机系7.1.4I/O通道•“瓶颈”问题–通道数量成为限制系统吞吐量的“瓶颈”–解决办法:增加设备到主机间的通路电信学院计算机系7.1.4I/O通道•“瓶颈”问题–单通路I/O系统设备1设备2设备3设备4设备5设备6设备7控制器1控制器2控制器3控制器4通道1通道2存储器电信学院计算机系7.1.4I/O通道•“瓶颈”问题–多通路I/O系统I/O设备控制器1控制器2通道1通道2存储器I/O设备I/O设备I/O设备电信学院计算机系7.2I/O控制方式I/O控制的发展宗旨:减少主机对I/O控制的干预7.2.1程序I/O方式7.2.2中断驱动I/O控制方式7.2.3DMA控制方式7.2.4I/O通道控制方式电信学院计算机系7.2.1程序I/O方式–在程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费–在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构,使I/O设备无法向CPU报告它已完成了一个字符的输入操作。电信学院计算机系I/O控制方式向I/O控制器发读命令读I/O控制器的状态检查?状态从I/O控制器中读入字向存储器中写字传送?完成未就绪就绪出错CPU→I/OI/O→CPUI/O→CPUCPU→内存下条指令完成未完向I/O控制器发读命令读I/O控制器的状态检查?状态从I/O控制器中读字向内存中写字传送?完成就绪出错CPU→I/OI/O→CPUI/O→CPUCPU→内存下条指令完成未完中断CPU做其它事向I/O控制器发布读块命令CPU→DMACPU做其它事读DMA控制器的状态中断DMA→CPU下条指令(a)程序I/O方式(b)中断驱动方式(c)DMA方式电信学院计算机系7.2.2中断驱动I/O方式–在I/O设备输入每个数据的过程中,由于无须CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。可见,这样可使CPU和I/O设备都处于忙碌状态,从而提高了整个系统的资源利用率及吞吐量。电信学院计算机系I/O控制方式向I/O控制器发读命令读I/O控制器的状态检查?状态从I/O控制器中读入字向存储器中写字传送?完成未就绪就绪出错CPU→I/OI/O→CPUI/O→CPUCPU→内存下条指令完成未完向I/O控制器发读命令读I/O控制器的状态检查?状态从I/O控制器中读字向内存中写字传送?完成就绪出错CPU→I/OI/O→CPUI/O→CPUCPU→内存下条指令完成未完中断CPU做其它事向I/O控制器发布读块命令CPU→DMACPU做其它事读DMA控制器的状态中断DMA→CPU下条指令(a)程序I/O方式(b)中断驱动方式(c)DMA方式电信学院计算机系7.2.3DMA方式•DMA控制方式的引入–数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块–所传送的数据是从设备直接送入内存的,或者相反–仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的电信学院计算机系7.2.3DMA方式•DMA控制器的组成–主机和DMA控制器接口–DMA控制器与块设备接口–I/O控制逻辑电信学院计算机系7.2.3DMA方式•DMA控制器的组成–DMA控制器中需要四类寄存器•命令/状态寄存器CR•内存地址寄存器MAR•数据寄存器DR•数据计数器DCDRMARDCCRI/O控制逻辑…主机—控制器接口控制器与块设备接口count内存CPU命令系统总线DMA控制器电信学院计算机系7.2.3DMA方式•DMA工作过程设置AR和DC初值启动DMA传送命令挪用存储器周期传送数据字存储器地址增1字计数寄存器减1DC=0?请求中断在继续执行用户程序的同时,准备又一次传送否是电信学院计算机系7.2.4I/O通道控制方式•I/O通道控制方式的引入–I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。电信学院计算机系7.2.4I/O通道控制方式•通道程序–通道程序由若干通道指令构成,通道指令中包含如下信息:•操作码•内存地址•计数•通道程序结束位P•记录结束标志R电信学院计算机系7.2.4I/O通道控制方式•通道程序操作PR计数内存地址WRITE0080813WRITE001401034WRITE01605830WRITE013002000WRITE002501850WRITE11250720电信学院计算机系7.3缓冲管理7.3.1缓冲的引入7.3.2单缓冲7.3.3双缓冲7.3.4循环缓冲7.3.5缓冲池电信学院计算机系7.3.1缓冲的引入•引入缓冲的原因–缓和CPU与I/O设备间速度不匹配的矛盾–减少对CPU的中断频率,放宽对CPU中断响应时间的限制–提高CPU和I/O设备之间的并行性电信学院计算机系7.3.2单缓冲•形式–一个缓冲区,CPU和外设轮流使用,一方处理完之后接着等待对方处理工作区处理(C)缓冲区传送(M)输入(T)I/O设备(a)T1M1C1T2M2C2T3M3C3T4t(b)用户进程电信学院计算机系7.3.3双缓冲•形式–两个缓冲区,CPU和外设都可以连续处理而无需等待对方工作区用户进程缓冲区1缓冲区2I/O设备T1(缓冲1)M1C1M2C2M3C3T2(缓冲2)T3(缓冲3)M4C4T4(缓冲4)(a)(b)电信学院计算机系7.3.4循环缓冲•循环缓冲的组成–多个缓冲区•空缓冲区R•已满数据缓冲区G•工作缓冲区C–多个指针•Nextg:计算进程的下一可用缓冲区G•Nexti:输入进程的下一可用缓冲区G•Current:计算进程正使用的缓冲区单元电信学院计算机系7.3.4循环缓冲•循环缓冲的使用–Getbuf过程•计算进程:使用nextg所指缓冲区,current指向该缓冲区1单元,nextg指向下一G缓冲区•输入进程:使用nexti所指缓冲区,nexti指向下一C缓冲区–Releasebuf过程•计算进程:释放缓冲区C改成G•输入进程:释放缓冲区,改成G电信学院计算机系7.3.4循环缓冲•进程同步–Nexti赶上nextg:•阻塞输入进程–Nextg赶上nexti:•阻塞计算进程电信学院计算机系7.3.5缓冲池•缓冲池的组成–公共缓冲区可被多个进程共享,可输入也可输出,至少具有三类缓冲区,将同类缓冲区形成队列:•空闲缓冲区队列emq•已满输入数据缓冲区队列inq•已满输出数据缓冲区队列outq电信学院计算机系7.3.5缓冲池•缓冲池的组成–四个工作缓冲区•收容输入数据的工作缓冲区•提取输入数据的工作缓冲区•收容输出数据的工作缓冲区•提取输出数据的工作缓冲区电信学院计算机系7.3.5缓冲池•Getbuf和Putbuf–互斥信号量ms,资源信号量rsProcedureGetbuf(type)beginWait(RS(type));Wait(MS(type));B(number)∶=Takebuf(type);Signal(MS(type));endProcedurePutbuf(type,number)beginWait(MS(type));Addbuf(type,number);Signal(MS(type));Signal(RS(type));end电信学院计算机系7.3.5缓冲池•缓冲区的工作方式–收容输入–提取输入–收容输出–提取输出hinsoutsinhout收容输入提取输出用户程序提取输入收容输出缓冲池电信学院计算机系7.4设备分配7.4.1设备分配中的数据结构7.4.2设备分配时应考虑的若干因素7.4.3设备独立性7.4.4独占设备的分配程序7.4.5SPOOLing技术电信学院计算机系7.4.1设备分配中的数据结构•设备控制表DCT–系统为每个设备配置一张DCT,其中包含如下字段:•设备类型type•设备标识符deviceid•设备队列队首指针•设备状态•与设备连接的控制器表指针•重复执行次数设备类型type设备标识符:deviceid设备状态:等待/不等待忙/闲指向控制器表的指针重复执行次数或时间设备队列的队首指针DCT1DCT2DCTn设备控制表集合电信学院计算机系7.4.1设备分配中的数据结构•控制器控制表COCT–系统为每个控制器配