1、第五章设备管理,5.1 I/O系统5.2 I/O控制方式5.3 缓冲管理5.4 设备分配5.5 设备处理5.6 磁盘存储器管理,I/O系统中,包括用于实现输入、输出和存储功能的设备和相应的设备控制器。在大中型机中,还有I/O通道或I/O处理机。设备管理的基本任务是完成用户提出的I/O请求,提高I/O速率、改善I/O设备的利用率。设备管理的主要功能有,缓冲区管理、设备分配,设备处理,虚 拟设备以及实现设备独立性。,5.1 I/O系统,I/O系统是用于实现数据的输入、输出及数据存储的系统。它除了需要直接用于I/O和存储信息的设备外还需要相应的设备控制器和高速总线。I/O 设备设备控制器I/O通道I
2、/O总线,1 I/O设备,设备的类型1)按数据传输率分高速设备 速率在每秒数百千个字节至数十兆字节。例如光盘机、磁带机、磁盘机等。中速设备速率在每秒数千个字节至数万个字节。如打印机等。低速设备速率在每秒几个字节至数百个字节之间。如键盘、鼠标等。,2) 按信息交换的单位分,块设备以数据块为单位存储、传输信息。典型的块设备是磁盘,每个盘块的大小为512B4B。磁盘设备的基本特征是传输速率较高。另一特征是可寻址,即对它可随机地读写任一块。字符设备以字符为单位存储、传输信息。字符设备的基本特征是速率慢,不可寻址。3) 按设备的共享属性分独占设备 在一段时间内只能有一个进程使用的设备,一般为低速I/O设
3、备。(如打印机,磁带等),共享设备在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高。(如硬盘)虚设备在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备目的:将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率。,设备与控制器之间的接口,通常,设备并不直接与Cpu进行通信,而是与设备控制器通信。因此,在设备与设备控制器之间应有一接口,在该接口中有三种类型的信号,各对应一根信号线。A 数据信号线这类信号线用于在设备和设备控制器之间传输数据信号。B 控制信号线这是设备控制器向I/O设备发送控制信号时的通路
4、。C 状态信号线该信号线用于传送指示设备当前状态的信号。,2 设备控制器,设备控制器是计算机中的一个实体,其主要职责是控制一个或多个I/O设备,以实现I/O设备与计算机之间的数据交换。设备控制器是Cpu与I/O设备之间的接口,它接受从Cpu发来的命令,并去控制I/O 设备工作,以便使处理器从繁重的设备控制事务中解脱出来。设备控制器是一个可编址的设备,当它仅控制一个设备时,它只有一个唯一的设备地址。若控制器可连多个设备时,则应含有多个设备地址,使每个设备地址对应一个设备。设备控制器可分为两类,一是用于控制字符设备的控制器,另一个是控制块设备的控制器。,1 设备控制器的基本功能,1)接收和识别命令
5、Cpu可向控制器发送多种不同命令,设备控制器应能接收和识别这些命令。2)数据交换它能实现Cpu与控制器之间、控制器与设备之间的数据交换。3)识别和报告设备的状态控制器记下设备的状态供Cpu了解。4)地址识别5)数据缓冲控制器必须设置一些缓冲器。6)差错控制设备控制器还对传来的数据进行差错检测。,2 设备控制器的组成,设备控制器由三部分组成。1)设备控制器与处理机的接口该接口用于实现Cpu与设备控制器之间的通信。2)设备控制器与设备之间的接口3)I/O逻辑用于实现对设备的控制。,3 I/O通道,1 通道的引入虽然在Cpu与外设之间有设备控制器,但当外设很多时,Cpu的负担仍然很重。为此,在Cpu
6、与设备控制器之间又增设了通道。使用通道的目的是为了建立独立的I/O操作,不仅使数据的传输独立于Cpu,而且尽可能地对I/O操作的组织、管理、及其结束也独立,使Cpu从繁杂的I/O任务中解脱出来。I/O通道是一种特殊的处理机,它具有执行I/O指令的能力,并能通过执行通道程序来控制I/O操作。I/O通道不同于一般的处理机,主要表现在2个方面:,指令类型简单通道没有自己的内存通道类型A 字节多路通道这是一种按字节交叉方式工作的通道。它有多个子通道,每个子通道连接一台I/O设备,并控制该设备的I/O操作。这些子通道轮流方式共享主通道。当一个通道程序控制某台设备传送一个字节后,通道硬件就控制转去执行另一
7、个通道程序,控制另一台设备传送信息。主要连接以字节为单位的低速I/O设备。如打印机等。以字节为单位交叉传输,当一台传送一个字节后,立即转去为另一台传送字节,B 数组选择通道,以成组方式进行数据传输,即每次传输一批数据。其传送速率较高,主要用于连接高速I/O设备。由于数据选择通道在一段时间内只能执行一个通道程序,控制一台设备,因此通道的利用率很低。当这台设备数据传输完成后,再选择与通道连接的另一台设备,执行它的相应的通道程序。 主要连接磁盘,磁带等高速I/O设备。,选择通道,C 数组多路通道,数组多路通道是将数组选择通道传输率高和字节多路通道能使各个子通道分时并行操作的优点结合起来而形成的一种新
8、通道。它既具有很高的数据传输率,又能获得令人满意的通道利用率。该通道广泛用于连接多台高速、中速的外设。硬件连接结构,通道:执行通道程序,向控制器发出命令,并具有向CPU发中断信号的功能。 一旦CPU发出指令,启动通道,则通道独立于CPU工作。一个通道可连接多个控制器,一个控制器可连接多个设备,形成树形交叉连接 主要目的是启动外设时: a 提高了控制器效率 b 提高可靠性 c 提高并行度,3 “瓶颈问题”,由于通道少而外设多,造成整个系统吞吐量下降,形成瓶颈问题。解决的办法是把外设连接到多个控制器上,而一个控制器又连接到多个通道上。这样,不仅解决了瓶颈问题,而且提高了系统的可靠性。,4 系统总线
9、,总线是用来连接各种设备的。总线的性能是用总线的时钟频率、带宽和相应的总线传输率等指标来衡量的。A ISA总线和EISA总线ISA这是1984年推出的286型微机而设计的总线结构,带宽8位,最高传输率2MB/s。EISA 带宽32位,传输率32MB/s ,可同时连接12台外设。B 局部总线,多媒体技术的兴起,要求总线具有更高的传输率。EISA已难于满足要求,局部总线应运而生。所谓局部总线,是指将多媒体卡、高速Lan网卡、图形卡等从ISA上卸下来,再通过局部总线控制器直接连到Cpu总线上,而打印机、CDROM等仍挂在ISA总线上。VESA 总线总线带宽32位,最高传输率132MB/s,广泛用于4
10、86微机中。PCI 总线这种总线支持64位系统。广泛用于奔腾系列计算机。,5.2 I/O控制方式,随着计算机的发展,I/O控制方式经历了四种形式,分别是程序I/O方式,中断驱动I/O方式,DMA方式和通道方式。程序I/O方式早期的计算机系统中,处理机对I/O设备的控制采取程序I/O方式,或称忙等待方式。处理机向控制器发出一条I/O指令启动输入设备输入数据时,把状态寄存器的忙/闲标准busy置为1,然后不断地循环测试busy。当busy1时,表示设备还没输入完,处理机应继续对busy进行测试,直至busy=0,表明输入机已将数据送入控制器的数据寄存器中。于是cpu将数据寄存器的数据读出,送入内存
11、指定单元中。接着处理机继续启动控制器,读下一个数据。,向I/O控制器发读命令,读I/O控制器状态,检查状态,从I/O控制器读入字,向存储器写字,流程完成?,未就绪,由于cpu高速而I/O设备低速,造成cpu极大浪费。,2 中断驱动I/O方式,当某进程要启动I/O设备工作时,便由cpu向设备控制器发出一条I/O指令,然后cpu继续执行原来的任务。设备控制器按照命令的要求控制设备。此时,cpu与设备并行工作。当设备工作完成时,才需要cpu花费极短的时间去做些中断出理。在中断方式中,cpu和I/O设备都处于忙碌状态,从而提高整个系统的资源利用率。在I/O中断方式下,数据的输入(或输出)步骤如下:设备
12、驱动程序工作:1、要求输入数据的进程把一个启动命令和允许中断位“1”写入相应设备的控制状态寄存器中,从而启动了该设备;2、该进程因等待输入的完成进入睡眠状态。3、当输入完成后,输入设备向CPU发出完成中断请求信号;,设备中断处理程序工作:4、处理机响应中断,处理该中断,并唤醒等待输入完成的进程;5、在以后的某个时期,该程序被调度到后,继续运行。这种方式的优点是大大地提高了CPU的利用效率,缺点是每次I/O都要CPU的干预,如果系统中配备了多台(套)设备时,CPU的利用率也会降低。解决的方法是采用通道技术,3 DMA控制方式(direct memory access),中断处理是以字为为单位进行
13、I/O的,每当完成一个字节的I/O时,便向cpu请求一次中断。而DMA方式与此不同。 DMA方式与中断的主要区别中断方式传输的单位是字或字节,在数据完成后,发中断请求,CPU进行中断处理 DMA方式的传输单位是数据块,在所要求传送的数据块全部传送结束时要求CPU进行中断处理中断方式要求了CPU进行中断处理的次数多,而DMA所 传送的数据是从设备直接到内存,或者相反。Cpu处理次数少3 中断方式的数据传送是由CPU控制完成的 而DMA方式则是在DMA控制器的控制下不经过CPU控制完成的,DMA控制器的组成,DMA控制器由3部分组成。一是主机与DMA控制器的接口,二是DMA与块设备的接口,三是I/
14、O控制逻辑。为了实现主机与控制器之间数据的直接交换,DMA控制器必须设置如下四类寄存器。1 命令/状态寄存器 CR2 内存地址寄存器 MAR3 数据寄存器DR4 数据计数器 DC,DMA工作过程,DMA工作示例(以硬盘为例),CPU提供被读取块磁盘地址目标存储地址待读取字节数整块数据读进缓冲区核准校验,控制器按照指定存储器地址,把第一个字节送入主存然后,按指定字节数进行数据传送每当传送一个字节后,字节计数器值减1,直到字节计数器等于0此时,控制器引发中断,通知操作系统,操作完成,DMA实现流程,CPU向控制器发出启动DMA通知和有关参数,控制器向内存发出询问请求,访问内存(读、写),计数器减1
15、,结束否,发中断,4 I/O通道控制方式,I/O通道方式是DMA方式的发展,它可进一步减少cpu的干预把对一个数据块的读写为单位的干预,减少到对一组数据块为单位的干预。同时,又可实现cpu,通道和I/O设备三者的并行操作,从而有效地提高整个系统的利用率。通道的工作原理:,工作原理 CPU:执行用户程序,当遇到I/O请求时,可根据该请求生成通道程序放入内存(也可事先编好放入内存),并将该通道程序的首地址放入CAW中;之后执行“启动I/O”指令,启动通道工作,通道:接收到“启动I/O”指令后,从CAW中取出通道程序的首地址,并根据首地址取出第一条指令放入CCW中,同时向CPU发回答信号,使CPU可
16、继续执行其他程序,而通道则开始执行通道程序,完成传输工作,5.3 缓冲管理,为了缓和CPU与I/O设备速度不匹配的矛盾,提高CPU与I/O设备的并行性,几乎所有的系统引入了缓冲区。缓冲管理的主要职责是组织好这些缓冲区,并提供获得和释放缓冲区的手段。1 缓冲区的引入1)缓和CPU与I/O设备间速度不匹配的矛盾凡是数据到达和离去速度不匹配的地方均可采用缓冲技术。2)减少对CPU的中断频率,放宽对CPU中断响应的时间限制3)提高CPU与I/O设备之间的并行性缓冲是用来在两种不同速度的设备之间传输信息时平滑传输过程的常用手段。,2 单缓冲和双缓冲,单缓冲,顾名思义就是一个缓冲区。在单缓冲情况下,每当用
17、户进程发出一个I/O请求时,操作系统便在主存中为之分配一片缓冲区。在块设备输入时,假定从磁盘把一块数据输入缓冲区的时间记为T,将缓冲区的数据送到用户区的时间是M,而CPU对数据的处理时间为C。由于T和C是可以并行的,所以系统对每一块数据的处理时间表示为Max(C,T)+M在字符设备输入时,缓冲区用于暂存用户输入的一行数据,在输入期间,用户进程被挂起以等待数据输入完毕;在输出时,用户进程将一行数据输入到缓冲区后,继续执行其它操作。,双缓冲,系统设置两个缓冲区,BUF1和BUF2,各进程使用这两个缓冲区。这种缓冲技术是最简单的,用于低频度活动的I/O。工作过程:首先输入将数据送入BUF1,然后,申
18、请BUF2,在向BUF2输入数据的同时,输出进程可从BUF1中取数据。同理,向BUF1输入与从BUF2中取数据可以并行。双缓冲可以实现两台计算机之间双向传输。,循环缓冲,在系统中设置若干缓冲区,并把这些缓冲区链接起来,这样若干个缓冲区就形成了一个环,故称环形缓冲区。,环形缓冲技术使用设置一个输入指针in、一个输出指针out、开始指针strat。系统初始时,strat=in=out。输入时,要判断in是否与out相等,若相等,则要等待。否则将信息送入in指向的缓冲区,填满后,将缓冲区中的指向下一个缓冲区的指针next置in,如此类推。输出时,首先判断out=in,若相等,则等待(意味着系统中没有
19、数据可取)。否则,取出缓冲区中的信息,将缓冲区中的next置out;,缓冲池,系统较大时,将会有许多循环缓冲,这不仅要消耗大量的内存空间,而且其利用率不高。为了提高缓冲区的利用率,目前广泛采用缓冲池。1)组成空缓冲队列 由空缓冲区所链成的队列。输入队列 由装满输入数据的缓冲区所链成的队列。输出队列 由装满输出数据的缓冲区所链成的队列。除了上述三个队列外,还应有四个工作缓冲区,1)用于收容输入数据的工作缓冲区 2)用于提取输入数据的工作缓冲区 3)用于收容输出数据的工作缓冲区 4)用于提取输出数据的工作缓冲区。,缓冲区的工作方式,缓冲区可以工作在收容输入、提取输入,收容输出、提取输出四种工作方式
20、下。收容输入:在输入进程需要输入数据时,从空缓冲队列的队首摘下一空缓冲区,作为收容输入工作缓冲区。把数据输入其中,装满后把该队列挂在输入队列上。提取输入:当计算进程需要数据时,从输入队列取得一缓冲区,作为提取输入工作缓冲区。计算进程从中提取数据,计算完毕后,将该缓冲区挂到空闲缓冲队列上。收容输出:当计算进程需要输出时,从空缓冲队列队首取得一空缓冲,作为收容输出工作缓冲区。当其中装满输出数据时,将该缓冲区挂在输出队列末尾。,提取输出:由输出进程调用,从输出队列的队首取得一装满输出数据的缓冲区,作为提取输出缓冲区。在数据提取完毕后将该缓冲区挂在空缓冲队列末尾。,5.4 设备分配,系统设备不允许用户
21、自行使用,必须由系统统一分配。每当进程向系统提出I/O请求时,只要是可能和安全的,设备分配程序便按照一定的策略,把设备分配给用户进程。数据结构在进行设备分配时,所需要的数据结构有:设备控制表,控制器控制表,通道控制表和系统设备表。设备控制表DCT系统为每个设备配置了一张设备控制表,用于记录本设备的情况。主要内容:设备类型、设备标识符、设备状态、与此设备相连的COCT、重复执行的次数或时间、等待队列的队首和队尾指针、I/O程序地址等。,控制器控制表和通道控制表、系统设备表,控制器控制表COCT:系统为每个控制器都设置了一张用于记录本控制器情况的控制器控制表。包括控制器标识符,状态,与控制器相连的
22、通道表指针等。通道控制表CHCT:系统为每个通道都设置了一张用于记录本通道情况的通道控制表。包括通道标识符,状态,与通道相连的控制器表首址,通道队列的对首指针等。系统设备表SDT:记录了系统中全部设备的情况。每个设备占用一个表目,其中包括设备类型,设备标识符、设备控制表及设备驱动程序的入口等项。,2 设备分配时应考虑的因素,分配设备时,应考虑下列几个属性:1)设备的固有属性2)设备分配算法 3)设备分配时的安全性 4)设备独立性设备的固有属性:设备的固有属性有三种情况,分别为独占性、共享性和虚拟性。独占性设备:这种设备一段时间内,只允许一个进程独占。对于独占设备,应采用独享分配策略。这种分配策
23、略的缺点是设备得不到充分利用,而且有可能引起死锁。共享性设备:这种设备允许多个进程共享。所以可同时分配给多个进程。虚拟设备:指设备本身是独占设备,经过技术处理,可把它改造成共享设备,可将它同时分配给多个进程。,设备分配算法,1、先来先服务算法2、优先级高者优先设备分配中的安全问题1)安全分配方式在这种分配方式中,每当进程发出I/O请求时,便进入阻塞状态,直至其I/O完成。这种分配方式摒弃了“请求和保持条件”,从而使设备分配是安全的。2)不安全分配方式在这种分配方式中,进程发出I/O请求后仍继续运行,需要时又发出第二个I/O请求,第三个I/O请求。仅当进程所请求的设备已被别的进程占用时,才进入阻
24、塞状态。优点:一个进程可以同时操纵多个设备。缺点是分配不安全。,3 设备独立性,为了提高OS的可适应性和可扩展性,引入了设备独立性。设备独立性也称为设备无关性,基本含义是应用程序独立于具体使用的物理设备。为了实现设备独立性,引入了逻辑设备和物理设备这两个概念。用户在编制程序时,使用逻辑设备名,由系统实现从逻辑设备到物理设备(实际设备)的转换。用户能独立于具体物理设备而方便的使用设备。设备独立性的优点:1)设备分配的灵活性2)易于实现I/O重定向所谓的I/O重定向指用于I/O操作的设备可以更换,而不必改变应用程序。设备独立性软件驱动程序是一个与硬件紧密相关的软件。为了实现设备独立,性,必须在驱动
25、程序之上设置一层软件,称为设备独立性软件。其主要功能有下面两点:执行所有设备的公有操作公有操作包括:对独立设备的 分配和回收;将逻辑设备名映射为物理设备名;对设备进行保护;缓冲管理;差错控制;2)向用户层软件提供统一接口无论何种设备,它们向用户所提供的接口应该是相同;,逻辑设备名到物理设备名映射的实现,1)逻辑设备表为了实现设备的独立性,系统必须设置一张逻辑设备表LUT,用于将应用程序中所使用的逻辑设备名映射为物理设备名。在该表的每个表目中包含三项:逻辑设备名,物理设备名和设备驱动程序的入口地址。,2) LUT的设置问题,LUT的设置采用两种方式:第一种方式是在整个系统中只设置一张LUT。由于
26、系统中所有进程的设备分配情况都记录在同一张LUT中,因而不允许在LUT中有相同的逻辑设备名。这就要求所有的用户都不使用相同的逻辑设备名。因而这种方式主要用于单用户系统中。第二种方式是为每个用户设置一张LUT。每当用户登录时,便为该用户建立一个进程,同时也为之建立一张LUT,并将该表放进进程的PCB中。这种方式通常用于多用户系统中。 4 独占设备的分配程序系统的设备分配程序可按下述步骤进行设备分配:1)分配设备,首先根据I/O请求中的物理设备名,查找系统设备表SDT,从中找出该设备的DCT,再根据DCT中的设备状态字段,可知该设备是否忙。若忙,便请求I/O进程的PCB,挂在设备队列上。否则,便按
27、照一定的算法来计算本次设备分配的安全性。如果安全,便可以分配。2)分配控制器在系统把设备分配给请求I/O的进程后,再到其DCT中找到与该设备连接的控制器的COCT,从COCT的状态字段中可知该控制器是否忙。若忙,便将请求I/O进程的PCB挂在该控制器的等待队列上;否则,将控制器分配给该进程。3)分配通道在该COCT中,又可找到与该控制器连接的通道的CHCT,再根据CHCT的状态信息,可知该通道是否忙碌;若忙,将请求I/O的进程挂在该通道的等待队列上;否则,将通道分配给,该进程。只有在设备、控制器和通道三者都分配成功时,这次分配才算成功。然后,便可启动该I/O设备进行数据传输。分配程序的改进上述
28、分配方式有以下问题:一是进程以物理设备名提出I/O请求的。二是采用单通路的I/O系统结构,容易产生瓶颈。应采取下列改进:1)增加设备的独立性进程应以逻辑设备名请求I/O。2)考虑多通路的情况对控制器和通道的分配,要经过多次反复。,5 SPOOLing技术,SPOOLing技术为解决独立设备数量少,速度慢,不能满足众多进程的要求,而且在进程独占设备期间,设备利用率比较低而提出的一种设备管理技术。1)什么是SPOOLing为了缓和CPU的高速性与I/O设备低速性的矛盾而引入了脱机输入、脱机输出技术。该技术是利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上;或者相反。在多道程序技术环境
29、下,可以利用程序来模拟脱机输入输出时,外围控制机的功能。这种在主机直接控制下,实现脱机输出输入操作。此时外围操作与CPU对数据的处理同时进行。把这种在联机情况下实现的同时外围操作称为SPOOLing(Simultaneaus Periphernal Operating OnLine),或称为假脱机技术。,2)SPOOLing 系统的组成,SPOOLing系统主要有以下三部分组成:A 输入井和输出井这是在磁盘上开辟两个大存储区;输入井是模拟脱机输入时的磁盘设备,用于暂存I/O设备输入的数据。输出井是模拟脱机输出时的磁盘,用于暂存用户程序的输出数据。B 输入缓冲区和输出缓冲区为了缓和CPU和磁盘之
30、间速度不匹配的矛盾,在内存中开辟两个缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用于暂存由输出设备送来的数据,以后再传送到输出井。C 输入进程P1和输出进程P2利用这两个进程模拟脱机I/O时的外围控制机。,进程P1模拟脱机输入时的外围控制机,将用户要求的数据从输入设备通过输入缓冲区送到输入井。当CPU需要输入数据时,直接从输入井读到内存。进程P2模拟脱机输出时的外围控制机,把用户要求输出的数据,先从内存送到输出井,待输出设备空闲时,再将输出井的数据经过缓冲区送到输出设备。,3) 共享打印机打印机属于独占设备,利用SPOOLing技术可将其改造为一台可供多个用户
31、共享的设备,从而提高设备的利用率。当用户进程请求打印输出时,SPOOLing系统并不把打印机分配给它,而只做两件事:A 由输出进程为用户申请一个空闲磁盘块区,并将要打印的数据送入其中。B 输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中。再将该表挂到请求打印队列上。,如果打印机空闲,输出进程将从请求打印队列的队首取出一张打印表,根据表中的要求,从输出井传送到内存缓冲区,再由打印机打印。4) SPOOLing系统的特点1)提高了I/O的速度。对低速I/O设备的操作演变成对输入井或输出井中数据的存取。缓和了CPU与低速设备之间速度的不匹配问题。2)将独占设备改造成共享设备3)实现虚拟设备功能,