资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,共,43,页,操作系统的设备管理,1,目标和功能,I/O,管理是操作系统的主要功能之一,负责管理所有,I/O,设备。计算机系统中存在着大量的,I/O,设备,其性能和应用特点可能完全不同,,所以要建立一个通用的、一致的设备访问接口,,使用户和应用程序开发人员能够方便地使用,I/O,设备,而无须关心每种设备各自的特性。,I/O,管理是,管理,I/O,设备,控制,I/O,操作,2,6.1 I/O,硬件组成,6.2 I/O,软件的组成,6.3,设备分配,6.4,磁盘管理,3,6.1 I/O,硬件组成,6.1.1 I/O,设备,按信息交换的单位分类,:,块设备,:,把信息存储在固定大小的块中,每个块有自己的地址,可独立地读写。通常块的大小为,512B,32KB,。,如磁盘、磁带、光盘和电子盘。,字符设备,:,以字符为单位发送和接收字符流。是不可寻址的。键盘、鼠标、扫描器、打印机、绘图仪、网络接口等。,时钟既不是块可寻址的,也不产生或接收字符流,只是按预先规定好的时间间隔产生中断。,4,I/O,设备一般由机械和电子两部分组成。机械部分是设备本身。,电子部分叫做设备控制器,。,设备控制器,处于,CPU,和,I/O,设备之间,接收从,CPU,发来的命令,控制,I/O,设备工作。,很多控制器可以连接两个、四个,甚至八个相同的设备。控制器与设备之间的接口是一个标准接口,符合国际标准。,6.1.2,设备控制器,5,接收,OS,的命令,控制设备实现指定的功能。,每个控制器有几个,寄存器,,用来与,CPU,通信,,即存放设备驱动程序向设备发送的命令和参数。,控制寄存器:被主机用来向设备发送命令。,状态寄存器:包含主机可读取的状态信息。,数据缓冲寄存器,每个寄存器被分配一个,端口号,。处理机通过,I/O,端口地址找到对应的,I/O,部件和设备寄存器,以实现对设备的控制和数据传输。,控制器的作用,6,控制器的作用,除了几个寄存器外,许多设备控制器还有一个操作系统可以读写的,数据缓冲区,。,如在屏幕上显示像素的常规方法是使用一个视频,RAM,,该,RAM,基本上只是一个数据缓冲区。,磁盘控制器,:从磁盘驱动器出来的是一连串的位流,控制器把串行的位流组装为字节,存入控制器内部的,数据缓冲区,中,形成以字节为单位的块。对块验证后,复制到主存。,7,内存映射,I/O,单独的,I/O,和内存空间,IN R0,4,MOV R0,4,前者读取,I/O,端口,4,的内容并将其存入,R0,,,后者读取内存字,4,的内容并将其存入,R0,。,内存,I/O,端口,两个地址空间,8,内存映射,I/O,内存映射,I/O,:,将所有设备控制器寄存器映射到内存空间。每个控制器寄存器被分配唯一的一个内存地址。通常分配给控制器寄存器的地址位于地址空间的顶端。,优点,:对内存的操作指令都可用于对,I/O,端口的操作,不需要专门的,I/O,指令。,I/O,设备驱动程序可以完全用,C,语言编写。,如,UNIX,。,内存,一个地址空间,9,内存映射,I/O-,混合方案,内存映射,I/O,的,数据缓冲区,,,控制器寄存器则具有单独的,I/O,端口。,Pentium,处理器使用的就是这一体系结构。,内存,I/O,端口,两个地址空间,10,计算机系统对,I/O,设备的,4,种控制方式,程序查询方式(轮询,(polling),),程序中断方式,直接存储器访问,(DMA),方式,通道控制方式,11,程序查询方式,向,I/O,控制器发,读,命令,读,I/O,控制器的状态,从,I/O,控制器中读入字节,向存储器中写字节,CPU,I/O,I/OCPU,未就绪,出错,就绪,I/O,CPU,CPU,内存,传送完成,检查状态,是,停止设备,未完,从外部设备读取一块数据到存储器,每次读几个字节的数据。,CPU,忙等,串行工作,12,2.,程序中断方式,CPU/,设备,并行工作,向设备控制器发,写,命令,CPU,转去执行其它程序,将控制传递给中断服务例程,无,重试或故障终止,中断服务例程检查本次传输是否有错,传输有错?,中断返回,继续执行被中断的进程,CPU,响应中断,传输完成?,无,完,CPU,工作情况,设备完成数据传输或出错,产生中断,设备驱动程序启动设备工作,I/O,设备工作情况,有,13,支持大量数据传输的,块设备,,其控制器支持直接存储器存取(,DMA,,,Direct Memory Access,)。,通常,,CPU,控制地址总线,进行与主存储器的数据交换。,允许,DMA,控制器接管地址总线的控制权,直接控制与主存的数据交换。,3.,直接存储器访问(,DMA,),14,整块数据的传输是在控制器的控制下完成的。仅在开始和结束时才需,CPU,干预。,向磁盘,O,控制器,发读块命令,读,DMA,控制器的状态,下条指令,CPU,DMA,CPU,做其它事,中断,DMA,CPU,DMA,方式,15,数据缓冲寄存器,主存地址寄存器,MAR,传送字节个数计数器,DC,控制,/,状态寄存器,数据总线,地址总线,DMA,控制器,主存,CPU,数据缓冲存储区,磁,盘,控制器独立地进行,DMA,传送,控制总线,16,DMA,工作过程:,设置,MAR,和,DC,初值,启动,DMA,传送命令,挪用,CPU,工作周期传送数据,主存地址增,1,数据计数器减,1,DC=0?,请求中断,N,Y,每当磁盘把一块数据读入控制器的数据缓冲区时,检验校验和。,DMA,控制器取代,CPU,,,接管地址总线的控制权,直接控制与主存的数据交换。使,CPU,访问总线时速度会变慢。,17,与,DMA,方式相比,通道所需的,CPU,干预更少,且可以做到一个通道控制多台设备,进一步减轻了,CPU,的负担。,通道是一种专用的,I/O,处理机。,通道有自己的指令系统,若干条通道命令连接成,通道程序,。,4.,通道控制方式,18,CPU,主存储器,磁盘控制器,软盘控制器,磁带控制器,读卡机,磁盘控制器,控制器,控制器,磁盘控制器,打印机,控制器,终端,数组多路通道,选择通道,字节多路通道,CPU,、,通道和,I/O,设备并行工作,总线,19,1.,字节多路通道,:以字节为单位传输信息,可以分时地执行多个通道程序,一个通道程序对应一台设备。主要用来连接大量慢速设备。,2.,选择通道,:以成组方式工作,即每次传送一批数据,故传送速度很高。在一段时间内只能执行一个通道程序,只允许一台设备传输数据。可用于连接高速设备,如固定头磁盘等。,3.,数组多路通道,:结合了选择通道传送速度高和字节多路通道能够分时的优点,。,先为一台设备执行一条通道指令,自动转接,再为另一台设备执行一条通道指令。可连接多台活动头磁盘机。,通道的三种类型,20,工作过程:,CPU,向,I/O,通道发出一,条,I/O,指令,给出所要执行的通道程序的首地址和要访问的,I/O,设备。,通道接到,CPU,发来的指令,通过执行,通道程序,便可完成,CPU,指定的,I/O,任务。,完成任务后,通道与设备一起发出中断请求信号,请求,CPU,处理。,21,6.2 I/O,软件的组成,I/O,软件的基本思想,:按分层构建,较低层的软件为较高层的软件服务,使较高层软件独立于硬件,为用户提供统一接口。,22,设备独立性,。,用户在编写使用磁盘上文件的程序时,无需为不同的设备类型而修改程序,就可以使用。,用户程序中给出的是一个逻辑设备名,由,OS,实现逻辑设备与物理设备的映射。,设备的统一命名,。与设备独立性密切相关。一个设备的逻辑名字只应是一个简单的字符串或一个整数,如,PRN,,,不依赖于具体的设备。,6.2.1 I/O,软件的目标,23,出错处理,。数据传输中的错误应尽可能地在接近硬件层上处理,可重试多次。仅当低层软件无能为力时,才将错误上交高层软件处理。,缓冲技术,。其目的就是设法使数据的到达率和离去率相匹配,以提高系统的吞吐量。,设备的分配,。涉及到共享设备和独占设备的分配问题。,24,6.2.2 I/O,软件的功能,中断处理程序,设备驱动程序,独立于设备的软件,用户空间,的,I/O,软件,I/O,软件的分层:,在,I/O,软件中,大部分软件是与设备无关的。,25,1.,中断处理程序,每个进程在启动一个,I/O,操作后阻塞起来,,I/O,操作完成,控制器产生一个,中断,。,CPU,响应中断,执行中断处理程序。,检查设备状态,。若是正常完成,就唤醒等待该,I/O,的进程。然后检查是否还有,I/O,请求,若有,就,启动下一个请求,。若传输出错,再发启动传输命令,或向上层报告“设备错误”的信息。,26,每个设备驱动程序处理一种类型设备。由一些与设备密切相关的代码组成。提供一些与文件类似的,API,:,open,close,read,write,control,等,是,OS,中唯一知道,设备控制器,的配置情况,如设置有多少个寄存器以及这些寄存器作用的。,2.,设备驱动程序,通常包含三部分功能:,设备初始化。,启动设备进行数据传输例程。,中断处理例程:处理设备发出的各种中断。,27,工作过程,设备驱动程序,接收,来自上层软件的抽象请求,并执行这个请求。若忙,则排到,I/O,请求队列中。,将请求,转换,成应向控制器发送的命令和设备的具体参数。,通常,驱动程序进程等待命令完成,,阻塞自己,,直到中断处理时将其唤醒。有时不必等待,如滚屏操作,把几个字节写到控制器中即可。,检查,数据传输是否有错;向上层传送数据。,继续未完成的,I/O,请求。,28,3.,独立于设备的软件,(,1,)基本任务,:实现所有设备都需要的公共功能,且向用户级软件提供一个统一接口。,(,2,)设备命名,。把设备的符号名映射到正确的设备驱动上。,UNIX,,,/dev/tty01,i,节点,主设备号(用来定位终端设备驱动程序),次设备号(作为参数用来确定设备驱动程序要读,/,写的具体终端)。,29,(,3,),设备保护,。防止无权存取设备的用户使用设备。,UNIX,的,I/O,设备作为文件用“,rw,”,位进行保护。,禁止用户进程对,I/O,设备直接访问,必须通过,OS,提供的系统调用命令进行,I/O,操作。,(,4,),提供与设备无关的块尺寸,。不同磁盘可以采用不同的扇区尺寸。应向较高层的软件掩盖这一事实并提供大小统一的块尺寸。,较高层软件只与抽象磁盘打交道,使用等长的逻辑块,。,30,(,5,),缓冲技术,缓解,CPU,与,I/O,设备间速度不匹配的矛盾,,减少对,CPU,的中断次数,。用户进程发出一个,I/O,请求时,,OS,便在主存分配缓冲区,缓存输入或输出的数据。,以空间换取时间。,单缓冲:,OS,为,I/O,请求分配一个缓冲区。,双缓冲:建立两个缓冲区,可以平滑,I/O,设备和进程之间的数据流,改善系统效率。,多缓冲和缓冲池:多进程共享缓冲池。,31,高速缓存(补),(,cache,)是可以保留数据拷贝的高速内存。,有时一块内存区域可以同时用于两个目的。,例如,为了有效调度磁盘,I/O,,在内存开辟了缓冲区来保留磁盘数据。这些缓冲区也可以用作高速缓存,可被多个进程共享。当内核收到,I/O,请求时,会首先检查高速缓存里是否有。,32,(,6,),负责设备分配,静态分配:进程运行前,将需要的设备全部分配给它。简单,不死锁,但利用率低。,动态分配:在进程运行过程中,分配设备。设备利用率高,但容易引起死锁。,33,独占方式分配:对独占型设备的分配。,共享分配:对共享型设备的分配。磁盘。,虚拟设备。常用可共享的高速设备来模拟独占的慢速设备。能有效提高独占型设备的利用率。,Spooling,技术是实现虚拟设备的具体技术。它利用可共享磁盘的一部分空间,模拟独占的输入,/,输出设备。,以空间换时间。,34,假脱机输出:以打印机为例,Spooling,实际是一种缓冲技术。进程要打印时,系统并不为它分配打印机,而是在磁盘上申请一个空闲区,把待打印的数据缓冲到空闲区,再把打印请求挂到打印队列上。打印机空闲时,从打印队列上取出一个请求,再从磁盘上的指定区域取出数据,送打印机打印。,这种技术又叫缓输出技术。,35,(,7,)出错处理,绝大多数错误是与设备密切相关的,一般由设备驱动程序来处理。,处理设备驱动程序处理不了的错误(重试几次操作后,仍有错误)。将错误信息报告调用者。,36,I/O,软件。(,1,)大部分都包含在操作系统中。(,2,)一小部分是由与用户程序连接在一起的库函数构成的。,例,用户程序中的库函数:,count=,read(fd,buffer,nbytes,);,程序运行期间,库函数,read,将与该程序连接在一起形成一个可执行文件装入主存。,这些函数通常只是将系统调用时所需要的参数放在合适的位置,由其他的,I/O,函数实现真正的操作。如“,Printf,”,将调用“,write”,系统调用。,4.,用户空间的,I/O,软件,37,5.I/O,系统的层次结构,用户进程,独立于设备的软件,设备驱动程序,中断处理程序,硬件,I/O,请求,I/O,完成后,的回答,38,读,文件的,I/O,操作步骤,用户进程发出一个读文件的系统调用。,设备独立,I/O,软件,检查参数,的正确性。若正确,再检查,高速缓存,中有无要读的信息块。若有,则从缓冲区直接读到用户区。若无,转,3),执行物理,I/O,。,独立于设备的,I/O,软件将设备的,逻辑名转换成物理名,,检查设备操作权限。将,I/O,请求排队,阻塞用户进程且等待,I/O,完成。,核心执行,设备驱动程序,,分配,缓冲区,,准备接收数据,且向设备控制寄存器发启动读命令。,39,设备控制器控制设备,执行数据传输。,当采用,DMA,控制器控制传输时,一个块传输完成,硬件产生一个中断。,CPU,响应中断,转磁盘的,中断处理程序,。检查中断原因和设备的执行状态,若出错,则向设备驱动程序发信号,若可重试,则再启动设备重传一次;否则,向上报告错误。若传输正确,,将数据传输给指定的用户进程空间,,将等待进程唤醒并且放入就绪队列,等待调度。,当,用户进程,被调度执行时,从,I/O,系统调用的断点恢复执行。,40,6.2.3,同步,I/O,和异步,I/O,同步,I/O,:进程发出,I/O,请求后阻塞等待,直到数据传输完成后被唤醒,之后才能访问被传输的数据。,异步,I/O,:允许进程发出,I/O,请求后继续运行。,将来,I/O,完成后的通知方式:,设置进程地址空间内的某个变量;通过触发信号或软件中断;进程执行流之外的某个回调函数。,(,Windows,的,APC,),对于不必进行缓冲读写的快速,I/O,,使用同步,I/O,更有效;对于需要很长时间的,I/O,操作,可使用异步,I/O,。,41,6.3,磁盘管理,1.,提高磁盘,I/O,速度的主要途径:,选择性能好的磁盘。如,IDE,、,SCSI,采用好的调度算法,设置磁盘高速缓冲区,2.,磁盘的类型,硬盘和软盘;固定头磁盘和活动头磁盘。,固定头磁盘,:每条道上都有一个读,/,写磁头,用于大容量磁盘,并行读,/,写。,移动头磁盘,:每个盘面仅配有一个磁头。,42,4.,访问磁盘块的时间,:寻道时间、旋转延迟时间、读,/,写传输时间。,5.,调度算法,先来先服务(,FIFO,),:最简单,易实现,又公平合理。,最短寻道时间优先,(SSTF),:是指在将磁头移向下一请求磁道时,总是选择移动距离最小的磁道。,扫描法,(SCAN),:是指读,/,写磁头在由磁盘的一端向另一端移动时,随时处理所到达磁道上的服务请求,直到移动另一端之后,再反向进行服务。变种,CSCAN,和,C-LOOK,6.,磁盘分配方法,连续分配;链接分配;索引分配,43,
展开阅读全文