您好,欢迎访问三七文档
操作系统OperatingSystems操作系统课程组南京邮电大学WINDOWSUNIXLINUXOS2VxWorksMacOS教材:《操作系统教程》,人民邮电出版社,2009年出版第6章设备管理设备管理是指操作系统对计算机系统中除CPU和内存以外的设备的管理。设备管理的主要任务是完成用户提出的输入输出请求,提高输入输出的速率,以及改善输入输出设备的利用率。第6章设备管理设备管理的主要功能有:缓冲区管理、设备分配、设备处理、虚拟设备以及设备的独立性。设备不但种类繁多,而且它们的特性和操作方式相差很大,因此,设备管理是操作系统资源管理中最为复杂、最多样化,且与硬件密切相关的部分。第6章设备管理6.1设备管理的概念6.2I/O控制方式6.3缓冲技术6.4驱动调度技术6.5设备分配6.6虚拟设备6.7Linux设备管理6.1设备管理的概念6.1.1设备的分类6.1.2设备管理的功能和任务6.1.1设备的分类1.按传输速率分类(1)低速设备低速设备是指每秒传输几B~几百B的一类设备。这类设备中典型的如键盘、鼠标器、语音的输入和输出等设备。(2)中速设备中速设备是指每秒传输几千B~数十千B的一类设备。这类设备中典型的如行式打印机、激光打印机等设备。(3)高速设备高速设备是指每秒数传输几百KB~数十MB的设备。这类设备中典型的如磁带机、磁盘机、光盘机等。2.按信息交换的单位分类(1)块设备块设备用于存储信息。由于信息的存取是以数据块为单位,故称块设备,它属于有结构设备。块设备的基本特征是可寻址,可随机地读/写任意一块;块设备的另一特征是其输入/输出(I/O)采用DMA方式。典型的块设备是磁盘,每个盘块的大小为512B~4KB。(2)字符设备字符设备用于数据传输的基本单位是字符,它属于无结构设备。其基本特征是不可寻址,即不能指定输入时的源地址及输出时的目标地址。此外,字符设备在I/O时常采用中断驱动方式。字符设备的种类较多,如交互式终端、打印机等。3.从资源分配角度分类(1)独占设备独占设备是指在一段时间内只允许一个用户(进程)使用的设备。系统一旦把该设备分配给某进程后,便让它独占使用,直至用完释放。应当注意,独占设备的分配可能会引起进程死锁。(2)共享设备共享设备是指在一段时间内允许多个进程同时访问的设备。典型的共享设备是磁盘。共享设备不仅能获得良好的设备利用率,而且是实现文件和数据共享的物质基础。(3)虚拟设备虚拟设备是指通过某种技术将一台独占设备变换为能供若干个用户共享的设备,因此可将它同时分配给多个用户,从而提高设备的利用率。6.1.2设备管理的功能和任务为此,设备管理通常应具有以下功能。①提高系统的利用率的关键之一是实现设备的并行性。②为了提高设备的利用率,在进行设备分配时系统通常采用动态分配方式。对于独占设备往往采用虚拟技术将其改造为共享设备,从而对该设备可以进行动态分配,也不会导致死锁。③设备的速率相对CPU而言要慢得多。为了平滑两者之间的差异,提高系统的效率,在设备管理中采用多种缓冲技术。④设备管理还要方便用户的使用。设备管理通过屏蔽设备的物理特性,从而实现设备的独立性。6.2I/O控制方式6.2.1程序直接查询控制方式6.2.2中断方式6.2.3DMA方式6.2.4通道方式I/O控制方式发展过程中贯穿着这样的宗旨,即尽量减少主机对外设的干预,把主机从繁杂的I/O控制中解脱出来,以便有更多的时间进行输出处理。6.2.1程序直接查询控制方式程序直接查询方式又称程序直接控制方式或者询问方式。在这种方式下,用户进程直接控制主机和外围设备之间的数据传输。用户进程与外围设备读取数据时,主机向设备控制器发出读指令后进入测试等待状态。在等待时间内,主机重复查询外设的准备状态直至外设准备就绪。外设就绪,数据传送开始,主机从设备控制器读取一个字,再向内存写一个字。如果传送还未结束,再次向设备控制器发出读指令,直到全部数据传输完成再返回现行程序执行。程序查询方式中,一旦主机启动外设,便不断查询外设的准备情况,终止了原程序的执行,浪费了宝贵的主机时间;另一方面,外设准备就绪后,主机参与数据的传送工作,此时主机也不能执行原程序。可见这种方式中,主机和外设串行工作,使主机不能充分发挥效率。6.2.2中断方式中断机构引入后,外围设备有了反映其状态的能力,仅当操作正常或异常结束时才中断CPU。实现了一定程度的并行操作,这叫中断方式。中断方式是程序查询方式的改进。在主机启动外设后,不必查询外设是否就绪,而是继续执行现行程序,对设备是否就绪不加过问。此时主机和外设并行操作。外设准备完毕,将数据传送至设备控制器的寄存器后,外设向主机发出中断请求,主机从设备控制中将数据读入内存指定单元。在中断方式中,外设输入每个数据的过程中,无需主机的干预,因而可使得主机与外设并行工作。仅当输完一个数据时,才需要主机花费时间中断处理。中断方式在一定程度上提高了主机和外设的并行程度,提高计算机系统资源的利用率。6.2.3DMA方式在DMA方式中,内存和外设之间有一条数据通路,在内存和外设之间成块传送数据过程中,由DMA控制器取代主机来控制数据传输,直接执行到数传输完成。该方式的特点是:①数据传输的基本单位是数据块,即在主机与外设之间传送一个数据块;②传送的数据直接从外设到内存,或者相反;③仅在传送一个数据块或多个数据块的开始和结束时才需要主机的干预。DMA的组成寄存器①命令/状态寄存器(CommandRegister,CR)。用于接收从CPU发出来的I/O命令或有关控制信息,或设备的状态。②内存地址寄存器(MemoryAddressRegister,MAR)。在输入时,它存放把数据从设备传送到内存的起始目标地址;在输出时,它存放由内存到设备的内存源地址。③数据寄存器(DataRegister,DR)。用于暂存从设备到内存,或从内存到设备的数据。图6-4DMA方式④数据计数器(DataCounter,DC)。存放本次CPU要读写的字节数。DMA的工作过程图6-4DMA方式6.2.4通道方式通道又称输入输出处理器,是独立于CPU的专门实现输入输出工作的处理机。通道直至控制设备和内存之间进行数据传送,把CPU从琐碎的输入输出操作中解放出来。通道是一种特殊的处理机。通道与一般处理机的区别主要表现在以下两个方面。①通道指令单一。通道硬件比较简单,其所能执行的指令主要是与输入输出操作有关的指令。②通道没有自己的内存。通道所执行的通道程序是放在计算机内存中的,也就是说通道与CPU共享系统的内存。通道按信息交换方式可分为以下三种类型①字节多路通道②数组选择通道③数组多路通道通道指令和通道程序通道方式通过执行通道程序,与设备控制器共同实现对设备进行控制。通道程序由若干的通道命令组成。通道指令通常由以下信息组成。①命令码。命令码指出通道命令的操作,常见的操作有读、写、控制、通道转移等。②内存地址。用于标明交换数据在内存中存放的位置。③计数。用于表示本条指令所要交换数据的字节数。④通道程序结束位。用于表示该指令是否是通道程序的最后一条指令。⑤记录结束标志位。用于表示本指令与下一通道指令处理的数据是否是同一个记录。6.3缓冲技术为了改善CPU与外围设备之间速度不匹配的矛盾,减少I/O对CPU的中断次数和放宽对CPU中断响应时间的要求,提高CPU和I/O设备的并行性,在操作系统中普遍采用了缓冲技术。缓冲技术的基本思想是:当一个进程输出数据时,先向系统申请一块内存作为输出缓冲区;然后,将输出数据高速输出到缓冲区;不断把数据填到缓冲区,直到缓冲区被装满为止;此后,进程可以继续它的计算,同时,系统将缓冲区内容写到I/O设备上。当一个进程执行读操作输入数据时,过程与此类似。6.3缓冲技术6.3.1单缓冲6.3.2双缓冲6.3.3循环缓冲6.3.4缓冲池6.3.1单缓冲对于块设备而言,假定从磁盘把一块数据输入到缓冲的时间为T,操作系统将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一块数据进行计算的时间为C,如图6-5所示。如果系统不采用缓冲技术,数据直接从磁盘到用户区,每块数据的处理时间为T+C。如果采用了单缓冲技术,每块数据的处理时间为max(C,T)+M。通常来说M要远远小于C或者T,因此采用缓冲技术,输入的效率提高了很多。6.3.2双缓冲为了加快输入输出速度和提高设备利用率,又引入了双缓冲,也称为缓冲对换。在双缓冲时,系统处理一块数据的时间可粗略地认为是max(C,T),如果CT,可使块设备连续输入;如果CT,可使CPU不必等待设备输入。图6-6双缓冲工作示意图6.3.3循环缓冲1.循环缓冲的组成①多个缓冲区。在循环缓冲中包含了多个缓冲区,每个缓冲区的大小相同。缓冲区可分为三种类型:空缓冲区R;已装满数据的缓冲区G;计算进程正在使用的缓冲区C。②多个指针。对用于输入的多缓冲,可设置这样三个指针。Nextg指示计算进程下一个可用的缓冲区G;Nexti指示输入进程下次可用的空缓冲区R;Current指示计算进程正在使用的缓冲区C。2.循环缓冲的使用①GetBuffer过程。对于计算进程而言,调用GetBuffer过程,通过Nextg获得要进行计算的缓冲区,相应地将该缓冲区改为C,将Current指向该缓冲区,Nextg指向下一个G缓冲区。对于输入进程而言,调用GetBuffer过程,通过Nexti获取可用的缓冲区,相应地将该缓冲区改为C,将Current指向该缓冲区,Nexti指向下一个R缓冲区。②ReleaseBuffer过程。当计算进程提取完毕后,当前的缓冲区空出来了,调用Release过程,将C改为R。类似输入进程输入完毕,调用Release过程,将该缓冲区改为G。3.进程同步循环缓冲机制中,指针Nexti和Nextg不断地顺时针运行,这样可能会出现以下两种情况。①Nexti指针追上Nextg指针。意味着输入进程输入数据的速度大于计算进程处理数据的速度,已把全部可用的空缓冲装满,再无缓冲区可用。此时,输入进程应该阻塞,直到有计算进程计算完毕,将某个缓冲区释放,输入进程才被唤醒。②Nextg指针追上Nexti指针。意味着计算进程处理数据的速度大于输入进程输入数据的速度,已把所有输入数据的缓冲区处理完毕,再无有数据的缓冲区供计算进程使用。此时,计算进程应该阻塞,直到有输入进程输入数据,将某个缓冲区释放,计算进程才被唤醒。6.3.4缓冲池1.缓冲池的组成缓冲池中的缓冲区一般包含三种类型的缓冲区:空闲缓冲区、装满输入数据的缓冲区和装满输出数据的缓冲区。为了管理方便,系统将同一类型的缓冲区连成一个队列,形成以下3个队列。①空闲缓冲区队列emq:由空闲缓冲区所连成的队列。其队首指针F(emq)和队尾指针L(emq)分别指向该队列的首尾缓冲区。②输入队列inq:这是由装满输入数据的缓冲区所连成的队列。其队首指针F(inq)和队尾指针L(inq)分别指向该队列的首、尾缓冲区。③输出队列outq:这是由装满输出数据的缓冲区所连成的队列。其队首指针F(outq)和队尾指针L(outq)分别指向该队列的首、尾缓冲区。还应具有4种工作缓冲区。①用于收容输入数据的工作缓冲区(hin)。②用于提取输入数据的工作缓冲区(sin)。③用于收容输出数据的工作缓冲区(hout)。④用于提取输出数据的工作缓冲区(sout)。2.缓冲池管理的基本操作Getbuf过程和Putbuf过程缓冲池中两个基本操作。①Getbuf(type):用于从type所指定的队列的队首摘下一个缓冲区。②Putbuf(type,number):用于将由参数number所指示的缓冲区挂在type队列上。3.缓冲池的工作方式(1)收容输入工作方式(2)提取输入工作方式(3)收容输出工作方式(4)提取输出工作方式6.4驱动调度技术6.4.1磁盘的物
本文标题:OS06设备
链接地址:https://www.777doc.com/doc-1307242 .html