1、操作系统西安电子科技大学计算机学院第第7章章 设备管理设备管理第7章 外部设备管理7.1 引言引言7.2 缓冲技术缓冲技术7.3 设备分配设备分配7.4 设备控制设备控制7.5 磁盘设备管理磁盘设备管理7.6 设备管理举例设备管理举例外设的外设的特点:特点:种类种类多多差异差异大大( (控制和速度控制和速度) )外设外设管理目的管理目的包括:包括:外设资源的外设资源的控制控制外设资源的外设资源的共享共享提高外设资源的提高外设资源的利用率。利用率。7.1 引言引言7.1.1 7.1.1 外部设备类型和特征外部设备类型和特征7.1.2 I/O7.1.2 I/O控制技术控制技术7.1.3 7.1.3
2、 外设管理的目的和功能外设管理的目的和功能7.1.4 7.1.4 外设管理结构外设管理结构返回7.1.1 7.1.1 外部设备类型和特征外部设备类型和特征人机交互设备人机交互设备:视频显示设备、键盘、鼠标、:视频显示设备、键盘、鼠标、打印机打印机与计算机或其他与计算机或其他电子设备交互电子设备交互的设备:磁盘、的设备:磁盘、磁带、传感器、控制器磁带、传感器、控制器计算机间的计算机间的通信设备通信设备:网卡、调制解调器:网卡、调制解调器返回1. 按交互对象分类按交互对象分类2. 2. 按交互方向分类按交互方向分类输入输入(可读):键盘、扫描仪(可读):键盘、扫描仪输出输出(可写):显示设备、打印
3、机(可写):显示设备、打印机输入输入/ /输出输出(可读写):磁盘、网卡(可读写):磁盘、网卡3. 3. 按外设特性分类按外设特性分类使用特征使用特征:存储、输入:存储、输入/ /输出、终端输出、终端数据传输率数据传输率:低速:低速( (如键盘如键盘) )、中速、中速( (如打印机如打印机) )、高、高速速( (如网卡、磁盘如网卡、磁盘) )信息组织特征信息组织特征:字符设备字符设备( (如打印机如打印机) )、块设备、块设备( (如磁盘如磁盘) )7.1.1 外部设备类型和特征4 4按设备的共享属性分类按设备的共享属性分类 (1)(1)独占设备独占设备。它是指在一段时间内只允许一个用。它是指
4、在一段时间内只允许一个用户户( (进程进程) )访问的设备,即临界资源。因而,对多访问的设备,即临界资源。因而,对多个并发进程而言,应互斥地访问这类设备。系统个并发进程而言,应互斥地访问这类设备。系统一旦把这类设备分配给某后,便由该进程独占,一旦把这类设备分配给某后,便由该进程独占,直至用完释放。应当注意,独占设备的分配有可直至用完释放。应当注意,独占设备的分配有可能引起进程死能引起进程死7.1.1 外部设备类型和特征(2)(2)共享设备共享设备。它是指在一段时间内允许多个进程。它是指在一段时间内允许多个进程同时访问的设备。当然,时刻而言,该类设备仍同时访问的设备。当然,时刻而言,该类设备仍然
5、只允许一个进程访问。显然,共享设备必须是然只允许一个进程访问。显然,共享设备必须是可寻址的相可随访问的设备。可寻址的相可随访问的设备。 典型的共享设备是磁盘典型的共享设备是磁盘。 (3)(3)虚拟设备虚拟设备。它是指通过虚拟技术将一台独占设。它是指通过虚拟技术将一台独占设备变换为若干台逻辑设备,供若干个用户备变换为若干台逻辑设备,供若干个用户( (进程进程) )同时使用,通常把这种经过虚拟技术处理后的设同时使用,通常把这种经过虚拟技术处理后的设备,称为虚拟设备。备,称为虚拟设备。 7.1.2 I/O控制技术返回1. 1. 程序控制程序控制I/O(programmed I/O)I/O(progr
6、ammed I/O)I/OI/O操作由程序发起,并等待操作完成。数据的每次读写操作由程序发起,并等待操作完成。数据的每次读写通过通过CPUCPU。缺点缺点:在外设进行数据处理时,:在外设进行数据处理时,CPUCPU只能等待。只能等待。2. 2. 中断驱动方式中断驱动方式(interrupt-driven I/O)(interrupt-driven I/O)I/OI/O操作由程序发起,在操作完成时(如数据可读或已经写操作由程序发起,在操作完成时(如数据可读或已经写入)由外设向入)由外设向CPUCPU发出中断,通知该程序。数据的每次读写发出中断,通知该程序。数据的每次读写通过通过CPUCPU。优点
7、优点:在外设进行数据处理时,:在外设进行数据处理时,CPUCPU不必等待,可以继续执不必等待,可以继续执行该程序或其他程序。行该程序或其他程序。缺点缺点:CPUCPU每次处理的数据量少(通常不超过几个字节),每次处理的数据量少(通常不超过几个字节),只适于数据传输率较低的设备。只适于数据传输率较低的设备。3. 3. 直接存储访问方式直接存储访问方式(DMA)(DMA)由程序由程序设置设置DMADMA控制器中的若干寄存器值(如内存始址,控制器中的若干寄存器值(如内存始址,传送字节数),然后传送字节数),然后发起发起I/OI/O操作,而后者操作,而后者完成完成内存与外内存与外设的成批数据交换,在操
8、作完成时由设的成批数据交换,在操作完成时由DMADMA控制器向控制器向CPUCPU发出发出中断中断。优点优点:CPUCPU只需干预只需干预I/OI/O操作的开始和结束,而其中的一批操作的开始和结束,而其中的一批数据读写无需数据读写无需CPUCPU控制,适于高速设备。控制,适于高速设备。System BusI/OControllerI/OControllerProcessorDMAControllerMemory.4. 4. 通道控制方式通道控制方式( Channel I/O)( Channel I/O)通道又称为通道又称为I/OI/O处理机处理机,它能完威主存储器和外设,它能完威主存储器和外设
9、之间的信息传输,并与中央处理机并行操作。采用之间的信息传输,并与中央处理机并行操作。采用通道技术解决了通道技术解决了I/0I/0操作的独立性和各部件工作的并操作的独立性和各部件工作的并行性。通道把中央处理机从繁琐的输入输出操作中行性。通道把中央处理机从繁琐的输入输出操作中解放出来。解放出来。 采用通道技术后,不仅能实现采用通道技术后,不仅能实现CPUCPU和通道的并行和通道的并行操作,而且通道与通道之间也能实现并行操作,各操作,而且通道与通道之间也能实现并行操作,各通道上的外围设备也能实现并行操作,从从而可达通道上的外围设备也能实现并行操作,从从而可达到提高势个系统的效率之根本目的:到提高势个
10、系统的效率之根本目的:7.1.2 I/O控制技术通道控制器通道控制器(Channel Processor)(Channel Processor)有自己的专用存有自己的专用存储器,可以执行由储器,可以执行由通道指令通道指令组成的通道程序,因组成的通道程序,因此可以进行此可以进行较为复杂的较为复杂的I/OI/O控制控制,如网卡上信道,如网卡上信道访问控制。通道程序通常由操作系统所构造,放访问控制。通道程序通常由操作系统所构造,放在内存里。在内存里。优点:优点:执行一个通道程序可以完成几批执行一个通道程序可以完成几批I/OI/O操作。操作。7.1.2 I/O控制技术具有通道结构具有通道结构的计算机系
11、的计算机系统,主存、统,主存、通道、控制通道、控制器和设备之器和设备之间采用四级间采用四级连接,实施连接,实施三级控制。三级控制。图为单通路图为单通路I/OI/O系统结系统结构构主存通道通道控制器控制器控制器控制器设备A设备B设备C设备D设备E设备F设备G设备H7.1.2 I/O控制技术字节多路通道字节多路通道:它是为连接大量慢速外围设备,如纸:它是为连接大量慢速外围设备,如纸带输入机、纸带输出机、卡片输入机、卡片输入机带输入机、纸带输出机、卡片输入机、卡片输入机、行式打印机等设置的。、行式打印机等设置的。选择通道选择通道(selector channel)(selector channel)
12、:可以连接多个外设,:可以连接多个外设,而一次只能访问其中一个外设。而一次只能访问其中一个外设。多路通道多路通道(multiplexor channel)(multiplexor channel):可以并发访问多个:可以并发访问多个外设。分为字节多路外设。分为字节多路(byte)(byte)和数组多路和数组多路(block)(block)通通道。道。System BusProcessorI/O BusI/OControllerI/OControllerI/OControllerI/OControllerMemoryChannelProcessor I/O控制的通道控制方式控制的通道控制方式 7
13、.1.2 I/O控制技术控制技术7.1.2 I/O控制技术主存通道A通道B控制器C控制器D设备E设备F设备G设备H多通路的配置方案多通路的配置方案7.1.2 I/O7.1.2 I/O控制技术控制技术如上图可见,设备如上图可见,设备E,F,G,HE,F,G,H均有四条通路到达主存均有四条通路到达主存。例如设备。例如设备E E到达主存的四条通路是:到达主存的四条通路是:通道通道AA控制器控制器CC设备设备E E通道通道AA控制器控制器DD设备设备E E通道通道BB控制器控制器CC设备设备E E通道通道BB控制器控制器DD设备设备E E7.1.3 外设管理的目的和功能提高效率提高效率:提高:提高I/
14、OI/O访问效率,匹配访问效率,匹配CPUCPU和多种和多种不同处理速度的外设不同处理速度的外设方便使用方便使用:方便用户使用,对不同类型的设备:方便用户使用,对不同类型的设备统一使用方法,协调对设备的并发使用统一使用方法,协调对设备的并发使用方便控制方便控制:方便:方便OSOS内部对设备的控制:增加和内部对设备的控制:增加和删除设备,适应新的设备类型删除设备,适应新的设备类型返回1. 1. 外设管理目的外设管理目的2. 2. 外设管理功能外设管理功能(1 1)动态地掌握并记录设备的状态。在设置有通道的系统中)动态地掌握并记录设备的状态。在设置有通道的系统中,还应掌握通道、控制器的使用状态。,
15、还应掌握通道、控制器的使用状态。(2 2)设备分配和释放:使用设备前,需要分配设备和相应的)设备分配和释放:使用设备前,需要分配设备和相应的通道、控制器。通道、控制器。(3 3)完成实际的)完成实际的I/OI/O操作。操作。 首先,设备管理程序根据用户提出的首先,设备管理程序根据用户提出的I/OI/O请求构成相应的请求构成相应的通道程序通道程序( (或称或称I/OI/O程序程序) ),提供给通道执行;,提供给通道执行; 其次,启动指定的设备进行其次,启动指定的设备进行I/OI/O操作;最后,对通道发来操作;最后,对通道发来的中断请求作出及时的响应和处理。的中断请求作出及时的响应和处理。7.1.
16、3 外设管理的目的和功能外设管理的目的和功能7.1.3 外设管理的目的和功能4.4.提供设备使用的用户接口提供设备使用的用户接口:命令接口和编程接口:命令接口和编程接口5.5.设备分配和释放设备分配和释放:使用设备前,需要分配设备和:使用设备前,需要分配设备和相应的通道、控制器。相应的通道、控制器。6.6.设备的访问和控制设备的访问和控制:包括并发访问和差错处理。:包括并发访问和差错处理。7.I/O7.I/O缓冲和调度缓冲和调度:目标是提高:目标是提高I/OI/O访问效率访问效率7.1.3 外设管理的目的和功能设备管理软件设备管理软件,为实现上述基本功能通常由以下程序,为实现上述基本功能通常由
17、以下程序组成:组成: I/O I/O交通管制程序;交通管制程序; I/O I/O调度程序;即设备分配程序;调度程序;即设备分配程序; I/O I/O设备处理程序;通常每类设备都有自己的设备处理程序;通常每类设备都有自己的I IO O设备处理程序。设备处理程序。 7.2 I/O7.2 I/O缓冲技术缓冲技术 缓冲技术可提高外设利用率,尽可能使外设处于忙状缓冲技术可提高外设利用率,尽可能使外设处于忙状态;但有一个限制:进程的态;但有一个限制:进程的I/OI/O请求不能超过外设的处理请求不能超过外设的处理能力。能力。 引入缓冲的主要原因有以下几个方面:引入缓冲的主要原因有以下几个方面:(1)(1)缓
18、和缓和CPUCPU与与I/OI/O设备间速度不匹配的矛盾设备间速度不匹配的矛盾(2)(2)减少对减少对CPUCPU的中断频率,放宽对中断响应时间的限制的中断频率,放宽对中断响应时间的限制(3)(3)提高提高CPUCPU和和I/OI/O设备之间的并行性设备之间的并行性1.1.单缓冲单缓冲(single buffer)(single buffer):一个缓冲区,:一个缓冲区,CPUCPU和外设和外设轮流使用,一方处理完之后接着等待对方处理。轮流使用,一方处理完之后接着等待对方处理。环形缓冲环形缓冲(circular buffer)(circular buffer):多个缓冲区,:多个缓冲区,CPU
19、CPU和外和外设的处理速度可以相差较大。设的处理速度可以相差较大。7.2 I/O缓冲技术缓冲技术缓冲区用户区输入T传送MI/O设备操作系统用户进程 计算C图710 单缓冲工作示意图7.2 I/O缓冲技术缓冲技术2.2.双缓冲双缓冲(double buffer)(double buffer):两个缓冲区,:两个缓冲区,CPUCPU和外设都可和外设都可以连续处理而无需等待对方。以连续处理而无需等待对方。 要求要求CPUCPU和外设的速度相近。和外设的速度相近。缓冲区A用户区缓冲区B输入T传送MI/O设备操作系统用户进程计算C图7.11 双缓冲工作过程示意图7.2 I/O缓冲技术3 3环形缓冲的组成
20、环形缓冲的组成(1)(1)多个缓冲区多个缓冲区 在循环缓冲中含有多个缓冲区,每个缓冲区的大在循环缓冲中含有多个缓冲区,每个缓冲区的大小相同。缓冲区可分成三种类型:小相同。缓冲区可分成三种类型: 空缓冲区空缓冲区R R。用于存放输入数据;。用于存放输入数据; 已装满数据的缓冲区已装满数据的缓冲区G G。其中的数据提供给计。其中的数据提供给计算进程使用算进程使用; ; 现行工作缓冲区现行工作缓冲区C C。这是计算进程正在使用的缓。这是计算进程正在使用的缓冲区。冲区。循环缓冲的组成如下图所示。循环缓冲的组成如下图所示。7.2 I/O缓冲技术RRGGGG213456NextiNextgRRGGGG21
21、3456NextiCurrentNextg循环缓冲循环缓冲 空缓冲区空缓冲区R R;已装满数据的缓冲区;已装满数据的缓冲区G G;现行工作缓冲区;现行工作缓冲区C C。7.2 I/O缓冲技术(2) (2) 多个指针多个指针对用于输入的多缓冲,应设置这样三个指针:对用于输入的多缓冲,应设置这样三个指针:NextgNextg:指示计算进程下一个可用的缓冲区:指示计算进程下一个可用的缓冲区G G;NextiNexti:指示输入进程下次可用的空缓冲区:指示输入进程下次可用的空缓冲区R R;CurrentCurrent:指示计算进程正在使用的缓冲区单元。:指示计算进程正在使用的缓冲区单元。开始时,它指向
22、第一个单元,随计算进程的使用开始时,它指向第一个单元,随计算进程的使用,它将逐次地指向第,它将逐次地指向第2 2个单元,第个单元,第3 3、4 4等单元,等单元,直至缓冲区的最后一个含数据的单元。直至缓冲区的最后一个含数据的单元。7.2 I/O缓冲技术2 2缓冲区的使用缓冲区的使用计算进程和输入进程可利用下述两个过程使用循环缓冲区:计算进程和输入进程可利用下述两个过程使用循环缓冲区: (1) Getbuf(1) Getbuf过程过程 每当计算进程要使用缓冲区中的数据时,可调用每当计算进程要使用缓冲区中的数据时,可调用GetbufGetbuf过程。该过程将指针过程。该过程将指针NextgNext
23、g所所指的缓冲区提供给进指的缓冲区提供给进程使用,相应地,须把它改为现行工作缓冲区,用程使用,相应地,须把它改为现行工作缓冲区,用CurrentCurrent指针指简该缓冲区的第指针指简该缓冲区的第1 1个单元,同时将个单元,同时将NextgNextg移移向下一个向下一个G G缓冲区。缓冲区。 类似地,每当输入进程要使用空缓冲来装入数据时,也可类似地,每当输入进程要使用空缓冲来装入数据时,也可调用调用GetbufGetbuf过程。由该过程将指针过程。由该过程将指针NextiNexti所指缓冲区提供所指缓冲区提供给输入进程使用,同时将给输入进程使用,同时将NextiNexti指针移向下一个指针移
24、向下一个R R缓冲区缓冲区。7.2 I/O缓冲技术 (2) Releasebuf(2) Releasebuf过程过程 当计算进程把当计算进程把G G缓冲区中的数据提取完时,缓冲区中的数据提取完时,便可调用便可调用ReleasebufReleasebuf过程,将该缓冲区释放。此过程,将该缓冲区释放。此时,把该缓冲区由当前时,把该缓冲区由当前( (现行现行) )工作缓冲区工作缓冲区C C改为改为空缓冲区空缓冲区R R。类似地,当输入进程将缓冲区装满。类似地,当输入进程将缓冲区装满时,也调用时,也调用ReleasebufReleasebuf过程,将该缓冲区释放,过程,将该缓冲区释放,并改为并改为G
25、G缓冲区。缓冲区。7.2 I/O缓冲技术3 3进程的同步进程的同步 使用输入缓冲可使输入进程和计算进程并行执使用输入缓冲可使输入进程和计算进程并行执行。相应地,指针行。相应地,指针NextiNexti和指针和指针NextgNextg将不断地沿将不断地沿顺时针方向移动,这样就可能出现两种情况:顺时针方向移动,这样就可能出现两种情况: (1) Nexti(1) Nexti指针追赶上指针追赶上NextgNextg指针指针 输入进程输入数据的速度大于计算进程处理输入进程输入数据的速度大于计算进程处理数据的速度,已把全部缓冲区数据的速度,已把全部缓冲区 ( (可用空缓冲可用空缓冲) )装装满。此时,输入
26、进程应该阻塞,直至计算进程把满。此时,输入进程应该阻塞,直至计算进程把某个缓冲区中数据全部提取完,使之成为空缓冲某个缓冲区中数据全部提取完,使之成为空缓冲R R,并调用,并调用ReleasebufReleasebuf过程将它释放时,这种情过程将它释放时,这种情况被称为系统受计算限制。况被称为系统受计算限制。7.3 7.3 设备分配设备分配7.3.1 设备分配数据结构设备分配数据结构7.3.2 设备分配原则设备分配原则7.3.3 假脱机技术假脱机技术返回 由于外设资源的有限,需解决进程间的外设共由于外设资源的有限,需解决进程间的外设共享问题,以提高外设资源的利用率。设备分配是对享问题,以提高外设
27、资源的利用率。设备分配是对进程使用外设过程的管理。这里有两种作法:进程使用外设过程的管理。这里有两种作法:1)1)在进程间在进程间切换使用切换使用外设,如键盘和鼠标;外设,如键盘和鼠标;2)2)通过一个通过一个虚拟设备虚拟设备把外设与应用进程隔开,只由把外设与应用进程隔开,只由虚拟设备来使用设备。虚拟设备来使用设备。设备控制表设备控制表(DCT,Device Control Table)(DCT,Device Control Table):每个设备一张,:每个设备一张,描述描述设备特性和状态设备特性和状态。反映设备特性、设备和控制器的连接情况。反映设备特性、设备和控制器的连接情况。 DCTDC
28、T的内容主要包括:的内容主要包括:设备标识:用来区别不同的设备;设备标识:用来区别不同的设备;设备类型:反映设备的特性;如:块设备或字符设备;设备类型:反映设备的特性;如:块设备或字符设备;设备配置:设备配置:I/OI/O地址等;地址等;设备状态:工作或空闲状态;设备状态:工作或空闲状态;等待队列:等待使用该设备的进程队列;等待队列:等待使用该设备的进程队列;返回7.3.1 7.3.1 设备分配数据结构设备分配数据结构 系统设备表系统设备表(SDT, System Device Table)(SDT, System Device Table):系统:系统内一张,反映内一张,反映系统中设备资源的
29、状态系统中设备资源的状态,记录所有设,记录所有设备的状态及其设备控制表的入口。备的状态及其设备控制表的入口。 SDTSDT表项的主要组成:表项的主要组成:DCTDCT指针指针:指向相应设备的:指向相应设备的DCTDCT;设备使用进程标识:正在使用该设备的进程标识;设备使用进程标识:正在使用该设备的进程标识;DCTDCT信息信息:为引用方便而保存的:为引用方便而保存的DCTDCT信息,如:设备信息,如:设备标识、设备类型等;标识、设备类型等;返回7.3.1 设备分配数据结构设备分配数据结构7.3.1 7.3.1 设备分配数据结构设备分配数据结构控制器控制表控制器控制表(COCT, COntrol
30、ler Control Table)(COCT, COntroller Control Table):每个设备控制器一张,描述:每个设备控制器一张,描述I/OI/O控制器的配置控制器的配置和状态和状态。如。如DMADMA控制器所占用的中断号、控制器所占用的中断号、DMADMA数据数据通道的分配。通道的分配。通道控制表通道控制表(CHCT, CHannel Control Table)(CHCT, CHannel Control Table):每个通道一张,描述通道工作状态。每个通道一张,描述通道工作状态。7.3.1 7.3.1 设备分配数据结构设备分配数据结构7.3.2 7.3.2 设备分配原
31、则设备分配原则与设备分配有关的设备属性与设备分配有关的设备属性:独享设备:打印机等;独享设备:打印机等;共享设备:磁盘、网卡等;共享设备:磁盘、网卡等;设备分配方式设备分配方式:各有优缺点:各有优缺点静态分配静态分配:在进程分创建时分配,在进程退出时:在进程分创建时分配,在进程退出时释放;释放;不会出现死锁;不会出现死锁;设备利用率不高;设备利用率不高;返回设备分配的原则是合理使用外设设备分配的原则是合理使用外设( (公平和避免死锁公平和避免死锁) ),提高设备利用率。引入提高设备利用率。引入I/OI/O调度程序,来满足调度程序,来满足I/OI/O请求,请求,决定设备的分配策略。决定设备的分配
32、策略。动态分配动态分配:在进程执行过程中根据需要分配,使用结:在进程执行过程中根据需要分配,使用结束后释放;束后释放;需要考虑死锁问题需要考虑死锁问题有利于提高设备利用率有利于提高设备利用率 动态分配策略动态分配策略:针对特定设备采用特定的分配策略:针对特定设备采用特定的分配策略先来先服务先来先服务(FCFS)(FCFS):按按I/OI/O请求的先后顺序,排成请求的先后顺序,排成I/OI/O请求命令队列;按请求命令队列;按FCFSFCFS分配设备;分配设备;基于优先级基于优先级:依据进程的优先级,指定:依据进程的优先级,指定I/OI/O请求的优请求的优先级,排成不同优先级队列;按优先级高低分配
33、设先级,排成不同优先级队列;按优先级高低分配设备;备;7.3.2 设备分配原则7.3.2 设备分配原则设备分配的安全性设备分配的安全性 为了加快进程推进的速度,使为了加快进程推进的速度,使CPUCPU和和I/OI/O设备能并行工作,设备能并行工作,应使某些进程发出应使某些进程发出I/OI/O请求之后,仍可以继续运行,需要请求之后,仍可以继续运行,需要时又可以发出第二个时又可以发出第二个I/OI/O请求、第三个请求、第三个I/OI/O请求。请求。仅当进仅当进程所请求的设备已经为另外一个进程占用时才进入阻塞状程所请求的设备已经为另外一个进程占用时才进入阻塞状态。这样就可以同时操作多个外部设备态。这
34、样就可以同时操作多个外部设备。但是,这种多请但是,这种多请求方式,会导致设备分配不安全,又可能产生死锁现象。求方式,会导致设备分配不安全,又可能产生死锁现象。因此,再多请求方式中,设备分配应该保证安全而不出现因此,再多请求方式中,设备分配应该保证安全而不出现死锁。死锁。7.3.2 设备分配原则与设备无关性与设备无关性 与设备无关性,即用户程序中所使用的设备与设备无关性,即用户程序中所使用的设备( (逻逻辑设备辑设备) )与系统配置的实际物理设备无关。与系统配置的实际物理设备无关。 7.3.3 7.3.3 设备分配程序设备分配程序 设备分配程序的主要功能设备分配程序的主要功能是:当进程向系统提出
35、是:当进程向系统提出I/OI/O请求后,设备分配程序按照一定的策略,把请求后,设备分配程序按照一定的策略,把所要求的设备分配给它。所要求的设备分配给它。I/OI/O交通管制程序交通管制程序I/OI/O调调度程序都是专门用于完成设备分配任务的程序。度程序都是专门用于完成设备分配任务的程序。I/OI/O交通管制程序交通管制程序 I/OI/O交通管制程序的主要功能是管理设备、控交通管制程序的主要功能是管理设备、控制器和通道的全部状态信息。制器和通道的全部状态信息。 主要解决的问题是主要解决的问题是:7.3.3 7.3.3 假脱机技术假脱机技术返回利用假脱机技术利用假脱机技术(SPOOLing, Si
36、multaneous (SPOOLing, Simultaneous Peripheral Operation On Line, Peripheral Operation On Line, 也称为虚拟设备也称为虚拟设备技术技术) )可可把独享设备转变成具有共享特征的虚拟设备把独享设备转变成具有共享特征的虚拟设备,从而提高设备利用率。从而提高设备利用率。Application AApplication BSPOOLingProgramDeviceVirtual I/OActual I/O假脱机的原理:假脱机的原理:SPOOLingSPOOLing程序和外设进行数据交换,可以称为程序和外设进行数据
37、交换,可以称为“实际实际I/O”I/O”。一方面,。一方面,SPOOLingSPOOLing程序预先从外设输入数据并加以缓冲程序预先从外设输入数据并加以缓冲,在以后需要的时候输入到应用程序;,在以后需要的时候输入到应用程序;另一方面,另一方面,SPOOLingSPOOLing程序接受应用程序的输出数据并加以缓程序接受应用程序的输出数据并加以缓冲,在以后适当的时候输出到外设。冲,在以后适当的时候输出到外设。在在SPOOLingSPOOLing程序中,需要管理两级缓冲区:内存缓冲区和快程序中,需要管理两级缓冲区:内存缓冲区和快速外存上的缓冲池,后者可以暂存多批速外存上的缓冲池,后者可以暂存多批I/
38、OI/O操作的较多数操作的较多数据。据。7.3.3 假脱机技术7.6 设备管理举例7.7.1 UNIX的设备管理的设备管理7.7.2 Windows NT的设备管理的设备管理返回返回UNIXUNIX的外设与特殊文件对应,由文件系统按文件管的外设与特殊文件对应,由文件系统按文件管理方式进行管理,向上提供一个与文件系统统一的理方式进行管理,向上提供一个与文件系统统一的接口。接口。UNIXUNIX的文件系统与设备驱动程序之间的接口是的文件系统与设备驱动程序之间的接口是设备设备开关表开关表:块设备开关表和字符设备开关表。:块设备开关表和字符设备开关表。硬件与驱动程序之间的接口包括与机器有关的控制硬件与
39、驱动程序之间的接口包括与机器有关的控制寄存器或者寄存器或者I/OI/O指令,用来管理设备和中断矢量。指令,用来管理设备和中断矢量。7.7.1 UNIX的设备管理1. UNIX的I/O结构无缓存无缓存I/O (Buffered I/O)I/O (Buffered I/O):在进程在进程I/OI/O区域与系统区域与系统I/OI/O模模块间直接进行数据交换;块间直接进行数据交换;有缓存有缓存I/O (Unbuffered I/O)I/O (Unbuffered I/O):有缓存:有缓存I/OI/O要经过系统的要经过系统的缓冲区管理机构;它分成系缓冲区管理机构;它分成系统缓冲区统缓冲区(system
40、buffer (system buffer caches)caches)和字符队列和字符队列(character queues)(character queues)两种。两种。硬件硬件控制字符设备设备驱动程序块设备缓冲区管理文件子系统逻辑I/O设备I/O调度与控制2. 2. 块设备块设备(block device)(block device)的缓冲区管理的缓冲区管理块设备缓冲区结构:块设备缓冲区结构:缓存块是缓存使用的基本单位,它与外设数缓存块是缓存使用的基本单位,它与外设数据块相对应;每个缓存块由分立的两部分组成:据块相对应;每个缓存块由分立的两部分组成:缓冲控制块缓冲控制块和和缓冲数据区缓
41、冲数据区。前者用于缓冲区管理,后者用于存放数据。前者用于缓冲区管理,后者用于存放数据。缓冲控制块:缓冲控制块:也称为缓冲首部。内容包括:逻辑设备号,物理块也称为缓冲首部。内容包括:逻辑设备号,物理块号,缓冲区状态(如空闲、延迟写、锁定等标志),指向缓冲号,缓冲区状态(如空闲、延迟写、锁定等标志),指向缓冲数据区的指针,空闲队列的前后向指针。数据区的指针,空闲队列的前后向指针。缓冲区采用缓冲池结构,主要用于磁盘等外存的缓存。缓冲区采用缓冲池结构,主要用于磁盘等外存的缓存。图719 读操作指定用户区缓冲区磁盘 图720 写操作指定用户区缓冲区磁盘 缓冲区管理的相关数据结构缓冲区管理的相关数据结构空
42、闲缓冲队列空闲缓冲队列(Free list)(Free list):系统的所有空闲缓冲区列表;系统的所有空闲缓冲区列表;设备设备I/OI/O请求队列请求队列(Driver I/O queue)(Driver I/O queue):正与外设进行正与外设进行I/OI/O操操作的缓存块列表;一个缓存块必须处于空闲或操作状态;作的缓存块列表;一个缓存块必须处于空闲或操作状态;设备缓冲区队列设备缓冲区队列(Device list)(Device list):与各外设相关的缓存块列与各外设相关的缓存块列表,其中有缓存数据;表,其中有缓存数据;缓冲区检索缓冲区检索设备缓冲区队列为设备缓冲区队列为HashHa
43、sh队列队列:为了检索方便,设备缓冲区队:为了检索方便,设备缓冲区队列为一个按列为一个按( (逻辑设备号,物理块号逻辑设备号,物理块号) )组织的组织的HashHash队列。把队列。把逻辑设备号和物理块号之和对逻辑设备号和物理块号之和对6464取模作为哈希函数值,据取模作为哈希函数值,据此建立多个哈希队列(此建立多个哈希队列(6464个队列)。个队列)。2. 2. 块设备块设备(block device)(block device)的缓冲区管理的缓冲区管理(1)自由buf队列 一个可被分配作它用的缓冲存储区,其相应的一个可被分配作它用的缓冲存储区,其相应的bufbuf位于自由位于自由bufbu
44、f队列中。在自由队列的所有队列中。在自由队列的所有bufbuf的的b_flagb_flag标志不为标志不为B_BUSYB_BUSY。自由。自由bufbuf队列的控制块为队列的控制块为bfreelistbfreelist。 Bfreelist buf buf bufav_forwav_backav_forwav_back图图717 自由自由buf队列队列av_forwav_backav_forwav_back(2) 设备buf队列 hbuf buf buf bufb_forwb_backb_forwb_back图图718 设备设备buf队列队列b_forwb_backb_forwb_back每类
45、设备都有一个设备每类设备都有一个设备bufbuf队列,其队首和队尾分别用指针队列,其队首和队尾分别用指针b_forwb_forw和和b_backb_back双向勾连双向勾连 。一个缓存被分配用于读、写某类块设备上的某一字符块时,其一个缓存被分配用于读、写某类块设备上的某一字符块时,其相应的相应的bufbuf就进入该类设备的就进入该类设备的bufbuf队列,除非被队列,除非被“移作它用移作它用”,否则一直保留在该队列中。否则一直保留在该队列中。 (3) NODEVNODEV设备队列设备队列 1 1)特殊的设备队列)特殊的设备队列“空设备队列空设备队列”,也称,也称“NODEVNODEV设备队列设
46、备队列”。当系统需要使用缓存,但不与特定的设备字符块相连。当系统需要使用缓存,但不与特定的设备字符块相连时,则将分配到的缓存控制块时,则将分配到的缓存控制块bufbuf送入送入NODEVNODEV设备队列设备队列 。2 2)有两种情况将缓存控制块)有两种情况将缓存控制块bufbuf送入送入NODEVNODEV设备队列:设备队列: 第一种:在进程执行目标程序的开始阶段,它用缓存存第一种:在进程执行目标程序的开始阶段,它用缓存存放传向该目标程序的参数;放传向该目标程序的参数; 第二种:是用缓存存放文件系统的资源管理块。在系统第二种:是用缓存存放文件系统的资源管理块。在系统初启时,所有的空闲初启时,
47、所有的空闲BUFBUF即在自由即在自由bufbuf队列又在队列又在NODEVNODEV设备设备队列中。队列中。 2. 块设备(block device)的缓冲区管理缓存块可同时链入设备缓冲区队列和空闲缓冲队列:缓存块可同时链入设备缓冲区队列和空闲缓冲队列: 一个缓存块在分配给一个外设后,一直与该外设相关一个缓存块在分配给一个外设后,一直与该外设相关( (既使该缓存块在空闲缓冲队列中既使该缓存块在空闲缓冲队列中) ),直到分配给另一外,直到分配给另一外设。即:设备释放缓冲区后,该缓冲区可处于设。即:设备释放缓冲区后,该缓冲区可处于 延迟写延迟写 状态,等待被写入到外设;该缓冲区被重新分配之前,状
48、态,等待被写入到外设;该缓冲区被重新分配之前,要将其写入到外设。要将其写入到外设。缓冲区的置换算法缓冲区的置换算法: :最近最久未使用算法最近最久未使用算法(LRU)(LRU)算法算法缓冲区数据读写:缓冲区数据读写:外设与核心缓冲区间:外设与核心缓冲区间:一般读一般读( (从外设读入指定的数据块从外设读入指定的数据块) )、预先读预先读( (在一般读的在一般读的基础上,异步读入另一块,以提高数据读取速度基础上,异步读入另一块,以提高数据读取速度) );一般写一般写(立即起动(立即起动I/OI/O并等待完成)、并等待完成)、异步写异步写(立即起动(立即起动I/OI/O而不等待完成,以提高写速度)
49、、而不等待完成,以提高写速度)、延迟写延迟写(不立即(不立即起动起动I/OI/O,以减少不必要的,以减少不必要的I/OI/O操作,但系统故障时会产操作,但系统故障时会产生数据错误)生数据错误)2. 块设备(block device)的缓冲区管理3. 3. 字符设备的缓冲区管理字符设备的缓冲区管理 字符缓冲区采用缓冲池结构,构成一个字符队列字符缓冲区采用缓冲池结构,构成一个字符队列(Character Queue)(Character Queue),它不同于块设备缓冲区的多次读写,缓,它不同于块设备缓冲区的多次读写,缓冲区中每个字符只能读一次,读后被破坏。冲区中每个字符只能读一次,读后被破坏。
50、字符缓冲池的基本分配单位为字符缓冲池的基本分配单位为字符缓冲区字符缓冲区cblockcblock:供各种:供各种字符设备(的设备驱动程序)使用。字符设备(的设备驱动程序)使用。 3. 3. 字符设备字符设备(character device)(character device)的缓冲区管理的缓冲区管理 字符设备缓冲队列字符设备缓冲队列clistclist:每个字符设备驱动程序对应每个字符设备驱动程序对应一个一个clistclist。由若干个由若干个cblockcblock依次链接而成,而依次链接而成,而clistclist指指向第一个和最后一个向第一个和最后一个cblock.cblock.所有