操作系统原理设备管理

上传人:大米 文档编号:570631737 上传时间:2024-08-05 格式:PPT 页数:83 大小:362.04KB
返回 下载 相关 举报
操作系统原理设备管理_第1页
第1页 / 共83页
操作系统原理设备管理_第2页
第2页 / 共83页
操作系统原理设备管理_第3页
第3页 / 共83页
操作系统原理设备管理_第4页
第4页 / 共83页
操作系统原理设备管理_第5页
第5页 / 共83页
点击查看更多>>
资源描述

《操作系统原理设备管理》由会员分享,可在线阅读,更多相关《操作系统原理设备管理(83页珍藏版)》请在金锄头文库上搜索。

1、Unit9设备管理设备管理设备管理设备管理操作系统原理操作系统原理冯耀霖冯耀霖设备,也称外部设备或设备,也称外部设备或I/O设备,是指那些由于原理、设备,是指那些由于原理、结构、数据格式等原因不能与系统总线直接连接的装置。结构、数据格式等原因不能与系统总线直接连接的装置。它们也是计算机系统不可或缺的重要组成部分,是计算机它们也是计算机系统不可或缺的重要组成部分,是计算机主机(主机(CPU+内存)与外部环境进行交互和沟通的通道。内存)与外部环境进行交互和沟通的通道。显然,显然,I/O设备的存在才使得计算机的存在有了意义,设备的存在才使得计算机的存在有了意义,就像一个人,如果没有与人交际和沟通的能

2、力,则这个人就像一个人,如果没有与人交际和沟通的能力,则这个人通常被认为是痴呆或白痴,即使他实际上是一个天才。同通常被认为是痴呆或白痴,即使他实际上是一个天才。同样,一台没有样,一台没有I/O设备的计算机,不管其计算功能多么强设备的计算机,不管其计算功能多么强大,也是废铁一堆。所以,设备管理也是操作系统的重要大,也是废铁一堆。所以,设备管理也是操作系统的重要组成部分,是操作系统的基本功能之一,而且由于组成部分,是操作系统的基本功能之一,而且由于I/O设设备的种类繁多,各自的特性和使用方式有很大差异,因此,备的种类繁多,各自的特性和使用方式有很大差异,因此,设备管理软件可以说是操作系统中最繁杂的

3、部分。设备管理软件可以说是操作系统中最繁杂的部分。 内容内容设备设备设备管理设备管理概述概述设备驱动程序设备驱动程序独立于设备的独立于设备的I/O软件软件用户级用户级I/O软件软件1设备设备设备分类设备分类设备的差异性设备的差异性设备控制器设备控制器I/O控制方式控制方式1.1设备分类设备分类可以说,外部设备(简称外设或设备)是计算机系统可以说,外部设备(简称外设或设备)是计算机系统中最多样、差异最大的组成部分,不同的计算机系统所配中最多样、差异最大的组成部分,不同的计算机系统所配置的外设也不同。对外设的分类方法有许多种,主要有以置的外设也不同。对外设的分类方法有许多种,主要有以下三种:下三种

4、:基本分类法基本分类法功能分类法功能分类法管理分类法管理分类法1.基本分类法基本分类法它把外设大致分为三类:它把外设大致分为三类:(1)外存外存:磁盘、光盘、:磁盘、光盘、U盘。盘。(2)人机通信设备人机通信设备:输入设备有:键盘、鼠标、话筒、光笔、扫描仪、数码输入设备有:键盘、鼠标、话筒、光笔、扫描仪、数码相机等;相机等;输出设备有:显示器、打印机、绘图仪、扬声器等。输出设备有:显示器、打印机、绘图仪、扬声器等。(3)机机通信设备机机通信设备:输入设备有:传感器、仪器仪表等;输入设备有:传感器、仪器仪表等;输出设备有:执行器、仪器仪表等;输出设备有:执行器、仪器仪表等;输入输出设备有:网卡、

5、输入输出设备有:网卡、Modem等。等。2.功能分类法功能分类法如果从外设的功能上来分,只有两种:存储设备和通如果从外设的功能上来分,只有两种:存储设备和通信设备。信设备。(1)存储设备存储设备即外存,外存的共同特点是都对存储即外存,外存的共同特点是都对存储区进行分块管理,也就是说,这些设备在逻辑上可以看成区进行分块管理,也就是说,这些设备在逻辑上可以看成是有若干存储块组成的存储空间,所以传统上也被称作是有若干存储块组成的存储空间,所以传统上也被称作块块设备设备。另外,为了进行大块数据的传输,通常需要在内存。另外,为了进行大块数据的传输,通常需要在内存为它们创建比较大的数据缓冲区。为它们创建比

6、较大的数据缓冲区。(2)通信设备通信设备除了外存之外的那些外设通常都是通除了外存之外的那些外设通常都是通信设备,它们是计算机与外部环境进行交互的主要手段。信设备,它们是计算机与外部环境进行交互的主要手段。这些设备的数据量往往不是很大,也不是很集中,因此这这些设备的数据量往往不是很大,也不是很集中,因此这类设备在内存中不需要较大的缓冲区,或者就根本没有缓类设备在内存中不需要较大的缓冲区,或者就根本没有缓冲区,例如键盘、鼠标等。这些设备传统上也被称作冲区,例如键盘、鼠标等。这些设备传统上也被称作字符字符设备设备。3.管理分类法管理分类法按设备的管理性质可把外设分为两类:按设备的管理性质可把外设分为

7、两类:(1)系统设备是指操作系统生成时就纳入系统管理系统设备是指操作系统生成时就纳入系统管理范围的各种范围的各种标准设备标准设备(基本配置),操作系统提供有相应(基本配置),操作系统提供有相应的数据结构和设备驱动程序等。如键盘、鼠标、显示器、的数据结构和设备驱动程序等。如键盘、鼠标、显示器、磁盘驱动器等。磁盘驱动器等。(2)用户设备是指系统设备之外的用户设备是指系统设备之外的非标准设备非标准设备,在,在安装操作系统时没有配置,而由用户根据需要自己安装配安装操作系统时没有配置,而由用户根据需要自己安装配置。如扫描仪、绘图仪等。置。如扫描仪、绘图仪等。1.2设备的差异性设备的差异性外部设备由于种类

8、不同,制造商不同,技术标准不同,外部设备由于种类不同,制造商不同,技术标准不同,其特性可以有巨大的不同。而这种不同越是明显,对操作其特性可以有巨大的不同。而这种不同越是明显,对操作系统的设计的挑战就越大。因为屏蔽这些巨大的不同,使系统的设计的挑战就越大。因为屏蔽这些巨大的不同,使得不同的设备相互共存并不是一件容易的事情。得不同的设备相互共存并不是一件容易的事情。其中最为明显的一种差异是数据传输的速度,它涵盖其中最为明显的一种差异是数据传输的速度,它涵盖的范围从每秒十个字节到几兆个字节。表的范围从每秒十个字节到几兆个字节。表9-1给出的是较给出的是较为常见的一些设备的数据传输率。为常见的一些设备

9、的数据传输率。输入输出设备输入输出设备数据传输速率数据传输速率键盘键盘10B鼠标鼠标100B56KModem7KB双向双向ISDN线路线路16KB激光打印机激光打印机100KB扫描仪扫描仪400KB以太网以太网1.25MBUSB1.5MBIDE磁盘磁盘5MB40XCD-ROM6MB表表9-1外设的数据传输率外设的数据传输率输入输出设备输入输出设备数据传输速率数据传输速率快速以太网快速以太网12.5MBISA总线总线16.7MBEIDE磁盘磁盘16.7MBXGA监视器监视器60MBSONETOC-1278MBSCSIUltra磁盘磁盘80MB千兆级以太网千兆级以太网125MBUltrium磁带磁

10、带320MBPCI总线总线528MBSun千兆平面千兆平面XBbackplane20GB1.3设备控制器设备控制器从设备的物理结构上来看,外设可能是电器的或机械从设备的物理结构上来看,外设可能是电器的或机械的,甚至是机、电、光多种技术结合的。但不管其主体是的,甚至是机、电、光多种技术结合的。但不管其主体是哪种构成,只要它要与电子计算机相连接,那它就必须有哪种构成,只要它要与电子计算机相连接,那它就必须有电子器件部分。这也就是说,计算机的外设必须由两部分电子器件部分。这也就是说,计算机的外设必须由两部分组成:一是外设的执行部分(电气的、机械或机、电、光组成:一是外设的执行部分(电气的、机械或机、

11、电、光多种技术结合的),也称设备主体;二是外设与系统的接多种技术结合的),也称设备主体;二是外设与系统的接口部分,而且这部分一定是电子部分,因为计算机系统必口部分,而且这部分一定是电子部分,因为计算机系统必须通过这些接口来对外设进行控制和数据传输。须通过这些接口来对外设进行控制和数据传输。设备控制器(也称设备控制器(也称适配器适配器)是外设与总线之间的一组)是外设与总线之间的一组电子器件。例如,串行口控制器就是一种简单的设备控制电子器件。例如,串行口控制器就是一种简单的设备控制器,它是计算机上用来控制串行信号的一块芯片或一个芯器,它是计算机上用来控制串行信号的一块芯片或一个芯片组。再如贴在磁盘

