第五章设备管理5.1概述5.2I/O软件5.3I/O系统硬件5.4有关技术5.5设备处理5.6典型外部设备5.1概述5.1.1I/O管理的重要性1.I/O设备就像计算机系统的五官和四肢2.I/O性能经常成为系统性能的瓶颈(1)CPU性能不等于系统性能,响应时间也是一个重要因素(2)CPU性能越高,与I/O差距越大弥补:更多的进程(3)进程切换多,系统开销大3.操作系统庞大复杂的原因是:资源多、杂,并发,均来自I/O4.理解I/O的工作过程与结构是理解操作系统的工作过程与结构的关键5.I/O技术很实用6.与其他功能联系密切,特别是文件系统5.1.2设备的分类1.按使用特性分.存储型设备.输入输出型设备(交互型设备).终端设备.脱机设备2.按数据组织分块设备—以数据块为单位存储、传输信息,如磁盘,磁带。字符设备—以字符为单位存储、传输信息,如打印机,终端。3.按外部设备的从属关系分系统设备—指操作系统生成时,登记在系统中的标准设备。(如终端、打印机、磁盘机等)用户设备—指在系统生成时,未登记在系统中的非标准设备。对于这类设备的处理程序由用户提供,并将其纳入系统,由系统代替用户实施管理。(如A/D,D/A转换器,CAD所用专用设备)4.从资源分配角度分独占设备—在一段时间内只能有一个进程使用的设备,一般为低速I/O设备。(如打印机,磁带等)共享设备—在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高。(如硬盘)虚拟设备—在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚拟设备。目的:将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率(实例:SPOOLing技术,利用虚设备技术——用硬盘模拟输入输出设备)5.从程序使用角度分逻辑设备物理设备6.按数据传输率分高速设备低速设备5.1.3设备管理的目标和任务1.按照用户的请求,控制设备的各种操作,完成I/O设备与内存之间的数据交换(包括设备分配与回收;设备驱动程序;设备中断处理;缓冲区管理),最终完成用户的I/O请求设备管理功能:(1)设备分配与回收记录设备的状态,根据用户的请求和设备的类型,采用一定的分配算法,选择一条数据通路。(2)建立统一的独立于设备的接口(3)完成设备驱动程序,实现真正的I/O操作(4)处理外部设备的中断处理(5)管理I/O缓冲区2.向用户提供使用外部设备的方便接口,使用户摆脱繁琐的编程负担•方便性•友好界面•透明性逻辑设备与物理设备、屏蔽硬件细节(设备的物理细节,错误处理,不同I/O的差异性)3.充分利用各种技术(通道,中断,缓冲等)提高CPU与设备、设备与设备之间的并行工作能力,充分利用资源,提高资源利用率。•并行性•均衡性(使设备充分忙碌)4.保证在多道程序环境下,当多个进程竞争使用设备时,按一定策略分配和管理各种设备,使系统能有条不紊地工作。5.保护设备传送或管理的数据应该是安全的、不被破坏的、保密的。6.设备独立性用户在编制程序时,使用逻辑设备名,由系统实现从逻辑设备到物理设备(实际设备)的转换用户能独立于具体物理设备而方便的使用设备5.1.4I/O技术I/O控制方式:程序I/O方式、中断方式、通道方式、DMA方式。这也是数据传送控制的四种方式。I/O控制功能:•解释用户的I/O系统调用;•设备驱动;•中断处理。5.2I/O软件I/O软件的基本思想是按分层的思想构成,较低层软件要使较高层软件独立于硬件的特性,较高层软件则要向用户提供一个友好的、清晰的、简单的、功能更强的接口。5.2.1I/O软件的目标在设计I/O软件时的一个关键概念是设备独立性。用户在编写使用软盘或硬盘上文件的程序时,无需为不同的设备类型而修改程序就可以使用。与设备独立性密切相关的是统一命名这一目标。一个文件或一个设备的名字只应是一个简单的字符串或一个整数,不应依赖于设备。出错处理是I/O软件的另一个目标。一般来说,数据传输中的错误应尽可能地在接近硬件层上处理最后一个问题是可共享设备和独占设备的处理问题5.2.2中断处理每个进程在启动一个I/O操作后阻塞直到I/O操作完成并产生一个中断由操作系统接管CPU后唤醒该进程为止5.2.3设备驱动与设备密切相关的代码放在设备驱动程序中,每个设备驱动程序处理一种设备类型。5.2.4与设备无关的软件虽然I/O软件中一部分是设备专用的,但大部分软件是与设备无关的。设备驱动程序与设备独立软件之间的确切界限是依赖于具体系统的。1.独立于设备的软件的基本任务是实现所有设备都需要的功能,并且向用户级软件提供一个统一的接口。2.如何给文件和设备这样的对象命名是操作系统中的一个主要课题。独立于设备的软件负责把设备的符号名映射到正确的设备驱动上。3.设备保护系统如何防止无权存取设备的用户存取设备呢?4.不同的磁盘可以采用不同的扇区尺寸。向较高层软件掩盖这一事实并提供大小统一的块尺寸,这正是设备独立软件的一个任务。它可将若干扇区合成一个逻辑块。这样,较高层的软件只与抽象设备打交道,独立于物理扇区的尺寸而使用等长的逻辑块。5.缓冲技术6.设备分配7.出错处理5.2.5用户空间的I/O软件尽管大部分I/O软件都包含在操作系统中,但仍有一小部分是由与用户程序连接在一起的库过程,甚至完全由运行于核外的程序构成。系统调用,包括I/O系统调用,通常由库过程实现。这些过程所做的工作只是将系统调用时所用的参数放在合适的位置,由其它的I/O过程实现真正的操作。(1)用户进程层执行输入输出系统调用,对I/O数据进行格式化,为假脱机输入/输出作准备(2)独立于设备的软件实现设备的命名、设备的保护、成块处理、缓冲技术和设备分配(3)设备驱动程序设置设备寄存器、检查设备的执行状态(4)中断处理程序负责I/O完成时,唤醒设备驱动程序进程,进行中断处理(5)硬件层实现物理I/O的操作5.3I/O系统硬件5.3.1设备组成I/O设备一般由机械和电子两部分组成,把这两部分分开处理,以提供更加模块化,更加通用的设计。I/O设备特点:(1)操作异步性(2)设备自治性(3)接口通用性1.物理设备机械部分是设备本身(物理装置)2.设备控制器电子部分叫做设备控制器或适配器。在小型和微型机中,它常采用印刷电路卡插入计算机中。控制器卡上通常有一个插座,通过电缆与设备相连。控制器和设备之间的接口是一个标准接口,它符合ANSI、IEEE或ISO这样的国际标准。5.3.2设备接口一次完整的I/O传送过程,典型地由一长列低级信号组成,这些信号启动设备所执行的操作,并通过测试设备状态来监控设备操作的进展一个I/O过程由四步组成:准备启动测试和等待结果检查和错误处理通过对设备接口寄存器组的读写完成设备接口复杂繁琐5.3.3设备连接模式指I/O设备与CPU之间的连接方式,亦即将设备连接到一个计算机系统上的方式。在一个确定的连接模式下,从I/O设备到CPU间的所有连接成分构成了一条I/O路径(I/O链)1.总线将计算机系统中的各个子系统(CPU、内存、外设等)相互连接,且连接是共享的线路。分为数据总线、地址总线、控制总线2.控制器(适配器)电子部分:完成设备与主机间的连接和通讯3.DMA数据在内存与I/O设备间的直接成块传送。操作由DMA硬件直接完成。如下图所示:当DMA硬件控制磁盘与存储器之间进行信息交换时,每当磁盘把一个数据读入控制器的数据缓冲区时,DMA控制器取代CPU,接管地址总线的控制权,并按照DMA控制器中的存储器地址寄存器内容把数据送入相应的内存单元中。然后,DMA硬件自动地把传送字节计数器减1,把存储器地址寄存器加1,并恢复CPU对内存的控制权,DMA控制器对每一个传送的数据重复上述过程,直到传送字节计数器为“0”时,向CPU产生一个中断信号。当操作系统接管CPU控制权时,再无需做块复制的工作了。寄存器CPU向控制器发出启动DMA通知和有关参数控制器向内存发出询问请求访问内存(读、写)计数器减1发中断NYDMA的实现流程结束否5.4设备有关技术5.4.1通道技术1.定义:通道是独立于CPU的专门负责数据输入/输出传输工作的处理机,对外部设备实现统一管理,代替CPU对输入/输出操作进行控制,从而使输入/输出操作可与CPU并行操作。通道相当于一个功能简单的处理机,包含通道指令(空操作,读操作,写操作,控制,转移操作),并可执行用这些指令编写的通道程序。3.分类1)字节多路通道字节多路通道以字节为单位传输信息,它可以分时地执行多个通道程序。当一个通道程序控制某台设备传送一个字节后,通道硬件就控制转去执行另一个通道程序,控制另一台设备传送信息主要连接以字节为单位的低速I/O设备。如打印机,终端。2.引入通道的目的为了使CPU从I/O事务中解脱出来,同时为了提高CPU与设备,设备与设备之间的并行工作能力。2)选择通道选择通道是以成组方式工作的,即每次传送一批数据,故传送速度很高。选择通道在一段时间内只能执行一个通道程序,只允许一台设备进行数据传输当这台设备数据传输完成后,再选择与通道连接的另一台设备,执行它的相应的通道程序主要连接磁盘,磁带等高速I/O设备3)成组多路通道它结合了选择通道传送速度高和字节多路通道能进行分时并行操作的优点。它先为一台设备执行一条通道指令,然后自动转接,为另一台设备执行一条通道指令主要连接高速设备执行通道程序,向控制器发出命令,并具有向CPU发中断信号的功能。一旦CPU发出指令,启动通道,则通道独立于CPU工作。一个通道可连接多个控制器,一个控制器可连接多个设备,形成树形交叉连接。交叉连接5.4.2Spooling技术Spooling(SimultaneausPeriphernalOperatingOn-Line)技术是以通道为基础,在操作系统的配合下,实现联机情况下输入、输出外围操作同时进行,也称为假脱机操作。当系统引入多道程序技术后,完全可以用其中的一道程序模拟脱机输入时的外围控制机功能,把低速I/O设备上的数据传送到高速磁盘上;再用其中的另一道程序模拟脱机输出时的外围控制机功能,把数据从磁盘传送到低速输出设备上。这样就缓和了CPU的高速性与I/O的低速之间的矛盾。Spooling系统主要功能•将输入设备上的信息写到辅存输入井上;•系统或用户程序从输入井中读信息;•系统或用户程序将数据写到输出井中•将从输出井中数据交给慢速输出设备。5.4.3DMA技术DMA(directmemoryaccess)方式与中断方式的主要区别•中断方式是在数据缓冲寄存区满后,发中断请求,CPU进行中断处理;DMA方式则是在所要求传送的数据块全部传送结束时要求CPU进行中断处理,大大减少了CPU进行中断处理的次数。•中断方式的数据传送是由CPU控制完成的;而DMA方式则是在DMA控制器的控制下不经过CPU控制完成的。控制器按照指定存储器地址,把第一个字节送入主存,然后,按指定字节数进行数据传送,每当传送一个字节后,字节计数器值减1,直到字节计数器等于0此时,控制器引发中断,通知操作系统,操作完成。CPU提供被读取块磁盘地址目标存储地址待读取字节数整块数据读进缓冲区核准校验DMA工作示例(以硬盘为例)DMA工作原理•存放输入数据的内存起始地址、要传送的字节数送入DMA控制器的内存地址寄存器和传送字节计数器中断允许位和启动位置成1,启动设备•发出传输要求的进程进入等待状态执行指令被暂时挂起,进程调度其他进程占据CPU•输入设备不断窃取CPU工作周期,数据不断写入内存•传送完毕,发出中断信号•CPU接到中断信号转入中断处理程序处理•中断处理结束,CPU返回原进程或切换到新的进程5.4.4缓冲技术1.缓冲(Buffer)技术的引入凡是数据到达和离去速度不匹配的地方均可采用缓冲技术。在操作系统中采用缓冲是为了实现数据的I/O操作,以缓解CPU与外部设备之间速度不匹配的矛盾,提高资源利用率。缓冲技术•减少了I/O设备对处理器的中断请求次数•简化了中断机制•节省了系统开销2.缓冲区设置硬缓冲:在设备中设置缓冲区,由硬件实现软