1第6章设备管理主要内容:I/O硬件概念,设备控制器,I/O控制方式,缓冲技术,设备的使用方法,I/O层次结构,磁盘管理。重点:I/O控制方式,缓冲区的种类,设备分配。难点:磁盘调度策略。26.1I/O硬件概念6.1.1常见I/O设备的分类•人-机交互设备(字节设备,发送接收以字节方式);•存储类型设备(块设备,读写以数据块方式);•网络通信的设备(网络接口,调制解调器)。I/O设备的特点:•数据传输速率不同;•数据传输单位不同;•控制的复杂性不同;•设备的使用目的不同。36.1.2设备控制器(I/O部件)I/O设备通常包含一个机械部件和一个电子部件。电子部件被称做I/O部件或设备控制器(当控制多设备时:又叫总线控制器,通道控制器)。操作系统一般只与控制器打交道,而非设备本身。早期CPU是直接控制外部设备的,在引入I/O部件之后,才将CPU逐渐从与外设的交互细节中解放出来。4PCI总线控制器处理机(CPU)主存显卡SCSI控制器外设控制器控制器控制器连接CPU、主存、设备控制器和I/O设备模型磁带磁盘外设SCSI总线主板总线设备控制器的功能:1、接收和识别来自CPU的各种命令;2、实现CPU与设备控制器、设备控制器与设备之间的数据交换;3、记录设备的状态供CPU查询;4、识别控制器的每个设备的地址;5控制器的任务是在外部设备与CPU(内存)之间完成比特流(外部信号)和字节流(块)之间的转换。磁盘控制器主存比特流字节块转换、校验CRT控制器主存显示信号字节流转换6每个控制器都有一些用来与CPU通信的I/O寄存器。操作系统通过向这些寄存器写命令字来执行I/O功能。键盘060-063硬盘320–32F打印机378–37F软盘3F0–3F7彩色显示器3D0–3DFIBMPC的I/O地址内存0kn控制器寄存器76.1.3I/O控制方式(1)程序直接控制方式CPU直接控制I/O操作的全过程,包括测试设备状态、发送读写命令、传输数据。处理机指令集应包括指令下述指令:控制类测试类读写类I/O。示例:从外存读数据块到内存(见下一页)8向I/O部件发读命令读I/O部件状态寄存器从I/O部件读字数据将该字写入内存未OKOK出错OK下一指令未OK检查状态该块读完?9向I/O部件发读命令读I/O部件状态寄存器检查状态从I/O部件读字数据将该字写入内存OK出错处理该块读完OK下一指令未OK中断(2)中断控制方式优点:CPU不必反复测试,节约了时间。缺点:仍然消耗大量的CPU时间10(3)DMA方式DMA方式的思想:DMA(直接内存存取)负责完成整个I/O操作,无需再经CPU寄存器转发,并在全部传输结束后向CPU发中断信号。给DMA的命令中应包括:①操作类别②I/O设备的地址③读写数据在内存中的首地址④字数。向DMA部件发读命令读取DMA部件状态中断下一条指令注意:DMA的功能可以以独立的DMA部件在系统I/O总线上完成,也可整合到I/O部件中完成。缺点:DMA部件需与CPU竞争控制总线。11CPU直接控制外部设备引入I/O部件,CPU直接控制I/O部件引入中断驱动方式引入DMAI/O通道或I/O处理机输入/输出控制方式的发展过程126.2设备输入/输出子系统6.2.1设备的使用方法一、设备相关系统调用1.申请设备。有参数说明要申请的设备名称,操作系统处理该系统调用时,会按照设备特性(独占还是分时共享)及设备的占用情况来分配设备,返回申请是否成功标志。2.将数据写入设备。3.从设备读取数据。4.释放设备。这是申请设备的逆操作。说明:主要用于对人-机交互类慢速外设的使用。对于存储类外设,用户程序一般通过文件的访问。13在UNIX中,可以用如下的系统调用将数据直接写入软盘中:fd=open(“/dev/fd0”,O_RDRW);申请软盘,/dev/fd0代表软盘。lseek(fd,1004,0);将软盘当前I/O位置定位到1024字节位置。Write(fd,buffer,36);将用户缓冲区buffer中的36个字节写入软盘1024~1059字节。……close(fd);释放软盘。14二、独占式使用设备如打印机申请空闲吗?独占使用等待释放15三、分时式共享使用设备独占式使用设备时,设备利用率很低。分时式共享:以一次I/O为单位分时使用设备,不同进程的I/O操作请求以排队方式分时地占用设备进行I/O。注:针对一个逻辑上完整的数据的I/O操作。如:终端设备,磁盘设备。16请求设备请求I/O释放设备P1请求设备请求I/O释放设备P2请求请求设备图6.6排队使用设备17产生的条件:I/O中断;通道;磁盘。SPOOLing(并发的外部设备联机操作)的基本思想:用磁盘设备作为主机的直接输入/输出设备,即主机从磁盘选取作业并运行,结果也存在磁盘中。相应的通道则负责磁盘与慢速外设的传输。利用通道和中断机制,作业的输入/输出与作业在处理机上的运行可很好地并行起来。四、以SPOOLing方式使用外设18通道主机通道通道卡片机打印机SPOOLing系统图示磁盘19例如:所有输出数据已经写到文件当中,并排到打印输出队列,打印进程申请占用打印机后,成批读出文件中数据,并送打印机打印出去。打印请求队列(含要打印文件)打印daemon进程打印机206.2.2I/O层次结构通常,操作系统将设备管理系统划分并组织成三个层次:•用户层I/O;•设备无关的I/O;•设备驱动及中断处理;用户层I/O设备驱动及中断处理硬件系统调用接口,设备无关的操作系统软件21用户进程用户层I/O设备无关的I/O设备驱动及中断处理硬件设备管理子系统逻辑结构图22一、用户层I/O与设备的控制细节无关。将所有的设备看做逻辑资源,为用户进程提供各类I/O函数。用户以设备标识符和一些简单的函数来使用设备,如打开、关闭、读、写等。如C库中的函数fopen(),fread(),fwrite(),fclose()等。23二、设备无关的I/O基本功能:执行适用于所有设备的公共I/O功能,并向其上层提供统一的系统调用接口。任务包括:1.设备名及与设备驱动程序的映射。在UNIX中,如/dev/tty00惟一地确定了一个i-node数据结构,其中包含了主设备号,通过主设备号可以找到相应的设备驱动程序。2.设备保护:许可权限保护。3.缓冲I/O:块设备、字符设备。4.错误报告:报告驱动程序产生的错误信息。5.分配及释放独占型设备:申请、关闭。24三、设备驱动与中断处理1.设备驱动程序包括了所有与设备相关的代码,其功能是从与设备无关的软件中接收I/O的请求,排入请求队列或执行之;执行时,将请求转化为更具体的形式。2.中断处理当进程进行I/O操作时,将其阻塞至I/O操作结束并发生中断。中断发生时,由中断处理程序启动请求排队的下一请求并解除等I/O进程的阻塞状态,使其能够继续执行。256.2.3设备驱动程序一.设备驱动程序接口函数驱动程序初始化函数:做一些针对驱动程序本身的初始化工作,如向操作系统登记该驱动程序的接口函数,该初始化函数在系统启动时或驱动程序安装入内核时执行。驱动程序卸载函数:在支持驱动程序可动态加载卸载的系统中才需要。申请设备函数:申请一个驱动程序所管理的设备,按照设备特性进行独占式占用或者分时共享式占用。释放设备函数I/O操作函数:实现对设备的I/O。对独占型设备:包含了启动I/O的指令;分时共享型设备:将I/O请求形成一个请求包,将其排到设备请求队列。中断处理函数:在设备I/O完成时向CPU发中断,然后被调用。该函数对I/O完成做善后处理。26二、设备管理有关的数据结构描述设备、控制器等部件的表格:系统中常常为每一个部件、每一台设备分别设置一张表格,常称为设备表或部件控制块。这类表格具体描述设备的类型、标识符、进行状态,以及当前使用者的进程标识符等。建立同类资源的队列:通常在设备表的基础上通过指针将相同物理属性的设备连成队列(称设备队列)。面向进程I/O请求的动态数据结构:每当进程发出块I/O请求时,系统建立一张表格(称I/O请求包)。将此次I/O请求的参数填入表中,同时也将该I/O有关的系统缓冲区地址等信息填入表中。I/O请求包随着I/O的完成而被删除。建立I/O队列:如请求包队列。27设备表设备表设备表请求包请求包设备管理有关数据结构关系28一、单缓冲当用户进程发出I/O请求时,操作系统在主存的系统空间为该操作分配一个缓冲区,可以实现预先读和延迟写。引入原因:(1)可以改善进程运行速度与I/O传输速度之间的速差矛盾。(2)减少中断CPU的次数。(3)提高CPU和I/O设备之间的并行性。操作系统I/O设备输入用户进程移动6.2.4缓冲技术29二、双缓冲可以实现用户数据区与缓冲区之间交换数据和缓冲区与外设之间交换数据的并行。操作系统I/O设备输入用户进程移动30三、循环缓冲引入系统缓冲池,采用有限缓冲区的生产者/消费者模型对缓冲池中的缓冲区进行循环使用。缓冲区结合预先读和延迟写技术对具有重复性及阵发性I/O进程、提高I/O速度很有帮助。操作系统I/O设备输入用户进程移动…316.3存储设备6.3.1常见存储外设•磁盘•数据组织一个磁盘有多个盘面组成,盘面有同心圆磁道组成,磁道有扇区组成,扇区为基本传输单位。•物理特性单磁头,多磁头。32存取装置主轴动臂盘片柱面磁道读写头多磁头活动头盘示意图33•光学存储设备•CD-ROM;•CD-R,CD-RW。346.3.2磁盘调度磁盘地址:台号+柱面号+盘面号+扇区号读写一次磁盘信息所需的时间可分解为:寻找时间(寻道时间)、延迟时间、传输时间。为提高磁盘传输效率,软件应着重考虑减少寻找时间和延迟时间。35一、减少寻找时间(寻道时间)的方法减少寻找时间是提高磁盘传输效率的关键。因为“寻找时间”在几十毫秒时间量级。操作系统磁盘驱动程序可以通过对磁盘的访问请求顺序合理调度多道进程,达到减少磁盘平均服务时间的目的。36磁盘调度策略1、先来先服务FCFS(FirstComeFirstServer):这是最简单的磁盘调度策略,它根据进程请求访问磁盘的时间顺序进行调度。2、最短寻道时间优先SSFT(ShortestSeekTimeFirst):它是根据磁头当前的位置,选择请求队列中距离磁头最短的请求响应。3、SCAN:也称电梯策略,要求磁头臂仅仅沿一个方向移动,并在途中满足所有未完成的请求,直到它到达这个方向的最后一个磁道,或这个方向没有别的请求为止,然后倒转服务方向,同样按顺序完成的有请求。4、C-SCAN:是循环扫描法,当到达最后一个磁道时,磁头臂返回到磁头的另一端,并再次开始扫描。37其他调度策略为避免磁头臂的粘性,磁盘请求队列被分成段,一次只有一个段被完全处理1、N-Step-SCAN:它是把磁盘请求分成长度为N的子队列,每次用SCAN处理一个子队列。当N比较大时性能与SCAN相近,当N=1时退化为FCFS2、FSCAN:使用两个子队列,当扫描开始时,所有请求都在一个队列中,而另一个队列为空。在扫描过程中,所有新到的请求都被放入另一个队列。因此,对新请求的服务延迟到处理完所有老请求以后。38假设磁盘有200个磁道,磁盘请求队列中是一些随机请求。被请求的磁道按接收顺序分别为:55、58、39、18、90、160、150、38、184,当前磁头在100磁道处FCFS策略磁头臂的移动轨迹如下:18383955589015016018410039假设磁盘有200个磁道,磁盘请求队列中是一些随机请求。被请求的磁道按接收顺序分别为:55、58、39、18、90、160、150、38、184,当前磁头在100磁道处SSTF策略磁头臂的移动轨迹如下:18383955589015016018410040假设磁盘有200个磁道,磁盘请求队列中是一些随机请求。被请求的磁道按接收顺序分别为:55、58、39、18、90、160、150、38、184,当前磁头在100磁道处SCAN策略磁头臂的移动轨迹如下:18383955589015016018410020041假设磁盘有