12、侧面的电子线路板也是一种设备控制片组。再如贴在磁盘侧面的电子线路板也是一种设备控制器器磁盘控制器,磁盘控制器,CPU就是通过这个控制器来对磁盘进就是通过这个控制器来对磁盘进行各种操作的。行各种操作的。为使处理器可以像访问内存那样来访问外设,计算机为使处理器可以像访问内存那样来访问外设,计算机系统必须提供一些互不冲突、能按地址访问、并能以数字系统必须提供一些互不冲突、能按地址访问、并能以数字信号进行数据传送的设备寄存器。通常每个设备都有三类信号进行数据传送的设备寄存器。通常每个设备都有三类设备寄存器:状态寄存器、控制寄存器、数据寄存器。这设备寄存器:状态寄存器、控制寄存器、数据寄存器。这些寄存器

13、都有自己的专有地址,称做些寄存器都有自己的专有地址,称做端口端口(port)。这些)。这些寄存器的作用分别为:寄存器的作用分别为:状态寄存器状态寄存器用来由控制器向处理器提供设备的当前用来由控制器向处理器提供设备的当前工作状态。例如,设备的当前操作是否执行完毕,数据是工作状态。例如,设备的当前操作是否执行完毕,数据是否可以被读出或写入,以及各种错误提示等。这些信息通否可以被读出或写入,以及各种错误提示等。这些信息通常都用字位(常都用字位(bit)来表示。)来表示。控制寄存器控制寄存器主要用来由处理器向控制器传送操作命主要用来由处理器向控制器传送操作命令。还用来管理外设工作模式,即在设备初始化时

14、或运行令。还用来管理外设工作模式,即在设备初始化时或运行时,处理器可以通过向控制寄存器写入命令来改变设备工时,处理器可以通过向控制寄存器写入命令来改变设备工作模式或设备状态。例如,在串口寄存器中专有一位信息作模式或设备状态。例如,在串口寄存器中专有一位信息是用来选择通信方式的(全工或半工),还有一位信息是是用来选择通信方式的(全工或半工),还有一位信息是用来设置数据字长的,以及其他用来设置通信波特率等的用来设置数据字长的,以及其他用来设置通信波特率等的各个控制位。各个控制位。数据寄存器数据寄存器(有些设备控制器又进一步设置为输入(有些设备控制器又进一步设置为输入数据寄存器和输出数据寄存器)则是

15、输入输出数据的暂存数据寄存器和输出数据寄存器)则是输入输出数据的暂存寄存器,用来实现设备与处理器之间的数据交换。寄存器,用来实现设备与处理器之间的数据交换。除了设备寄存器外,有些设备控制器还设有除了设备寄存器外,有些设备控制器还设有I/O数据数据缓冲区缓冲区,以提高与,以提高与CPU交互数据的效率。块设备控制器都交互数据的效率。块设备控制器都设有设有I/O数据缓冲区,而有些字符设备控制器也设有数据缓冲区,而有些字符设备控制器也设有I/O数据缓冲区,如视频控制器。数据缓冲区,如视频控制器。所有设备控制器的寄存器和所有设备控制器的寄存器和I/O数据缓冲区构成的地数据缓冲区构成的地址空间称作址空间称

16、作I/O地址空间地址空间(I/O空间),对于空间),对于I/O地址空地址空间的处理有三种方式:间的处理有三种方式:(1)独立编址的独立编址的I/O空间空间在这种方式下,在这种方式下,I/O空间与内存是完全脱离的。每个空间与内存是完全脱离的。每个设备寄存器被赋予一个设备寄存器被赋予一个I/O端口,这个端口就是一个端口,这个端口就是一个9位位或或16位的一个整数,它与内存地址没有任何关系。而正位的一个整数,它与内存地址没有任何关系。而正是由于端口与内存地址没有任何关系,或者说端口不是内是由于端口与内存地址没有任何关系,或者说端口不是内存地址,操作系统必须使用专门的输入输出特殊指令来进存地址,操作系

17、统必须使用专门的输入输出特殊指令来进行数据的读写。例如,许多指令集使用行数据的读写。例如,许多指令集使用INREG,PORT指令用来从设备读数据,而指令指令用来从设备读数据,而指令OUTPORT,REG则用来则用来将数据写入设备。将数据写入设备。这种方式的优点是这种方式的优点是I/O空间与内存分离,输入输出操空间与内存分离,输入输出操作不会影响或干扰内存操作,尤其是输入输出软件的可靠作不会影响或干扰内存操作,尤其是输入输出软件的可靠性通常不如内存管理软件,这种分离就显得更有价值。但性通常不如内存管理软件,这种分离就显得更有价值。但俗话说,成也萧何,败也萧何。这个优点恰恰也是其缺点。俗话说,成也

18、萧何,败也萧何。这个优点恰恰也是其缺点。由于由于I/O空间与内存分离,输入输出指令与内存访问指令空间与内存分离,输入输出指令与内存访问指令自然也不相同,输入输出所使用的自然也不相同,输入输出所使用的IN/OUT等指令都是低等指令都是低级的汇编指令。由于高级编程语言不支持这种低级指令,级的汇编指令。由于高级编程语言不支持这种低级指令,从而形成高级语言屏蔽的一个漏洞。程序员如果想要进行从而形成高级语言屏蔽的一个漏洞。程序员如果想要进行I/O,则必须使用低级语言,这将增大程序设计的难度和,则必须使用低级语言,这将增大程序设计的难度和可靠性。可靠性。(2)内存映射内存映射I/O空间空间顾名思义,就是将

19、顾名思义,就是将I/O空间映射到内存里面,与内存空间映射到内存里面,与内存统一编址。具体来说,就是系统在内存空间中划出一部分统一编址。具体来说,就是系统在内存空间中划出一部分来作为来作为I/O空间,即所有设备寄存器的端口和空间,即所有设备寄存器的端口和I/O数据缓数据缓冲区都是正规的内存地址空间的一部分,冲区都是正规的内存地址空间的一部分,CPU对这些空间对这些空间的读写与对普通内存的读写使用同样的指令,但引起的是的读写与对普通内存的读写使用同样的指令,但引起的是与外部设备间的数据传送。与外部设备间的数据传送。RISC(精简指令集)类(精简指令集)类CPU计算机都使用这种方式。计算机都使用这种

20、方式。这种方式虽然具有这种方式虽然具有I/O与内存访问统一的优点,但是与内存访问统一的优点,但是也存在一些问题。例如总线竞争,在单总线系统里,内存也存在一些问题。例如总线竞争,在单总线系统里,内存和外设都需要对总线上的数据进行监听,以确认命令是否和外设都需要对总线上的数据进行监听,以确认命令是否针对自己。这样将产生总线竞争而降低系统效率。针对自己。这样将产生总线竞争而降低系统效率。(3)混合混合I/O空间空间这是上述两种方式的组合:这是上述两种方式的组合:I/O数据缓冲区为内存映数据缓冲区为内存映射,而设备寄存器则独立于内存。例如采用射,而设备寄存器则独立于内存。例如采用Intel奔腾处奔腾处

21、理器的计算机系统,将理器的计算机系统,将640K到到1M的主存地址留给的主存地址留给I/O数数据缓冲区,而据缓冲区,而0到到64K的地址留给的地址留给I/O端口。端口。设备控制器与设备控制器与CPU通过总线来连接。总线是一种严格通过总线来连接。总线是一种严格定义的描述了线上传输数据的协议,凡是符合总线协议的定义的描述了线上传输数据的协议,凡是符合总线协议的各种设备都可以共同使用总线与各种设备都可以共同使用总线与CPU进行数据通信。进行数据通信。CPU内存内存字符设备字符设备控制器控制器字符设备字符设备控制器控制器DMA控制器控制器总线总线图图9-1单总线型单总线型I/O系统结构系统结构1.4I

22、/O控制方式控制方式I/O控制方式,即为实现数据的输入输出,控制方式,即为实现数据的输入输出,CPU与外与外设之间的交互方式。有三种基本的设之间的交互方式。有三种基本的I/O控制方式:控制方式:轮询(轮询(polling)方式)方式中断驱动方式中断驱动方式DMA方式方式采用何种采用何种I/O控制方式将直接影响设备管理的实施方控制方式将直接影响设备管理的实施方法及效率。法及效率。1.轮询方式轮询方式也称程序控制方式。它要求在程序中的也称程序控制方式。它要求在程序中的I/O指令后紧指令后紧接着安排循环查询指令,即在接着安排循环查询指令,即在CPU启动了设备控制器进启动了设备控制器进行数据的输入输出

23、后便以循环查询设备状态的方式来等待行数据的输入输出后便以循环查询设备状态的方式来等待I/O的完成。的完成。这种方式的特点是:这种方式的特点是:CPU处于主动地位,涉入处于主动地位,涉入I/O过过程的程度很深,而外设则处于被动地位,是一种同步工作程的程度很深,而外设则处于被动地位,是一种同步工作方式。方式。2.中断驱动方式中断驱动方式使用轮询方式时,使用轮询方式时,CPU需要读取设备状态寄存器以检需要读取设备状态寄存器以检测设备的当前状态,如果设备还未完成此次的测设备的当前状态,如果设备还未完成此次的I/O,则需,则需要要CPU不断地查询,由于不断地查询,由于CPU与外设的速度差距巨大,因与外设

