第六章设备管理●I/O接口●磁盘管理●I/O控制方式●缓冲管理●系统总线6.1系统总线6.1.1总线基本概念和分类1.没有总线的计算机系统两两部件独立相连,相互通信时双方必须停止其他工作,降低了部件的工作效率;随着计算机部件的增多,内部连线非常复杂,不利于系统设备的扩展。2.总线概念总线是计算机中各个通信模块共享的,用来在这些部件之间传送信息的一组导线和相关的控制和接口部件。6.1.2总线分类CPU内部总线:寄存器之间,寄存器与ALU之间。系统总线:CPU与主存或I/O设备之间的信息传送线,又称为外总线。通信总线:计算机系统之间或计算机系统与外部设备之间的信息传送线。6.1.3系统总线的组成1.地址总线传送主存单元地址或者I/O设备的端口地址。2.数据总线完成总线上各功能部件之间的数据传送。3.控制总线传送定时信号和命令信息,以实现对设备的控制和监视。4.系统总线由多个部件或设备共享,但任何时刻都只能由一个设备向总线发送信息,所以对总线的使用需要协调。6.1.4系统总线的结构1.单总线结构任何两个部件之间可以直接进行信息交流,提高了计算机的灵活性和工作效率,但由于总线是临界资源,单总线会增加总线负载,影响操作速度。CPU主存I/O接口I/O接口外设1外设n系统总线2.双总线结构CPU和主存之间的数据交换通过专用总线进行,减轻了系统总线的负担。CPU主存I/O接口I/O接口外设1外设n系统总线存储总线3.三总线结构CPU主存I/O接口I/O接口外设1外设n通道系统总线存储总线I/O总线通道又称为I/O处理机,统一管理外部设备,实现主存与外设之间的数据传输,分担了CPU的部分功能。6.1.5总线的数据传输方式串行传输:每次传送一位,只需一根数据线。适用于慢速设备,如键盘、鼠标等。并行传输:每位数据需要一根数据线,多位数据一起传输。注意:总线和设备接口之间总是以并行方式传送数据,但设备和接口之间可能以并行方式,也可能以串行方式。6.2I/O接口1.I/O接口计算机与I/O设备或其他系统之间的逻辑控制部件。接口控制器I/O标准接口设备控制器I/O设备外围设备与主机的连接设备地址线控制、状态线数据线CPU2.I/O接口的基本功能实现主机与外围设备间的通信和控制;设备的选择,操作时序的协调,中断请求与批准实现数据缓冲,使主机与外设的工作速度匹配;在设备控制器中设置一个或多个数据缓冲寄存器接收主机的命令,提供设备和接口的状态。在设备控制器中设置控制/状态寄存器6.3I/O设备管理概述I/O管理的功能监视设备的状态进行设备分配完成I/O操作缓冲管理总线型I/O系统结构图形控制器桥/内存控制器SCSI磁盘控制器扩展总线接口…其它控制器打印机磁盘PCI总线监视器处理器高速缓存内存磁盘IDE磁盘控制器磁盘磁盘扩展总线并行端口串行端口键盘6.3.1I/O设备类型块设备:磁盘、磁带,块大小512B~32KB,通常为512B。块设备的特点是速度快、可随机访问。字符设备:键盘、行式打印机。特点是速度低、不可寻址、I/O采用中断驱动。设备间的差异数据率管理程序控制的复杂度数据的传送单位数据编码出错条件6.3.2设备控制器设备控制器或适配器是I/O设备的电子部分,它是CPU与I/O设备之间的接口,它接收从CPU发来的命令,并控制I/O设备工作。通常一台控制器可控制多台同一类型的设备。设备控制器的组成数据寄存器控制/状态寄存器I/O逻辑控制器与设备接口1控制器与设备接口2数据线地址线控制线CPU与控制器接口……数据状态控制数据状态控制控制器与设备接口设备控制器的主要任务1)接收和识别命令2)数据交换3)了解设备的状态4)地址识别6.3.3设备通道虽然设备控制器可以对设备进行控制,但当外设很多时,CPU负担过重,为此在CPU与控制器之间增加设备通道,实现对所有外设的统一管理。设备通道是特殊的处理机指令单一没有内存通道的连接方式计算机I/O通道1I/O通道2控制器控制器控制器控制器设备计算机I/O通道1I/O通道2设备设备设备设备控制器1控制器2.........单通路多通路–设备与计算机之间有多条通道,增加灵活性。–增强可靠性。某通道、控制器坏,也不会影响数据交换。6.4I/O控制方式●发展经历了四个阶段程序直接控制方式中断驱动方式DMA控制方式通道方式●宗旨:尽量减少主机对I/O控制的干预。衡量数据传送控制方式原则数据传送速度高系统开销小充分发挥硬件资源的能力,I/O设备忙,CPU等待时间少6.4.1程序直接控制方式由用户进程直接控制CPU与外设之间的信息传送。发指令启动外设设备的标志位=0等待进行数据传送CPU是否接到启动命令准备完毕标志位置0等待CPU的下条指令外设是否做数据传送准备(a)(b)程序直接控制方式的缺点:CPU与外设只能串行工作。CPU在一段时间内只能与一台外设交换数据信息。无法发现和处理由于设备和其它硬件所产生的错误。6.4.2中断驱动方式为了减少程序直接控制方式中CPU的等待时间,提高系统并行工作的程度。要求CPU与设备控制器间有相应的中断请求线。发指令启动外设将中断位置1收到中断信号吗?中断处理被中断进程继续执行CPU是否接到启动命令数据寄存器满吗?控制器发中断信号外设是否将数据送到数据寄存器(a)(b)进程调度程序调度其它进程其它进程执行中断驱动方式的缺点:由于数据寄存器只能存放一个字节,造成中断次数过多。中断次数的急剧增加会造成CPU无法及时响应中断,出现数据丢失现象。6.4.3DMA控制方式中断方式比程序I/O方式有效,但它是以字节为单位进行的,且CPU对I/O的干预频繁。1.DMA方式的特点数据传输的基本单位是数据块;所传送的数据是直接在设备和内存之间进行;仅在传送一个或多个数据块的开始或结束时,才需CPU干预。DMA控制器的组成增加两类寄存器:内存地址寄存器MAR数据计数器DCCPU控制器控制/状态寄存器内存地址寄存器忙/闲位中断位开始中断数据线信号线数据寄存器数据计数器内存CountDMA工作过程存储器地址增1数据计数器减1挪用存储器周期传送数据字开始设置MAR和DC的初值启动DMA传送命令DC=0?是在继续执行用户程序的同时,准备又一次传送请求中断否●当CPU需要从磁盘读数据时,便向磁盘控制器DMA发命令●该命令送命令寄存器CR●将内存地址送内存地址寄存器MAR●本次要读的字节数送数据寄存器DC●启动DMA后,CPU干其他的事情,数据传送在DMA的控制下完成。6.4.4通道方式DMA方式中cpu以数据块为单位干预I/O操作,但进程需要连续操作几个不连续的数据块时,CPU仍需多次干预。1.通道方式特点每条CPU发出的I/O指令可以实现对一组数据块的干预;实现CPU、通道和设备的并行工作,提高资源利用率。2.通道方式处理过程通道方式通过通道处理程序,与设备控制器共同实现对I/O设备的控制。其步骤如下:1)CPU发出指令;2)通道取出内存中的通道处理程序执行;3)设备根据通道指令的要求,执行相应操作;4)通道程序执行结束,向CPU发出中断请求;5)CPU进行中断处理。6.5I/O系统用户进程进行I/O操作的步骤用户进程调用操作系统提供的系统调用命令;操作系统负责给用户进程分配设备、启动相关设备进行I/O操作;在I/O操作完成时,用户进程产生中断;系统响应中断,并进行相应的中断处理。6.5.1I/O层次结构SCSI设备驱动程序键盘设备驱动程序鼠标设备驱动程序软盘设备驱动程序PCI设备驱动程序……SCSI设备控制器键盘设备控制器鼠标设备控制器软盘设备控制器PCI设备控制器……SCSI设备键盘设备鼠标设备软盘设备PCI设备……I/O接口用户态核心态驱动程序缓冲高速缓存SPOOLing错误处理……I/O管理软件设备分配6.5.1I/O层次结构I/O接口:系统调用,例如C语言中的库函数printf,scanf;I/O管理软件:实现所有设备共享的I/O功能,为用户提供统一接口;设备驱动程序:接收I/O管理软件的抽象请求,进行与设备相关的具体设备操作,控制设备的打开,关闭,读,写等操作,控制数据在设备上的传输;中断处理程序:当输入就绪、输出完成或设备出错时,设备控制器向CPU发中断信号,CPU进行相应中断处理6.5.2设备分配由于外设资源的有限,需解决进程间的外设共享问题,以提高外设资源的利用率。设备分配是对进程使用外设过程的管理。这里有两种作法:1)在进程间切换使用外设,如键盘和鼠标;2)通过一个虚拟设备把外设与应用进程隔开,只由虚拟设备来使用设备。一、设备分配时应考虑的问题设备分配的综合原则是合理使用外设(公平和避免死锁),提高设备使用率。1.设备的固有属性独享设备:打印机等。进程使用完自己释放,一般不能剥夺;共享设备:磁盘、网卡等。多个进程并发使用,需合理调度;虚拟设备:虚拟打印机等。可有多个进程使用,但FCFS。2.设备分配算法静态分配:在进程创建时分配,在进程退出时释放;不会出现死锁;设备利用率不高;动态分配:在进程执行过程中根据需要分配,使用结束后释放,算法与进程调度类似,有FCFS和基于优先级;需要考虑死锁问题有利于提高设备利用率3.设备分配中的安全性(避免死锁)安全分配方式进程发出I/O请求后阻塞,完成后唤醒,即进程在I/O时不能在申请其他设备资源,摈弃了“请求保持”条件。优点:不会出现死锁;缺点:进程进展慢。不安全分配方式进程发出I/O请求后仍继续运行,又可发出I/O请求,仅当进程所请求的设备已被另一进程占用时,进程才进入阻塞状态。优点:多个设备并行操作;缺点:可能造成死锁。4.设备独立性(设备无关性)设备独立性是指用户程序独立于具体使用的物理设备,可以提高操作系统的可适应性和可扩展性。用户程序使用逻辑设备名请求使用某类设备。操作系统在分配设备时使用的是物理设备名。操作系统可以将逻辑设备名转换成物理设备名。设备独立性增强了设备分配的灵活性,易于实现I/O重定向。设备独立性的实现——逻辑设备表(LogicalUnitTable,LUT)………逻辑设备名物理设备名驱动程序入口地址/dev/print32056/dev/tty51034当进程使用逻辑设备名请求I/O设备时,系统为他分配相应的物理设备,并在LUT中建立对相应表项,以便以后使用。LUT的设置:整个系统一张(单用户系统)一个用户一张(多用户系统)二、设备分配中的数据结构1.系统设备表(SDT,SystemDeviceTable)整个系统内只有一张,反映系统中设备资源的状态,记录所有设备的状态及其设备控制表的入口。SDT表项的主要组成:DCT指针:指向相应设备的DCT;设备标识;设备类型:块设备,字符设备或终端设备;正在使用该设备的进程号。2.设备控制表(DCT,DeviceControlTable)每个设备一张,描述设备特性和状态。反映设备的特性、设备和控制器的连接情况。DCT的内容主要包括:设备标识:用来区别不同的设备;设备类型COCT指针:指向与该设备相连的控制器控制表;设备状态:工作或空闲状态;设备等待队列首指针和尾指针;3.控制器控制表(COCT,COntrollerControlTable)每个设备控制器一张,描述I/O控制器的配置和状态。表项组成:控制器标识符控制器忙/闲状态与控制器连接的通道表指针(CHCT指针)控制器队列的队首指针控制器队列的队尾指针4.通道控制表(CHCT,CHannelControlTable)每个通道一张,描述通道工作状态。通道标识符通道忙/闲状态通道队列的队首指针通道队列的队尾指针三、设备分配步骤在进程有I/O请求时,系统根据具体的设备分配算法,按以下步骤分配设备:1)分配设备逻辑设备名—查找LUT,确定物理设备名—查找SDT,找到该设备的设备控制表(DCT)—根据DCT中的忙/闲标志位判断设备是否忙—