24、的速度差距巨大,因此在此在I/O过程中,过程中,CPU绝大部分时间都处于繁忙等待状绝大部分时间都处于繁忙等待状态,态,CPU的效率十分低下。的效率十分低下。一种更为有效的方式是让设备处于某种主动地位,而一种更为有效的方式是让设备处于某种主动地位,而将将CPU从忙等待中解脱出来。在启动了某个外设后,立即从忙等待中解脱出来。在启动了某个外设后,立即阻塞现行进程,阻塞现行进程,CPU就可被调度转去执行其他进程而不是就可被调度转去执行其他进程而不是在原地踏步等待。当某个数据在原地踏步等待。当某个数据I/O任务完成后,由设备控任务完成后,由设备控制器向制器向CPU发出一个发出一个I/O中断,驱动中断,驱

25、动CPU中止现行进程的中止现行进程的执行而转去执行相应的中断处理程序,并唤醒等待该执行而转去执行相应的中断处理程序,并唤醒等待该I/O的进程。的进程。显然,这种显然,这种I/O控制方式可以大大提高控制方式可以大大提高CPU的效率,的效率,因此是设备与因此是设备与CPU进行交互的基本手段。进行交互的基本手段。3.DMA方式方式虽然中断驱动方式避免了轮询方式的忙等待现象,从虽然中断驱动方式避免了轮询方式的忙等待现象,从而大大提高了而大大提高了CPU的效率,但这主要是对慢速的字符设备的效率,但这主要是对慢速的字符设备而言的。而对于一次需要传输大量数据的高速块设备来说,而言的。而对于一次需要传输大量数

26、据的高速块设备来说,仍然不能令人满意。因为设备的数据寄存器的容量是有限仍然不能令人满意。因为设备的数据寄存器的容量是有限的,故一个的,故一个I/O任务中待传输的数据需要多次送往数据寄任务中待传输的数据需要多次送往数据寄存器,而每当设备传送完一次数据寄存器中的数据时,就存器,而每当设备传送完一次数据寄存器中的数据时,就会触发一次会触发一次I/O中断,因此在块设备的一次中断,因此在块设备的一次I/O任务的完任务的完成过程中,成过程中,CPU需要响应和处理许多次需要响应和处理许多次I/O中断,而每一中断,而每一次次I/O中断的响应和处理都需要付出不小的额外中断的响应和处理都需要付出不小的额外CPU开

27、销,开销,CPU的效率并未获得太多改善。的效率并未获得太多改善。人们发现,在设备与主机交换大量数据时,人们发现,在设备与主机交换大量数据时,CPU只是只是数据传输的一个中介,用功能强大的数据传输的一个中介,用功能强大的CPU长时间去充当长时间去充当一个传输数据的中介角色显然得不偿失。于是就设计出一一个传输数据的中介角色显然得不偿失。于是就设计出一种专门负责执行数据种专门负责执行数据I/O事务的处理器事务的处理器I/O处理器处理器,它比它比CPU要简单得多,但也便宜很多,它只能执行少量的要简单得多,但也便宜很多,它只能执行少量的指令,主要是数据指令,主要是数据I/O指令。指令。I/O处理器既可以

28、构建在设处理器既可以构建在设备控制器里面(这样的控制器称为备控制器里面(这样的控制器称为DMA控制器控制器),也可),也可以作为独立的实体挂在计算机主板上。最简单的以作为独立的实体挂在计算机主板上。最简单的I/O处理处理器在一个时间只能处理一个器在一个时间只能处理一个I/O,即不能并发,而复杂的,即不能并发,而复杂的I/O处理器可以同时处理多个处理器可以同时处理多个I/O,即它能够提供多个,即它能够提供多个I/O通道,每个通道可以对应一个通道,每个通道可以对应一个I/O设备。有了设备。有了I/O处处理器,就可以将理器,就可以将CPU从繁杂的从繁杂的I/O事务中解脱出来。事务中解脱出来。DMA(

29、DirectMemoryAccess,直接内存访问直接内存访问)方式就是使用方式就是使用I/O处理器的处理器的I/O控制方式,主要是针对块控制方式,主要是针对块设备的。设备的。DMA方式的目的当然是降低方式的目的当然是降低CPU响应中断的频率,使响应中断的频率,使得一个传输大量数据的得一个传输大量数据的I/O任务中需要响应许多次中断变任务中需要响应许多次中断变为只响应一次中断。为只响应一次中断。DMA方式在设备和内存之间建立了直方式在设备和内存之间建立了直接数据通路,即设备和内存之间可直接读写数据,且数据接数据通路,即设备和内存之间可直接读写数据,且数据传输的基本单位是数据块。一个传输的基本单

30、位是数据块。一个I/O任务中的所有数据是任务中的所有数据是在一个在一个DMA控制器的控制下完成传输的,且在整个传输过控制器的控制下完成传输的,且在整个传输过程中无需程中无需CPU的直接干预,直到该任务中的所有数据都传的直接干预,直到该任务中的所有数据都传输完后,输完后,DMA控制器才向控制器才向CPU发出一个发出一个I/O中断。中断。DMA控制器在普通设备控制器的基础上又增设了两个控制器在普通设备控制器的基础上又增设了两个寄存器:内存地址寄存器和数据计数寄存器。寄存器:内存地址寄存器和数据计数寄存器。DMA方式的方式的I/O过程如下:过程如下:CPU对对DMA控制器进行设置,告诉其存放控制器进

31、行设置,告诉其存放I/O数据数据的主存区地址和传输长度(分别送入内存地址寄存器和数的主存区地址和传输长度(分别送入内存地址寄存器和数据计数寄存器);据计数寄存器);启动启动DMA过程,将系统总线的使用权暂时移交给过程,将系统总线的使用权暂时移交给DMA控制器;控制器;DMA控制器进行数据传输,即接管对系统总线的控制器进行数据传输,即接管对系统总线的使用权(总线周期窃用),启动设备进行数据的使用权(总线周期窃用),启动设备进行数据的I/O,并,并进行数据传送个数的计数以及内存区地址的增量;进行数据传送个数的计数以及内存区地址的增量;当数据传送完毕,当数据传送完毕,DMA控制器向控制器向CPU发出

32、一个发出一个I/O中断,同时向中断,同时向CPU移交总线使用权。移交总线使用权。CPU响应中断,处理善后事宜。响应中断,处理善后事宜。DMA方式的优点是显著减少了中断次数和方式的优点是显著减少了中断次数和CPU的的I/O操作次数,从而大大减轻了操作次数,从而大大减轻了CPU的的I/O负担,加快了负担,加快了I/O的速度,不仅有利于的速度,不仅有利于CPU效率的发挥,而且能满足高速效率的发挥,而且能满足高速I/O设备对成组数据的高速传送要求。缺点自然是增加了设备对成组数据的高速传送要求。缺点自然是增加了成本和复杂性,而且由于成本和复杂性,而且由于DMA控制器需要与控制器需要与CPU竞争系竞争系统

33、总线,其效率的提高不如理论上的期望。统总线,其效率的提高不如理论上的期望。2设备管理概述设备管理概述设备管理的目标和功能设备管理的目标和功能设备控制块设备控制块I/O软件的分层结构软件的分层结构2.1设备管理的目标和功能设备管理的目标和功能1.设备管理的目标设备管理的目标设备管理是操作系统的重要组成部分,现代操作系统设备管理是操作系统的重要组成部分,现代操作系统的设备管理的基本目标除了公平和有效之外,另一目标是的设备管理的基本目标除了公平和有效之外,另一目标是把所有外设都抽象成文件,使得对物理特征各异的各种设把所有外设都抽象成文件,使得对物理特征各异的各种设备都可以以统一的文件方式进行操作。具

34、体地说,它必须备都可以以统一的文件方式进行操作。具体地说,它必须满足下述设计要求:满足下述设计要求:为用户提供方便、统一的设备使用界面。将复杂的为用户提供方便、统一的设备使用界面。将复杂的具体设备操作控制过程隐藏起来,通过统一的文件操作界具体设备操作控制过程隐藏起来,通过统一的文件操作界面进行面进行I/O操作,既方便了用户对设备的使用和满足用户操作,既方便了用户对设备的使用和满足用户使用外设的各种要求,又有利于将不同类型的设备配置在使用外设的各种要求,又有利于将不同类型的设备配置在系统中。系统中。提高外设的利用率,尽量提高并行程度。一方面,提高外设的利用率,尽量提高并行程度。一方面,用户使用外

35、设常有很大的随机性,设备管理应能根据当时用户使用外设常有很大的随机性,设备管理应能根据当时设备的忙闲状况进行分配,实现资源共享。另一方面,充设备的忙闲状况进行分配,实现资源共享。另一方面,充分发挥设备和主机的效率,有效地解决分发挥设备和主机的效率,有效地解决CPU与外设之间传与外设之间传输速率不协调的问题。另外,将独享设备尽量虚拟成共享输速率不协调的问题。另外,将独享设备尽量虚拟成共享设备,以增大资源利用率和降低死锁发生的概率。例如,设备,以增大资源利用率和降低死锁发生的概率。例如,将一台打印机虚拟成多台可共享的逻辑打印机。将一台打印机虚拟成多台可共享的逻辑打印机。用户程序独立于设备,即实现程

36、序与设备的无关性。用户程序独立于设备,即实现程序与设备的无关性。程序中可使用逻辑设备名或设备文件名来使用设备,它们程序中可使用逻辑设备名或设备文件名来使用设备,它们与实际使用的物理设备无关。当物理设备发生故障或有更与实际使用的物理设备无关。当物理设备发生故障或有更换时,用户程序不必修改,就可使用系统分配的其他相关换时,用户程序不必修改,就可使用系统分配的其他相关设备。设备。2.设备管理的功能设备管理的功能为了达到设备管理的目标,设备管理系统通常需要实为了达到设备管理的目标,设备管理系统通常需要实现如下基本功能:现如下基本功能:设备驱动和错误处理。主要是按照设备驱动和错误处理。主要是按照I/O控

37、制方式,控制方式,对不同的设备完成相应的对不同的设备完成相应的I/O中断、设备控制器操作、读中断、设备控制器操作、读写操作等物理写操作等物理I/O过程。针对不同的设备请求,通过设备过程。针对不同的设备请求,通过设备驱动程序完成对设备的直接控制。错误处理指的是对输入驱动程序完成对设备的直接控制。错误处理指的是对输入输出过程中产生的错误进行侦测与纠正,而且纠错应该在输出过程中产生的错误进行侦测与纠正,而且纠错应该在最靠近硬件的层面上进行。最靠近硬件的层面上进行。系统与设备间的协调。主要是速度上的协调,要解系统与设备间的协调。主要是速度上的协调,要解决快速的决快速的CPU与慢速的与慢速的I/O设备之

38、间的操作不匹配的问题,设备之间的操作不匹配的问题,通常采用通常采用I/O缓冲区的方式来解决这个矛盾。设备管缓冲区的方式来解决这个矛盾。设备管理要实现理要实现I/O缓冲区的建立、分配及回收。缓冲区的建立、分配及回收。设备调度与分配。即对等待共享设备设备调度与分配。即对等待共享设备I/O操作的进操作的进程进行调度,而对多个进程争用独占设备进行分配。程进行调度,而对多个进程争用独占设备进行分配。2.2设备控制块与设备文件设备控制块与设备文件就如用进程控制块(就如用进程控制块(PCB)来表示一个进程,用文件)来表示一个进程,用文件控制块(控制块(FCB)来表示一个文件一样,操作系统用设备控)来表示一个

39、文件一样,操作系统用设备控制块(制块(DCB)来抽象表示一个外部设备。操作系统在内核)来抽象表示一个外部设备。操作系统在内核空间中为每个设备建立一个设备控制块,用于描述本设备空间中为每个设备建立一个设备控制块,用于描述本设备的各种抽象属性及控制信息。的各种抽象属性及控制信息。DCB包含的内容如:包含的内容如:设备名(即设备文件名)设备名(即设备文件名)设备设备ID设备工作状态设备工作状态控制器端口控制器端口I/O缓冲区端口缓冲区端口I/O请求队列指针请求队列指针设备驱动程序指针设备驱动程序指针设备中断处理程序指针设备中断处理程序指针设备设备ID由主设备号和次设备号构成。主设备号用于标由主设备号

40、和次设备号构成。主设备号用于标识设备类型,如识设备类型,如IDE硬盘、硬盘、SCSI硬盘、显示器、打印机等,硬盘、显示器、打印机等,同一类设备使用的是同一个设备驱动程序。次设备号用于同一类设备使用的是同一个设备驱动程序。次设备号用于标识同类设备中的某个具体设备及其控制器,即同类设备标识同类设备中的某个具体设备及其控制器,即同类设备的序号。的序号。这里的这里的设备驱动程序指针设备驱动程序指针实际上是一个指针组,其中实际上是一个指针组,其中的每个指针指向一个设备操作函数。设备驱动程序容易被的每个指针指向一个设备操作函数。设备驱动程序容易被人误认为是一个完整的、能够独立运行的程序,其实不然,人误认为

41、是一个完整的、能够独立运行的程序,其实不然,它只是一组进程可调用的、能对设备实施它只是一组进程可调用的、能对设备实施I/O操作及控制操作及控制操作的内核功能函数,如操作的内核功能函数,如open();/打开打开close();/关闭关闭read();/读数据读数据write();/写数据写数据llseek();/移动读写指针移动读写指针readdir();/读目录读目录ioclt();/输入输出控制输入输出控制release();/释放缓存释放缓存当然,对于块设备和字符设备以及不同的块设备和不当然,对于块设备和字符设备以及不同的块设备和不同的字符设备,各自所含的功能函数的个数有所不同,同同的字

42、符设备,各自所含的功能函数的个数有所不同,同名函数具体执行的算法也是不同的,从而构成了不同设备名函数具体执行的算法也是不同的,从而构成了不同设备的驱动程序。设备驱动程序就是操作系统对设备的物理抽的驱动程序。设备驱动程序就是操作系统对设备的物理抽象(最底层抽象)。象(最底层抽象)。至于如何管理至于如何管理DCB则可以有不同的方法。自则可以有不同的方法。自UNIX后,后,现代操作系统普遍将现代操作系统普遍将DCB抽象成抽象成特殊文件特殊文件(即(即设备文件设备文件)。)。与数据文件一样,系统为每个设备文件建立一个与数据文件一样,系统为每个设备文件建立一个FCB,但,但设备文件的特殊之处在于,它并没

43、有数据文件意义上的文设备文件的特殊之处在于,它并没有数据文件意义上的文件体,即它并不在磁盘空间中占有一席之地,换言之,操件体,即它并不在磁盘空间中占有一席之地,换言之,操作系统并不给设备文件分配磁盘空间单元。那么,作系统并不给设备文件分配磁盘空间单元。那么,设备文设备文件的文件体是什么呢?就是件的文件体是什么呢?就是DCB!例如,例如,Linux是按如下方式处理的。是按如下方式处理的。Linux支持三种类型的硬件设备:字符设备、块设备支持三种类型的硬件设备:字符设备、块设备及网络设备。及网络设备。字符设备能够存储或传输不定长数据。某些字符设备字符设备能够存储或传输不定长数据。某些字符设备可以每

44、次传送一个字节,可以不经过缓冲区直接进行读可以每次传送一个字节,可以不经过缓冲区直接进行读写,如系统中的串行口写,如系统中的串行口/dev/dnao和和/dev/cnal,传送完一,传送完一个字节后产生一个个字节后产生一个I/O中断;另一些字符设备可以在设备中断;另一些字符设备可以在设备内缓存数据,因此可以一次传送完多个字节后产生一个内缓存数据,因此可以一次传送完多个字节后产生一个I/O中断。中断。块设备以块为单位传输数据。每个块设备都可建有一块设备以块为单位传输数据。每个块设备都可建有一个个I/O数据缓冲区队列,缓冲区的大小与块相等,因此,数据缓冲区队列,缓冲区的大小与块相等,因此,块设备一

45、次可传输一块或多块数据。块设备一次可传输一块或多块数据。网络设备也称包设备(如以太网卡),是通过网络设备也称包设备(如以太网卡),是通过BSDsocket和网络子系统访问,它负责数据包的发送和接收。和网络子系统访问,它负责数据包的发送和接收。网络协议(如网络协议(如TCP/IP)就建立在网络设备驱动程序之上。)就建立在网络设备驱动程序之上。与字符设备和块设备不同的是,网络设备传输的不是无结与字符设备和块设备不同的是,网络设备传输的不是无结构的流式数据,而是有结构的数据包。构的流式数据,而是有结构的数据包。针对这三类设备,针对这三类设备,Linux在内核空间中建立了三个在内核空间中建立了三个设设

46、备注册表备注册表(也称(也称设备开关表设备开关表),分别是:),分别是:块设备注册表块设备注册表、字符设备注册表、字符设备注册表、以及以及网络设备注册表网络设备注册表,它们均为线性,它们均为线性表(数组)表(数组)。每个已配置在系统中的外设都在相应的设。每个已配置在系统中的外设都在相应的设备注册表中占有一个表项。表项中包含了备注册表中占有一个表项。表项中包含了DCB中的核心中的核心内容,主要有:设备名(即设备文件名)、主设备号、内容,主要有:设备名(即设备文件名)、主设备号、驱动程序指针。驱动程序指针。DCB中的其他内容则被记录在中的其他内容则被记录在i节点中。节点中。i节点中也节点中也设置有

47、主设备号,通过它与相应的注册表表项连接了起设置有主设备号,通过它与相应的注册表表项连接了起来。从而在设备文件名与设备驱动程序之间建立起了一来。从而在设备文件名与设备驱动程序之间建立起了一条通路。见图条通路。见图9-2。i节点号节点号外设外设主设备号主设备号fops*read()*write()write()read()驱动程序驱动程序中处程序中处程序设备设备文件名文件名设备目录设备目录i节点节点设备注册表设备注册表图图9-2设备文件名到设备驱动程序的通路设备文件名到设备驱动程序的通路*intrrpt()2.3I/O软件的分层结构软件的分层结构设备管理软件,也称作设备管理软件,也称作I/O控制系

48、统(控制系统(IOCS)或)或I/O软件软件,是操作系统中非常繁杂的部分,通常按照,是操作系统中非常繁杂的部分,通常按照I/O功能进行分层,每一层提供独特的功能,并与相邻功能进行分层,每一层提供独特的功能,并与相邻的层面间设计有标准界面。当然,不同的操作系统这种的层面间设计有标准界面。当然,不同的操作系统这种分层是不同的,但一般都会有如下几层(从高到低)分层是不同的,但一般都会有如下几层(从高到低):用户级用户级I/O软件软件独立于设备的独立于设备的I/O软件软件设备驱动程序设备驱动程序设备中断处理程序设备中断处理程序 I/O 请求请求 (用户进程)(用户进程) I/O应答应答用户级用户级I/

49、O软件软件独立于设备的独立于设备的I/O软件软件设备驱动程序设备驱动程序硬硬 件件图图9-3I/O软件的分层结构软件的分层结构设备中断处理程序设备中断处理程序3设备中断处理程序设备中断处理程序由于大多数由于大多数I/O均为中断驱动,设备中断处理程序就均为中断驱动,设备中断处理程序就成为成为I/O软件的不可分割的组成部分。由于设备中断处理软件的不可分割的组成部分。由于设备中断处理程序直接与硬件相关,针对不同的外部设备,中断响应的程序直接与硬件相关,针对不同的外部设备,中断响应的处理也不尽相同,因此,设备中断处理程序处于处理也不尽相同,因此,设备中断处理程序处于I/O软件软件分层结构里面的最底层。

50、而为了降低操作系统的复杂性,分层结构里面的最底层。而为了降低操作系统的复杂性,设备中断处理程序的暴露窗口应该越小越好,与其打交道设备中断处理程序的暴露窗口应该越小越好,与其打交道的的OS部分也是越少越好。部分也是越少越好。而降低暴露窗口的最好办法是让设备驱动程序负责而降低暴露窗口的最好办法是让设备驱动程序负责I/O中断响应,即设备驱动程序启动中断响应,即设备驱动程序启动I/O操作后阻塞(通操作后阻塞(通过执行信号量的过执行信号量的P操作或等待信号),然后等待操作或等待信号),然后等待I/O中断。中断。当响应当响应I/O中断时,先执行设备中断处理程序,在设备中中断时,先执行设备中断处理程序,在设

51、备中断处理程序完成相关的处理后唤醒设备驱动程序(通过执断处理程序完成相关的处理后唤醒设备驱动程序(通过执行信号量的行信号量的V操作或发送信号)。操作或发送信号)。I/O中断处理过程大致有以下几个步骤:中断处理过程大致有以下几个步骤:1.关中断。关中断。CPU中的中断响应部件响应中断请求后立中的中断响应部件响应中断请求后立即关中断。即关中断。2.保存现行进程(被中断的进程)的执行现场(上下保存现行进程(被中断的进程)的执行现场(上下文)。文)。3.分析中断源(中断类型和发出中断的设备分析中断源(中断类型和发出中断的设备ID),切),切换到相应的设备中断处理程序。换到相应的设备中断处理程序。4.执

52、行设备中断处理程序。设备中断处理程序首先从执行设备中断处理程序。设备中断处理程序首先从设备控制器中读出设备状态,根据设备的当前状态作相应设备控制器中读出设备状态,根据设备的当前状态作相应处理;最后唤醒相应的设备驱动程序。处理;最后唤醒相应的设备驱动程序。5.恢复被中断进程的执行现场。恢复被中断进程的执行现场。6.开中断。开中断。4设备驱动程序设备驱动程序什么是设备驱动程序什么是设备驱动程序设备驱动程序的算法框架设备驱动程序的算法框架4.1什么是设备驱动程序什么是设备驱动程序设备驱动程序,顾名思义,就是直接驱动外部设备进设备驱动程序,顾名思义,就是直接驱动外部设备进行行I/O操作的软件。其作用就

53、是实现对外部设备的软件封操作的软件。其作用就是实现对外部设备的软件封装,隐藏外部设备的所有硬件细节,向用户提供一个统一装,隐藏外部设备的所有硬件细节,向用户提供一个统一的操作界面,的操作界面,是操作系统对外部设备的物理抽象是操作系统对外部设备的物理抽象。它属于。它属于与设备控制器直接联系的与设备控制器直接联系的IOCS部分,与具体的外设直接部分,与具体的外设直接相关,并针对每个特定的外设进行过优化。设备驱动程序相关,并针对每个特定的外设进行过优化。设备驱动程序通常由设备制造商提供,但归属于操作系统内核。正因为通常由设备制造商提供,但归属于操作系统内核。正因为这一属性,设备驱动程序是操作系统安全

54、的一大隐患。这一属性,设备驱动程序是操作系统安全的一大隐患。由于需要直接驱动设备的运行,设备驱动程序必须清由于需要直接驱动设备的运行,设备驱动程序必须清楚设备的所有物理细节。例如,磁盘驱动程序必须清楚磁楚设备的所有物理细节。例如,磁盘驱动程序必须清楚磁盘控制器设置有多少寄存器及其端口,了解磁盘拥有的柱盘控制器设置有多少寄存器及其端口,了解磁盘拥有的柱面数(磁道数)、磁头数(盘面数)、扇区数及扇区的容面数(磁道数)、磁头数(盘面数)、扇区数及扇区的容量、臂的移动、交叉访问系数、电机驱动器、磁头稳定时量、臂的移动、交叉访问系数、电机驱动器、磁头稳定时间以及所有保证磁盘正常工作的硬件机制。鼠标驱动程

55、序间以及所有保证磁盘正常工作的硬件机制。鼠标驱动程序自然需要具备辨认是哪个按键被按下的能力。自然需要具备辨认是哪个按键被按下的能力。每种设备配置有一个设备驱动程序,但一个设备驱动每种设备配置有一个设备驱动程序,但一个设备驱动程序并不是一个完整独立的程序,而是由一组相对独立的程序并不是一个完整独立的程序,而是由一组相对独立的设备操作函数(内核函数)所构成,其中的每个函数都可设备操作函数(内核函数)所构成,其中的每个函数都可被进程单独调用,实现相关的物理被进程单独调用,实现相关的物理I/O。在在UNIX中,设备驱动程序与整个中,设备驱动程序与整个OS内核编在一个二内核编在一个二进制文件里。如果要增

56、加新的设备驱动程序或者修改现有进制文件里。如果要增加新的设备驱动程序或者修改现有的设备驱动程序,则需要重新编译整个操作系统内核。的设备驱动程序,则需要重新编译整个操作系统内核。UNIX的这种做法主要是考虑到安全因素。由于用户无法的这种做法主要是考虑到安全因素。由于用户无法动态地装卸设备驱动程序,操作系统的安全性较高。不动态地装卸设备驱动程序,操作系统的安全性较高。不过,这种不能动态装卸的限制让人感觉十分不便,因此在过,这种不能动态装卸的限制让人感觉十分不便,因此在最新的最新的UNIX以及以及Linux版本里,建立了较复杂的可安装版本里,建立了较复杂的可安装内核模块机制,它可支持设备驱动程序的动

57、态装卸。内核模块机制,它可支持设备驱动程序的动态装卸。Windows操作系统从一开始(操作系统从一开始(NT开始)就支持设备开始)就支持设备驱动程序的动态装卸,这也是驱动程序的动态装卸,这也是Windows不如不如UNIX安全安全的一个原因。的一个原因。4.2设备驱动程序的算法框架设备驱动程序的算法框架(1)在收到一个在收到一个I/O请求后,设备驱动程序做的第一请求后,设备驱动程序做的第一件事是检查输入参数是否合法。如果不合法,则错误返回;件事是检查输入参数是否合法。如果不合法,则错误返回;否则,将否则,将I/O请求的抽象表示转换为设备控制器能够认识请求的抽象表示转换为设备控制器能够认识的具体

58、表示,例如,将线性的盘块号映射为磁道、磁头、的具体表示,例如,将线性的盘块号映射为磁道、磁头、扇区等。扇区等。(2)然后,设备驱动程序需要检查设备状态以确认设然后,设备驱动程序需要检查设备状态以确认设备是否处于闲置状态。如果设备正忙着,则将备是否处于闲置状态。如果设备正忙着,则将I/O请求送请求送入该设备的等待队列以待处理,并阻塞调用者;否则,若入该设备的等待队列以待处理,并阻塞调用者;否则,若设备空闲,就驱动设备运行并启动电机。设备空闲,就驱动设备运行并启动电机。(3)接着开始驱动真正的接着开始驱动真正的I/O操作。设备驱动程序通操作。设备驱动程序通过向设备寄存器里送入一系列的过向设备寄存器

59、里送入一系列的I/O控制命令来进行物理控制命令来进行物理的数据传输工作。如果需要,设备驱动程序通过自行阻塞的数据传输工作。如果需要,设备驱动程序通过自行阻塞来等待来等待I/O中断。中断。(4)在被中断处理程序唤醒后,读取设备状态寄存器在被中断处理程序唤醒后,读取设备状态寄存器中的信息以检查此中的信息以检查此I/O操作是否正确完成。如果正确完成操作是否正确完成。如果正确完成的话,进行的话,进行I/O操作的善后处理,例如,对于读操作,需操作的善后处理,例如,对于读操作,需要将要将I/O缓冲区中的数据传送到调用者指定的内存数据区缓冲区中的数据传送到调用者指定的内存数据区中,继续中,继续(5)。如果未

60、正确完成的话,检查错误状态,对。如果未正确完成的话,检查错误状态,对可修复性错误进行必要的出错处理,否则错误返回。可修复性错误进行必要的出错处理,否则错误返回。(5)如果该设备的等待队列非空,则唤醒等待的进程。如果该设备的等待队列非空,则唤醒等待的进程。(6)正常返回此正常返回此I/O请求的调用者。请求的调用者。5独立于设备的独立于设备的I/O软件软件统一界面统一界面I/O缓冲缓冲设备的安全保护设备的安全保护设备的分配与调度设备的分配与调度错误处理错误处理假脱机假脱机一般来说,设备驱动程序并不直接从用户程序处接收一般来说,设备驱动程序并不直接从用户程序处接收I/O请求,而是通过另外一层中介获得

61、用户请求。这层介请求,而是通过另外一层中介获得用户请求。这层介于设备驱动程序与用户程序之间的中介就是独立于设备的于设备驱动程序与用户程序之间的中介就是独立于设备的I/O软件。操作系统在设计时之所以有这层软件是因为软件。操作系统在设计时之所以有这层软件是因为I/O软件的一部分与设备的具体特性有关,一部分则与设备的软件的一部分与设备的具体特性有关,一部分则与设备的具体特性无关。而如果与设备无关,就可以将这部分抽象具体特性无关。而如果与设备无关,就可以将这部分抽象出来共用,并放置在设备驱动程序之上,为用户提供一个出来共用,并放置在设备驱动程序之上,为用户提供一个统一的统一的I/O界面。界面。这种对于

62、所有设备都一样的功能包括统一界面、这种对于所有设备都一样的功能包括统一界面、I/O缓冲、错误处理与报告、设备的分配与调度、假脱机等。缓冲、错误处理与报告、设备的分配与调度、假脱机等。有些操作系统把这层软件独立出来,并以系统进程方有些操作系统把这层软件独立出来,并以系统进程方式运行,称之为设备服务器(式运行,称之为设备服务器(server),如磁盘服务器、),如磁盘服务器、打印机服务器、终端服务器、网络服务器等。打印机服务器、终端服务器、网络服务器等。5.1统一界面统一界面独立于设备的独立于设备的I/O软件的一个重要目标是提供一个统软件的一个重要目标是提供一个统一的一的I/O界面,即让所有的界面

63、,即让所有的I/O设备看上去一样或相似。设备看上去一样或相似。使用的办法则是将设备驱动界面标准化。使用的办法则是将设备驱动界面标准化。UNIX操作系统开创的将操作系统开创的将I/O设备抽象成特殊文件设备抽象成特殊文件(设备文件),从而把所有的设备都纳入了文件体系的做(设备文件),从而把所有的设备都纳入了文件体系的做法是当今最流行的法是当今最流行的I/O统一界面模式。在这种模式下,对统一界面模式。在这种模式下,对物理特征各异的各种设备都以统一的文件方式进行管理和物理特征各异的各种设备都以统一的文件方式进行管理和使用。使用。与数据文件一样,系统也为每个设备文件建立一个与数据文件一样,系统也为每个设

64、备文件建立一个i节点,用于实现对设备的管理。不同的是,数据文件及其节点,用于实现对设备的管理。不同的是,数据文件及其FCB是对外存空间的抽象,设备文件及其是对外存空间的抽象,设备文件及其DCB则是对设备则是对设备驱动程序的抽象,而设备驱动程序又是对物理设备(设驱动程序的抽象,而设备驱动程序又是对物理设备(设备控制器)的抽象。备控制器)的抽象。这种模式为设备的使用提供了统一的界面,即设备可这种模式为设备的使用提供了统一的界面,即设备可以以文件的形式进行操作,对所有的设备都可以使用一组以以文件的形式进行操作,对所有的设备都可以使用一组同名的文件操作函数。例如:同名的文件操作函数。例如:系统调用系统

65、调用open():打开设备文件,即建立起用户进:打开设备文件,即建立起用户进程与目标设备驱动程序的连接,其返回的文件描述符就是程与目标设备驱动程序的连接,其返回的文件描述符就是目标设备对应的设备注册表表项的序号;目标设备对应的设备注册表表项的序号;系统调用系统调用write():写设备文件,即在目标设备上输:写设备文件,即在目标设备上输出数据;出数据;系统调用系统调用read():读设备文件,即从目标设备上输:读设备文件,即从目标设备上输入数据;入数据;系统调用系统调用close():关闭设备文件,即断开用户进程:关闭设备文件,即断开用户进程与目标设备的连接。与目标设备的连接。对设备进行上述文

66、件操作,其实就是在调用设备的驱对设备进行上述文件操作,其实就是在调用设备的驱动程序。动程序。5.2I/O缓冲缓冲缓冲是几乎所有缓冲是几乎所有I/O设备都需要的一种功能。主要出设备都需要的一种功能。主要出于以下原因:于以下原因:字符设备的数据传输速度与字符设备的数据传输速度与CPU的处理速度严重不的处理速度严重不匹配,引入缓冲,可缓解它们之间的速度矛盾:一可提高匹配,引入缓冲,可缓解它们之间的速度矛盾:一可提高数据传输速率,因为快速的数据传输速率,因为快速的CPU不必等待慢速的字符设备;不必等待慢速的字符设备;二可防止溢出,因为字符设备来不及处理的数据可以存放二可防止溢出,因为字符设备来不及处理

67、的数据可以存放在缓冲区内而不会丢失。在缓冲区内而不会丢失。对于块设备而言,数据是以整块进行读写的,而用对于块设备而言,数据是以整块进行读写的,而用户进程实际上可能只需要读取某块中的一部分数据或向块户进程实际上可能只需要读取某块中的一部分数据或向块中写入部分数据,利用缓冲区便可以进行正确处理。另外,中写入部分数据,利用缓冲区便可以进行正确处理。另外,还便于多进程共享缓冲区中的数据,减少块设备的启动次还便于多进程共享缓冲区中的数据,减少块设备的启动次数数与某设备有关的若干内存缓冲区形成一个设备与某设备有关的若干内存缓冲区形成一个设备缓冲队列。当一进程对某设备提出缓冲队列。当一进程对某设备提出I/O

68、请求时,首先在该请求时,首先在该设备的设备缓冲队列中查寻所需传输的数据是否已在缓冲设备的设备缓冲队列中查寻所需传输的数据是否已在缓冲区了,若已在缓冲区中,则可以立即共享,否则为它分配区了,若已在缓冲区中,则可以立即共享,否则为它分配一个空闲缓冲区,再启动块设备读写。一个空闲缓冲区,再启动块设备读写。当然,缓冲也有缺点,就是降低了数据传输的时效性。当然,缓冲也有缺点,就是降低了数据传输的时效性。因为数据层层缓冲处理是需要时间的。如果一个系统的时因为数据层层缓冲处理是需要时间的。如果一个系统的时效性非常重要,则最好不要使用缓冲,而是在通信双方之效性非常重要,则最好不要使用缓冲,而是在通信双方之间创

69、建一个没有缓冲的直接通道,这样,数据从一方发出间创建一个没有缓冲的直接通道,这样,数据从一方发出后,另一方将马上收到。例如,后,另一方将马上收到。例如,Mach操作系统的操作系统的x-kernel就提供此种无缓冲的直接数据通道。自然,这种做法是可就提供此种无缓冲的直接数据通道。自然,这种做法是可能比较危险的,必须非常小心来避免数据溢出和丢失。能比较危险的,必须非常小心来避免数据溢出和丢失。5.3设备的安全保护设备的安全保护设备的安全保护是指核查用户对所请求设备的访问权设备的安全保护是指核查用户对所请求设备的访问权限,以实现对设备的保护。限,以实现对设备的保护。在在UNIX/Linux中对设备提

70、供的安全保护机制同普通中对设备提供的安全保护机制同普通文件和目录文件一致,采用文件和目录文件一致,采用rwx权限机制,由系统管理员权限机制,由系统管理员(超级用户)为每台(超级用户)为每台I/O设备设置合理的访问权限。设备设置合理的访问权限。5.4设备的分配与调度设备的分配与调度设备的分配针对独占设备而言。独占设备在某一时刻设备的分配针对独占设备而言。独占设备在某一时刻只能由一个进程使用,这就要求设备服务器根据对设备的只能由一个进程使用,这就要求设备服务器根据对设备的使用要求和忙闲状态来决定是接受还是拒绝请求。设备分使用要求和忙闲状态来决定是接受还是拒绝请求。设备分配的基本原则是:既要充分发挥

71、设备的使用效率,又应避配的基本原则是:既要充分发挥设备的使用效率,又应避免由于不合理的分配导致进程死锁,还要实现设备的独立免由于不合理的分配导致进程死锁,还要实现设备的独立性性即用户程序提供的是逻辑设备名(设备文件名),即用户程序提供的是逻辑设备名(设备文件名),而设备分配时需将逻辑设备名转换成设备而设备分配时需将逻辑设备名转换成设备ID(主设备号(主设备号次设备号)后,再根据设备次设备号)后,再根据设备ID进行分配。进行分配。对独占设备的分配回收实际上属于对临界资源的管理。对独占设备的分配回收实际上属于对临界资源的管理。设备的调度则是针对共享设备。当服务器同时接收到设备的调度则是针对共享设备

72、。当服务器同时接收到多个用户进程的请求时,通过某种算法决定对这些请求如多个用户进程的请求时,通过某种算法决定对这些请求如何排队,以何种次序响应它们。何排队,以何种次序响应它们。磁盘调度是典型的设备调度问题。磁盘调度是典型的设备调度问题。1.磁盘驱动器的访问速度磁盘驱动器的访问速度磁盘在读写数据时的访问速度称为磁盘的动态属性。磁盘在读写数据时的访问速度称为磁盘的动态属性。磁盘是一种高速旋转设备,一旦加电,盘片就绕同心轴不磁盘是一种高速旋转设备,一旦加电,盘片就绕同心轴不停地旋转。对于移动头磁盘,访问一个盘块时一般要经过停地旋转。对于移动头磁盘,访问一个盘块时一般要经过三个操作:三个操作:移动磁头

73、臂定位磁道移动磁头臂定位磁道盘面旋转定位扇区盘面旋转定位扇区读写读写一次访盘的时间由这三个操作的时间组成,分别称作:一次访盘的时间由这三个操作的时间组成,分别称作:寻道时间、旋转延迟时间、传输时间。寻道时间、旋转延迟时间、传输时间。(1)寻道时间寻道时间指的是通过移动磁头臂把磁头从当前磁道移动到目指的是通过移动磁头臂把磁头从当前磁道移动到目标磁道所需要花费的平均时间,记为标磁道所需要花费的平均时间,记为Ts。寻道时间通常。寻道时间通常在在820ms范围内,并且在近年来没有多少变化。范围内,并且在近年来没有多少变化。(2)旋转延迟时间旋转延迟时间指的是目标扇区旋转到磁头位置所花费的平均时间。指的

74、是目标扇区旋转到磁头位置所花费的平均时间。对于当前的硬盘,旋转速度在每分钟对于当前的硬盘,旋转速度在每分钟3500到到10000转转(r/m),因此旋转延迟时间的范围在),因此旋转延迟时间的范围在38.57ms。(3)数据传输时间数据传输时间这是把数据写入盘块或从盘块中读出数据所需花费这是把数据写入盘块或从盘块中读出数据所需花费的时间。它主要取决于磁盘的转速,有的时间。它主要取决于磁盘的转速,有Tt=b/(rN)其中,其中,Tt是是传输时间,传输时间,b是要传输的字节数,是要传输的字节数,N是一个是一个磁道所含的字节数,磁道所含的字节数,r是转速(转秒)。是转速(转秒)。当前的磁盘传输速率已达

75、当前的磁盘传输速率已达20MB/s以上,传输以上,传输1MB不大于不大于50ms,传输传输1KB不大于不大于0.05ms。因此,一个盘块的平均访问时间因此,一个盘块的平均访问时间Ta可表示成:可表示成:Ta=Ts+1/(2r)+b/(rN)其中,传输时间只占了很小的比例,花费的时间主要其中,传输时间只占了很小的比例,花费的时间主要是寻道时间和旋转延迟时间,尤其是寻道时间占的比是寻道时间和旋转延迟时间,尤其是寻道时间占的比例最大,因而它对磁盘例最大,因而它对磁盘I/O性能的影响也最大。性能的影响也最大。2.磁盘调度算法磁盘调度算法正如前面所述,影响磁盘读写时间的因素有三个:正如前面所述,影响磁盘

76、读写时间的因素有三个:寻道时间、旋转延迟时间及数据传输时间。在这三者中,寻道时间、旋转延迟时间及数据传输时间。在这三者中,前二者为机械运动,数据传输主要是电子运动。显然机前二者为机械运动,数据传输主要是电子运动。显然机械运动的速度要远低于电子运动的速度,而在两个机械械运动的速度要远低于电子运动的速度,而在两个机械运动部分,寻道时间又较大。因此在上述三个因素中,运动部分,寻道时间又较大。因此在上述三个因素中,寻道时间居于支配地位。为了提高磁盘的读写效率,需寻道时间居于支配地位。为了提高磁盘的读写效率,需要优化寻道时间,实现的手段则是磁盘调度。磁盘调度要优化寻道时间,实现的手段则是磁盘调度。磁盘调

77、度的算法主要有以下几种:的算法主要有以下几种:先来先服务先来先服务(FCFS:FirstComeFirstServe)最短任务优先最短任务优先(STF:ShortestTaskFirst)最短寻道时间优先最短寻道时间优先(SSTF:ShortestSeekTimeFirst)电梯调度电梯调度(ES:ElevatorScheduling)先来先服务算法先来先服务算法FCFS是一种自然公平的调度策略,先来后到,谁也没是一种自然公平的调度策略,先来后到,谁也没有特权。即该算法不考虑寻道优化问题,按磁盘访问请求有特权。即该算法不考虑寻道优化问题,按磁盘访问请求的先后次序启动磁盘驱动器,而不考虑它们要访

78、问的物理的先后次序启动磁盘驱动器,而不考虑它们要访问的物理位置。位置。例如,有一个磁盘访问请求队列,请求的盘块号顺序例如,有一个磁盘访问请求队列,请求的盘块号顺序为:为:98,183,37,122,14,124,65,67。如果磁。如果磁头的当前位置位于头的当前位置位于53,那么,那么FCFS算法将从算法将从53移到移到98,接着再到接着再到183,37,122,14,124,65,最后到,最后到67,总的寻道道数(磁头移动距离)为:总的寻道道数(磁头移动距离)为:48+85+146+85+108+110+59+2=640平均寻道长度平均寻道长度=640/8=80014375365679812

79、2124183199图图9-4FCFS算法示例算法示例458514685108110592最短任务优先算法最短任务优先算法最短任务优先就是谁的磁盘读写数据量最少,谁就优最短任务优先就是谁的磁盘读写数据量最少,谁就优先。由于磁盘的访问时间主要取决于寻道时间和旋转延迟先。由于磁盘的访问时间主要取决于寻道时间和旋转延迟时间,读写的数据量对整个磁盘读写的影响并不大,因此,时间,读写的数据量对整个磁盘读写的影响并不大,因此,此种策略意义不大。此种策略意义不大。最短寻道时间优先算法最短寻道时间优先算法SSTF算法以寻道优化为出发点,它优先选择所访问算法以寻道优化为出发点,它优先选择所访问的磁道距离磁头位置

80、最近的那个请求,避免了磁头臂作大的磁道距离磁头位置最近的那个请求,避免了磁头臂作大幅度的来回摆动,从而改善了对磁盘访问请求的总的平均幅度的来回摆动,从而改善了对磁盘访问请求的总的平均均响应时间。均响应时间。但其缺点是对磁盘访问请求的服务机会不是均等的。但其缺点是对磁盘访问请求的服务机会不是均等的。一般来说,对中间磁道的请求能及时响应,而对内外两侧一般来说,对中间磁道的请求能及时响应,而对内外两侧磁道的请求随偏离中间磁道的距离越远而响应越慢,因而磁道的请求随偏离中间磁道的距离越远而响应越慢,因而可能使一些请求在较长的时间内得不到响应。可能使一些请求在较长的时间内得不到响应。以上例的请求队列为例,

81、采用以上例的请求队列为例,采用SSTF算法,总的寻道算法,总的寻道道数道数236,平均寻道长度,平均寻道长度=236/8=29.5。显然,比。显然,比FCFS要高效得多。要高效得多。0143753656798122124183199图图9-5SSTF算法示例算法示例电梯算法电梯算法这也是寻求寻道优化的算法,其目的是为了克服这也是寻求寻道优化的算法,其目的是为了克服SSTF算法的缺点。算法的缺点。SSTF只考虑访问磁道与磁头当前位置的距离,只考虑访问磁道与磁头当前位置的距离,而不考虑磁头臂的移动方向。而不考虑磁头臂的移动方向。ES算法则既考虑距离,也考算法则既考虑距离,也考虑方向,且以方向为先。

82、因其类似于罐式电梯的运行模式,虑方向,且以方向为先。因其类似于罐式电梯的运行模式,故被形象地称为故被形象地称为“电梯算法电梯算法”。ES首先考虑与磁头臂当前移动方向一致的访问请求,首先考虑与磁头臂当前移动方向一致的访问请求,然后优先选择访问磁道与磁头当前位置距离最近者。也就然后优先选择访问磁道与磁头当前位置距离最近者。也就是说,如果磁头臂目前向内移动,那么下一个服务对象应是说,如果磁头臂目前向内移动,那么下一个服务对象应该是在磁头当前位置以内的磁道上的各访问请求中之最近该是在磁头当前位置以内的磁道上的各访问请求中之最近者。这样依次地进行服务,直到没有更内侧的访问请求,者。这样依次地进行服务,直

83、到没有更内侧的访问请求,磁头臂才改变移动方向转而向外侧移动,并依次服务于此磁头臂才改变移动方向转而向外侧移动,并依次服务于此方向上的请求。如此由内向外,由外向内,反复扫描方向上的请求。如此由内向外,由外向内,反复扫描并依次服务,从而基本克服了并依次服务,从而基本克服了SSTF算法的服务集中于算法的服务集中于中间磁道而怠慢两侧磁道的情况,进一步改善了平均中间磁道而怠慢两侧磁道的情况,进一步改善了平均响应时间。响应时间。注意:注意:0号磁道是最外磁道!号磁道是最外磁道!仍以上例的请求队列为例,采用仍以上例的请求队列为例,采用ES算法,这里假算法,这里假定磁头的当前方向是外向的,则有:定磁头的当前方

84、向是外向的,则有:总的寻道道数总的寻道道数208平均寻道长度平均寻道长度=208/8=260143753656798122124183199图图9-6ES算法示例算法示例5.5错误的处理与报告错误的处理与报告在在I/O操作中,错误是难免的,进行错误处理是件十操作中,错误是难免的,进行错误处理是件十分重要的事情。分重要的事情。如何进行错误处理取决于错误的类型。一般来说,如何进行错误处理取决于错误的类型。一般来说,I/O过程中的错误可以分为程序性错误和真正的过程中的错误可以分为程序性错误和真正的I/O错误。错误。程序性错误就是用户要求设备做一件该设备无法做到的事程序性错误就是用户要求设备做一件该设

85、备无法做到的事情,例如从输出设备上读数据。真正的情,例如从输出设备上读数据。真正的I/O错误当然是指错误当然是指数据传输过程中发生的错误,例如数据读错了,或者磁盘数据传输过程中发生的错误,例如数据读错了,或者磁盘的盘片损坏了等。的盘片损坏了等。对于程序性错误来说,对于程序性错误来说,I/O软件除了将错误报告给用软件除了将错误报告给用户外,似乎不能做任何别的事情了。但如果是户外,似乎不能做任何别的事情了。但如果是I/O错误,错误,那那I/O软件则需要进行适当的纠错操作,看能否消除错误,软件则需要进行适当的纠错操作,看能否消除错误,如果不能消除错误,可以询问调用者如何处理,或者干脆如果不能消除错误

86、,可以询问调用者如何处理,或者干脆返回一个错误代码给用户。返回一个错误代码给用户。5.6假脱机假脱机虚拟性是操作系统的基本特性之一。如果说,可以通虚拟性是操作系统的基本特性之一。如果说,可以通过多道程序技术将一台物理过多道程序技术将一台物理CPU虚拟为多台逻辑虚拟为多台逻辑CPU,从,从而允许多个用户共享一台物理而允许多个用户共享一台物理CPU。那么,通过虚拟设备。那么,通过虚拟设备技术便可以将一台物理的独占设备虚拟为多台逻辑的独占技术便可以将一台物理的独占设备虚拟为多台逻辑的独占设备,同样允许多个用户共享一台物理的独占设备。设备,同样允许多个用户共享一台物理的独占设备。对于动态分配的独占设备

87、存在着这样一个问题:当一对于动态分配的独占设备存在着这样一个问题:当一个进程正在使用某台这类设备进行一次数据量较大的传输个进程正在使用某台这类设备进行一次数据量较大的传输时,此时其他需要访问该设备的进程就要等待较长时间,时,此时其他需要访问该设备的进程就要等待较长时间,从而降低了系统的并发能力和运行效率。从而降低了系统的并发能力和运行效率。SPOOLing(外部设备联机并行操作)技术,也称假(外部设备联机并行操作)技术,也称假脱机技术,是针对上述问题提出的且被广泛应用的一种虚脱机技术,是针对上述问题提出的且被广泛应用的一种虚拟设备管理技术。其目标是使一台动态分配的独占设备变拟设备管理技术。其目

88、标是使一台动态分配的独占设备变为多台可并行使用的虚拟的共享设备,即把串行使用的独为多台可并行使用的虚拟的共享设备,即把串行使用的独占设备变成逻辑上可并行使用的共享设备。占设备变成逻辑上可并行使用的共享设备。打印机是采用打印机是采用SPOOLing技术的典型设备,下面是虚技术的典型设备,下面是虚拟打印机的实现原理。拟打印机的实现原理。1.服务器建立一个虚拟打印机文件表。服务器建立一个虚拟打印机文件表。2.服务器进程包含有三个线程:分配线程、预输出线服务器进程包含有三个线程:分配线程、预输出线程和打印机输出线程。程和打印机输出线程。3.分配线程的功能是为用户进程的分配线程的功能是为用户进程的ope

89、n请求连接一请求连接一台物理打印机。台物理打印机。4.预输出线程完成如下功能:预输出线程完成如下功能:每当接受用户进程的一个每当接受用户进程的一个write请求时,并不直接驱请求时,并不直接驱动打印机,而是执行如下操作:动打印机,而是执行如下操作:为该请求建立一个虚拟打印机文件为该请求建立一个虚拟打印机文件磁盘文件,把磁盘文件,把需要输出的数据写入该文件中。并把该文件的需要输出的数据写入该文件中。并把该文件的fd登录在虚登录在虚拟打印机文件表。拟打印机文件表。至此,用户进程的一次至此,用户进程的一次write请求在逻辑上就算完成请求在逻辑上就算完成了,立即唤醒该进程让其继续工作。实际上,用户的

90、输出了,立即唤醒该进程让其继续工作。实际上,用户的输出数据还未真正送往指定的打印机,而是先暂时存进了磁盘。数据还未真正送往指定的打印机,而是先暂时存进了磁盘。5.打印机输出线程完成如下功能:打印机输出线程完成如下功能:循环查询虚拟打印机文件表,只要有虚拟打印机文件,循环查询虚拟打印机文件表,只要有虚拟打印机文件,便执行下列操作:便执行下列操作:将一个虚拟打印机文件读入该设备的内存缓冲区;将一个虚拟打印机文件读入该设备的内存缓冲区;调用打印机驱动程序完成缓冲区数据的输入输出。调用打印机驱动程序完成缓冲区数据的输入输出。最后,在虚拟设备文件表中删除该虚拟文件。最后,在虚拟设备文件表中删除该虚拟文件

91、。数数据据磁磁盘盘打印机打印机缓冲区缓冲区打印机打印机预输出线程预输出线程虚拟打印机虚拟打印机文件表文件表打印机打印机输出线程输出线程用户进程用户进程数数据据数据数据图图9-7打印机的打印机的SPOOLing过程过程SPOOLing技术的特点:技术的特点:对于用户进程的每一次服务请求,服务器并不立即对于用户进程的每一次服务请求,服务器并不立即驱动所要求的独占设备,而是分配给它一台虚拟设备,这驱动所要求的独占设备,而是分配给它一台虚拟设备,这实际上是一个磁盘文件实际上是一个磁盘文件这对用户进程是透明的。这对用户进程是透明的。用户进程当前使用的是虚拟设备,而非直接使用物用户进程当前使用的是虚拟设备

92、,而非直接使用物理设备,所以任何一个用户进程对这类独占设备的一次服理设备,所以任何一个用户进程对这类独占设备的一次服务请求都会被及时响应,而无延迟。此外,由于内存与虚务请求都会被及时响应,而无延迟。此外,由于内存与虚拟设备之间的数据交换速度要远快于内存与物理独占设备拟设备之间的数据交换速度要远快于内存与物理独占设备(字符设备)之间的数据交换速度,故大大减少了用户进(字符设备)之间的数据交换速度,故大大减少了用户进程的等待时间。程的等待时间。6用户级用户级I/O软件软件用户级用户级I/O软件处于软件处于IOCS的最高层,它们运行在用的最高层,它们运行在用户程序空间中,即在用户程序中可直接使用它们

93、向操作系户程序空间中,即在用户程序中可直接使用它们向操作系统提出统提出I/O请求,完成所需要的数据请求,完成所需要的数据I/O工作。这层软件工作。这层软件的主要内容就是的主要内容就是I/O库函数,由高级程序设计语言提供。库函数,由高级程序设计语言提供。例如,在用户源程序里可使用如下的语句进行数据的例如,在用户源程序里可使用如下的语句进行数据的输出:输出:wtite(fd,buffer,nbytes);该语句的一般语义是:将内存区该语句的一般语义是:将内存区buffer中的长度为中的长度为nbytes的数据流写到文件的数据流写到文件fd中。文件描述字中。文件描述字fd代表的是代表的是某个已打开的

94、数据文件(如盘文件)或设备文件。该语句某个已打开的数据文件(如盘文件)或设备文件。该语句中的中的write被很多人误认为是操作系统的系统调用,而实被很多人误认为是操作系统的系统调用,而实际上并不是,该语句调用的是际上并不是,该语句调用的是I/O库函数库函数write()。I/O库函数将操作系统的系统调用包裹了起来,负责库函数将操作系统的系统调用包裹了起来,负责I/O的预处理工作,如设备的预处理工作,如设备i节点的检索及连接,组织系节点的检索及连接,组织系统调用参数,然后调用相应的系统调用命令向下层的统调用参数,然后调用相应的系统调用命令向下层的I/O软件(独立于设备的软件(独立于设备的I/O软

95、件)请求软件)请求I/O服务。在用户源服务。在用户源程序连接编译时,程序连接编译时,I/O库函数被链接在用户程序的代码中,库函数被链接在用户程序的代码中,编译后它会变成一系列相关的指令,来完成系统调用过程。编译后它会变成一系列相关的指令,来完成系统调用过程。I/O库函数为用户程序提供了统一的库函数为用户程序提供了统一的I/O设备的使用设备的使用界面。例如,对磁盘和打印机的写操作使用的都是界面。例如,对磁盘和打印机的写操作使用的都是write()库函数,虽然这两个设备的物理性能完全不同,数据传库函数,虽然这两个设备的物理性能完全不同,数据传输速度有很大差异,对应完全不同的设备驱动程序,使用输速度有很大差异,对应完全不同的设备驱动程序,使用的系统调用命令当然也不同,但的系统调用命令当然也不同,但write()库函数库函数完全隐藏了具体的系统调用细节,向用户程序提供了简单完全隐藏了具体的系统调用细节,向用户程序提供了简单一致的输出请求手段。一致的输出请求手段。除此之外,属于用户级除此之外,属于用户级I/O软件里面的软件里面的I/O功能还有功能还有I/O数据的格式化、数据转换等。数据的格式化、数据转换等。【作业作业】

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号