操作系统原理设备管理_第1页
操作系统原理设备管理_第2页
操作系统原理设备管理_第3页
操作系统原理设备管理_第4页
操作系统原理设备管理_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、unit 9 操作系统原理操作系统原理冯耀霖冯耀霖 设备,也称外部设备或设备,也称外部设备或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)用户设备是指系统设备之外的用户设备是指系统设备之外的非标准设备非标准设备,在,在 安装操作系统时没有配置,而由用户根据需要自己安装配安装操作系统时没有配置,而由用户根据需要自己安装配 置。如

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

9、围从每秒十个字节到几兆个字节。表9-1给出的是较给出的是较 为常见的一些设备的数据传输率。为常见的一些设备的数据传输率。 输入输出设备输入输出设备数据传输速率数据传输速率 键盘键盘10b 鼠标鼠标100b 56kmodem7kb 双向双向isdn线路线路16kb 激光打印机激光打印机100kb 扫描仪扫描仪400kb 以太网以太网1.25mb usb1.5mb ide磁盘磁盘5mb 40x cd-rom6mb 表表9-1 外设的数据传输率外设的数据传输率 输入输出设备输入输出设备数据传输速率数据传输速率 快速以太网快速以太网12.5mb isa总线总线16.7mb eide磁盘磁盘16.7mb

10、 xga监视器监视器60mb sonet oc-1278mb scsi ultra磁盘磁盘80mb 千兆级以太网千兆级以太网125mb ultrium磁带磁带320mb pci总线总线528mb sun千兆平面千兆平面xb backplane20gb 1.3 设备控制器设备控制器 从设备的物理结构上来看,外设可能是电器的或机械从设备的物理结构上来看,外设可能是电器的或机械 的,甚至是机、电、光多种技术结合的。但不管其主体是的,甚至是机、电、光多种技术结合的。但不管其主体是 哪种构成,只要它要与电子计算机相连接,那它就必须有哪种构成,只要它要与电子计算机相连接,那它就必须有 电子器件部分。这也就

11、是说,计算机的外设必须由两部分电子器件部分。这也就是说,计算机的外设必须由两部分 组成:一是外设的执行部分(电气的、机械或机、电、光组成:一是外设的执行部分(电气的、机械或机、电、光 多种技术结合的),也称设备主体;二是外设与系统的接多种技术结合的),也称设备主体;二是外设与系统的接 口部分,而且这部分一定是电子部分,因为计算机系统必口部分,而且这部分一定是电子部分,因为计算机系统必 须通过这些接口来对外设进行控制和数据传输。须通过这些接口来对外设进行控制和数据传输。 设备控制器(也称设备控制器(也称适配器适配器)是外设与总线之间的一组)是外设与总线之间的一组 电子器件。例如,串行口控制器就是

12、一种简单的设备控制电子器件。例如,串行口控制器就是一种简单的设备控制 器,它是计算机上用来控制串行信号的一块芯片或一个芯器,它是计算机上用来控制串行信号的一块芯片或一个芯 片组。再如贴在磁盘侧面的电子线路板也是一种设备控制片组。再如贴在磁盘侧面的电子线路板也是一种设备控制 器器磁盘控制器,磁盘控制器,cpu就是通过这个控制器来对磁盘进就是通过这个控制器来对磁盘进 行各种操作的。行各种操作的。 为使处理器可以像访问内存那样来访问外设,计算机为使处理器可以像访问内存那样来访问外设,计算机 系统必须提供一些互不冲突、能按地址访问、并能以数字系统必须提供一些互不冲突、能按地址访问、并能以数字 信号进行

13、数据传送的设备寄存器。通常每个设备都有三类信号进行数据传送的设备寄存器。通常每个设备都有三类 设备寄存器:状态寄存器、控制寄存器、数据寄存器。这设备寄存器:状态寄存器、控制寄存器、数据寄存器。这 些寄存器都有自己的专有地址,称做些寄存器都有自己的专有地址,称做端口端口(port)。这些)。这些 寄存器的作用分别为:寄存器的作用分别为: 状态寄存器状态寄存器用来由控制器向处理器提供设备的当前用来由控制器向处理器提供设备的当前 工作状态。例如,设备的当前操作是否执行完毕,数据是工作状态。例如,设备的当前操作是否执行完毕,数据是 否可以被读出或写入,以及各种错误提示等。这些信息通否可以被读出或写入,

14、以及各种错误提示等。这些信息通 常都用字位(常都用字位(bit)来表示。)来表示。 控制寄存器控制寄存器主要用来由处理器向控制器传送操作命主要用来由处理器向控制器传送操作命 令。还用来管理外设工作模式,即在设备初始化时或运行令。还用来管理外设工作模式,即在设备初始化时或运行 时,处理器可以通过向控制寄存器写入命令来改变设备工时,处理器可以通过向控制寄存器写入命令来改变设备工 作模式或设备状态。例如,在串口寄存器中专有一位信息作模式或设备状态。例如,在串口寄存器中专有一位信息 是用来选择通信方式的(全工或半工),还有一位信息是是用来选择通信方式的(全工或半工),还有一位信息是 用来设置数据字长的

15、,以及其他用来设置通信波特率等的用来设置数据字长的,以及其他用来设置通信波特率等的 各个控制位。各个控制位。 数据寄存器数据寄存器(有些设备控制器又进一步设置为输入(有些设备控制器又进一步设置为输入 数据寄存器和输出数据寄存器)则是输入输出数据的暂存数据寄存器和输出数据寄存器)则是输入输出数据的暂存 寄存器,用来实现设备与处理器之间的数据交换。寄存器,用来实现设备与处理器之间的数据交换。 除了设备寄存器外,有些设备控制器还设有除了设备寄存器外,有些设备控制器还设有i/o数据数据 缓冲区缓冲区,以提高与,以提高与cpu交互数据的效率。块设备控制器都交互数据的效率。块设备控制器都 设有设有i/o数

16、据缓冲区,而有些字符设备控制器也设有数据缓冲区,而有些字符设备控制器也设有i/o 数据缓冲区,如视频控制器。数据缓冲区,如视频控制器。 所有设备控制器的寄存器和所有设备控制器的寄存器和i/o数据缓冲区构成的地数据缓冲区构成的地 址空间称作址空间称作i/o地址空间地址空间(i/o空间),对于空间),对于i/o地址空地址空 间的处理有三种方式:间的处理有三种方式: (1)独立编址的独立编址的i/o空间空间 在这种方式下,在这种方式下,i/o空间与内存是完全脱离的。每个空间与内存是完全脱离的。每个 设备寄存器被赋予一个设备寄存器被赋予一个i/o端口,这个端口就是一个端口,这个端口就是一个9位位 或或

17、16位的一个整数,它与内存地址没有任何关系。而正位的一个整数,它与内存地址没有任何关系。而正 是由于端口与内存地址没有任何关系,或者说端口不是内是由于端口与内存地址没有任何关系,或者说端口不是内 存地址,操作系统必须使用专门的输入输出特殊指令来进存地址,操作系统必须使用专门的输入输出特殊指令来进 行数据的读写。例如,许多指令集使用行数据的读写。例如,许多指令集使用in reg, port 指令用来从设备读数据,而指令指令用来从设备读数据,而指令out port, reg则用来则用来 将数据写入设备。将数据写入设备。 这种方式的优点是这种方式的优点是i/o空间与内存分离,输入输出操空间与内存分离

18、,输入输出操 作不会影响或干扰内存操作,尤其是输入输出软件的可靠作不会影响或干扰内存操作,尤其是输入输出软件的可靠 性通常不如内存管理软件,这种分离就显得更有价值。但性通常不如内存管理软件,这种分离就显得更有价值。但 俗话说,成也萧何,败也萧何。这个优点恰恰也是其缺点。俗话说,成也萧何,败也萧何。这个优点恰恰也是其缺点。 由于由于i/o空间与内存分离,输入输出指令与内存访问指令空间与内存分离,输入输出指令与内存访问指令 自然也不相同,输入输出所使用的自然也不相同,输入输出所使用的in/out等指令都是低等指令都是低 级的汇编指令。由于高级编程语言不支持这种低级指令,级的汇编指令。由于高级编程语

19、言不支持这种低级指令, 从而形成高级语言屏蔽的一个漏洞。程序员如果想要进行从而形成高级语言屏蔽的一个漏洞。程序员如果想要进行 i/o,则必须使用低级语言,这将增大程序设计的难度和,则必须使用低级语言,这将增大程序设计的难度和 可靠性。可靠性。 (2)内存映射内存映射i/o空间空间 顾名思义,就是将顾名思义,就是将i/o空间映射到内存里面,与内存空间映射到内存里面,与内存 统一编址。具体来说,就是系统在内存空间中划出一部分统一编址。具体来说,就是系统在内存空间中划出一部分 来作为来作为i/o空间,即所有设备寄存器的端口和空间,即所有设备寄存器的端口和i/o数据缓数据缓 冲区都是正规的内存地址空间

20、的一部分,冲区都是正规的内存地址空间的一部分, cpu对这些空对这些空 间的读写与对普通内存的读写使用同样的指令,但引起的间的读写与对普通内存的读写使用同样的指令,但引起的 是与外部设备间的数据传送。是与外部设备间的数据传送。risc(精简指令集)类(精简指令集)类 cpu计算机都使用这种方式。计算机都使用这种方式。 这种方式虽然具有这种方式虽然具有i/o与内存访问统一的优点,但是与内存访问统一的优点,但是 也存在一些问题。例如总线竞争,在单总线系统里,内存也存在一些问题。例如总线竞争,在单总线系统里,内存 和外设都需要对总线上的数据进行监听,以确认命令是否和外设都需要对总线上的数据进行监听,

21、以确认命令是否 针对自己。这样将产生总线竞争而降低系统效率。针对自己。这样将产生总线竞争而降低系统效率。 (3)混合混合i/o空间空间 这是上述两种方式的组合:这是上述两种方式的组合:i/o数据缓冲区为内存映数据缓冲区为内存映 射,而设备寄存器则独立于内存。例如采用射,而设备寄存器则独立于内存。例如采用intel奔腾处奔腾处 理器的计算机系统,将理器的计算机系统,将640k到到1m的主存地址留给的主存地址留给i/o数数 据缓冲区,而据缓冲区,而0到到64k的地址留给的地址留给i/o端口。端口。 设备控制器与设备控制器与cpu通过总线来连接。总线是一种严格通过总线来连接。总线是一种严格 定义的描

22、述了线上传输数据的协议,凡是符合总线协议的定义的描述了线上传输数据的协议,凡是符合总线协议的 各种设备都可以共同使用总线与各种设备都可以共同使用总线与cpu进行数据通信。进行数据通信。 cpu内存内存 字符设备字符设备 控制器控制器 字符设备字符设备 控制器控制器 dma 控制器控制器 总线总线 图图9-1 单总线型单总线型i/o系统结构系统结构 1.4 i/o控制方式控制方式 i/o控制方式,即为实现数据的输入输出,控制方式,即为实现数据的输入输出,cpu与外与外 设之间的交互方式。有三种基本的设之间的交互方式。有三种基本的i/o控制方式:控制方式: 轮询(轮询(polling)方式)方式

23、中断驱动方式中断驱动方式 dma方式方式 采用何种采用何种i/o控制方式将直接影响设备管理的实施方控制方式将直接影响设备管理的实施方 法及效率。法及效率。 1. 轮询方式轮询方式 也称程序控制方式。它要求在程序中的也称程序控制方式。它要求在程序中的i/o指令后紧指令后紧 接着安排循环查询指令,即在接着安排循环查询指令,即在cpu启动了设备控制器进启动了设备控制器进 行数据的输入输出后便以循环查询设备状态的方式来等待行数据的输入输出后便以循环查询设备状态的方式来等待 i/o的完成。的完成。 这种方式的特点是:这种方式的特点是:cpu处于主动地位,涉入处于主动地位,涉入i/o过过 程的程度很深,而

24、外设则处于被动地位,是一种同步工作程的程度很深,而外设则处于被动地位,是一种同步工作 方式。方式。 2. 中断驱动方式中断驱动方式 使用轮询方式时,使用轮询方式时,cpu需要读取设备状态寄存器以检需要读取设备状态寄存器以检 测设备的当前状态,如果设备还未完成此次的测设备的当前状态,如果设备还未完成此次的i/o,则需,则需 要要cpu不断地查询,由于不断地查询,由于cpu与外设的速度差距巨大,与外设的速度差距巨大, 因此在因此在i/o过程中,过程中,cpu绝大部分时间都处于繁忙等待状绝大部分时间都处于繁忙等待状 态,态,cpu的效率十分低下。的效率十分低下。 一种更为有效的方式是让设备处于某种主

25、动地位,而一种更为有效的方式是让设备处于某种主动地位,而 将将cpu从忙等待中解脱出来。在启动了某个外设后,立即从忙等待中解脱出来。在启动了某个外设后,立即 阻塞现行进程,阻塞现行进程,cpu就可被调度转去执行其他进程而不是就可被调度转去执行其他进程而不是 在原地踏步等待。当某个数据在原地踏步等待。当某个数据i/o任务完成后,由设备控任务完成后,由设备控 制器向制器向cpu发出一个发出一个i/o中断,驱动中断,驱动cpu中止现行进程的中止现行进程的 执行而转去执行相应的中断处理程序,并唤醒等待该执行而转去执行相应的中断处理程序,并唤醒等待该i/o 的进程。的进程。 显然,这种显然,这种i/o控

26、制方式可以大大提高控制方式可以大大提高cpu的效率,的效率, 因此是设备与因此是设备与cpu进行交互的基本手段。进行交互的基本手段。 3. dma方式方式 虽然中断驱动方式避免了轮询方式的忙等待现象,从虽然中断驱动方式避免了轮询方式的忙等待现象,从 而大大提高了而大大提高了cpu的效率,但这主要是对慢速的字符设的效率,但这主要是对慢速的字符设 备而言的。而对于一次需要传输大量数据的高速块设备来备而言的。而对于一次需要传输大量数据的高速块设备来 说,仍然不能令人满意。因为设备的数据寄存器的容量是说,仍然不能令人满意。因为设备的数据寄存器的容量是 有限的,故一个有限的,故一个i/o任务中待传输的数

27、据需要多次送往数任务中待传输的数据需要多次送往数 据寄存器,而每当设备传送完一次数据寄存器中的数据时,据寄存器,而每当设备传送完一次数据寄存器中的数据时, 就会触发一次就会触发一次i/o中断,因此在块设备的一次中断,因此在块设备的一次i/o任务的任务的 完成过程中,完成过程中,cpu需要响应和处理许多次需要响应和处理许多次i/o中断,而每中断,而每 一次一次i/o中断的响应和处理都需要付出不小的额外中断的响应和处理都需要付出不小的额外cpu开开 销,销,cpu的效率并未获得太多改善。的效率并未获得太多改善。 人们发现,在设备与主机交换大量数据时,人们发现,在设备与主机交换大量数据时,cpu只是

28、只是 数据传输的一个中介,用功能强大的数据传输的一个中介,用功能强大的cpu长时间去充当长时间去充当 一个传输数据的中介角色显然得不偿失。于是就设计出一一个传输数据的中介角色显然得不偿失。于是就设计出一 种专门负责执行数据种专门负责执行数据i/o事务的处理器事务的处理器i/o处理器处理器, 它比它比cpu要简单得多,但也便宜很多,它只能执行少量要简单得多,但也便宜很多,它只能执行少量 的指令,主要是数据的指令,主要是数据i/o指令。指令。i/o处理器既可以构建在处理器既可以构建在 设备控制器里面(这样的控制器称为设备控制器里面(这样的控制器称为dma控制器控制器),也),也 可以作为独立的实体

29、挂在计算机主板上。最简单的可以作为独立的实体挂在计算机主板上。最简单的i/o处处 理器在一个时间只能处理一个理器在一个时间只能处理一个i/o,即不能并发,而复杂,即不能并发,而复杂 的的i/o处理器可以同时处理多个处理器可以同时处理多个i/o,即它能够提供多个,即它能够提供多个 i/o通道,每个通道可以对应一个通道,每个通道可以对应一个i/o设备。有了设备。有了i/o处处 理器,就可以将理器,就可以将cpu从繁杂的从繁杂的i/o事务中解脱出来。事务中解脱出来。 dma(direct memory access,直接内存访问直接内存访问) 方式就是使用方式就是使用i/o处理器的处理器的i/o控制

30、方式,主要是针对块控制方式,主要是针对块 设备的。设备的。 dma方式的目的当然是降低方式的目的当然是降低cpu响应中断的频率,使响应中断的频率,使 得一个传输大量数据的得一个传输大量数据的i/o任务中需要响应许多次中断变任务中需要响应许多次中断变 为只响应一次中断。为只响应一次中断。dma方式在设备和内存之间建立了直方式在设备和内存之间建立了直 接数据通路,即设备和内存之间可直接读写数据,且数据接数据通路,即设备和内存之间可直接读写数据,且数据 传输的基本单位是数据块。一个传输的基本单位是数据块。一个i/o任务中的所有数据是任务中的所有数据是 在一个在一个dma控制器的控制下完成传输的,且在

31、整个传输过控制器的控制下完成传输的,且在整个传输过 程中无需程中无需cpu的直接干预,直到该任务中的所有数据都传的直接干预,直到该任务中的所有数据都传 输完后,输完后,dma控制器才向控制器才向cpu发出一个发出一个i/o中断。中断。 dma控制器在普通设备控制器的基础上又增设了两个控制器在普通设备控制器的基础上又增设了两个 寄存器:内存地址寄存器和数据计数寄存器。寄存器:内存地址寄存器和数据计数寄存器。 dma方式的方式的i/o过程如下:过程如下: cpu对对dma控制器进行设置,告诉其存放控制器进行设置,告诉其存放i/o数数 据的主存区地址和传输长度(分别送入内存地址寄存器和据的主存区地址

32、和传输长度(分别送入内存地址寄存器和 数据计数寄存器);数据计数寄存器); 启动启动dma过程,将系统总线的使用权暂时移交给过程,将系统总线的使用权暂时移交给 dma控制器;控制器; dma控制器进行数据传输,即接管对系统总线的控制器进行数据传输,即接管对系统总线的 使用权(总线周期窃用),启动设备进行数据的使用权(总线周期窃用),启动设备进行数据的i/o,并,并 进行数据传送个数的计数以及内存区地址的增量;进行数据传送个数的计数以及内存区地址的增量; 当数据传送完毕,当数据传送完毕,dma控制器向控制器向cpu发出一个发出一个 i/o中断,同时向中断,同时向cpu移交总线使用权。移交总线使用

33、权。 cpu响应中断,处理善后事宜。响应中断,处理善后事宜。 dma方式的优点是显著减少了中断次数和方式的优点是显著减少了中断次数和cpu的的 i/o操作次数,从而大大减轻了操作次数,从而大大减轻了cpu的的i/o负担,加快了负担,加快了 i/o的速度,不仅有利于的速度,不仅有利于cpu效率的发挥,而且能满足高效率的发挥,而且能满足高 速速i/o设备对成组数据的高速传送要求。缺点自然是增加设备对成组数据的高速传送要求。缺点自然是增加 了成本和复杂性,而且由于了成本和复杂性,而且由于dma控制器需要与控制器需要与cpu竞争竞争 系统总线,其效率的提高不如理论上的期望。系统总线,其效率的提高不如理

34、论上的期望。 2 设备管理的目标和功能设备管理的目标和功能 设备控制块设备控制块 i/o软件的分层结构软件的分层结构 2.1 设备管理的目标和功能设备管理的目标和功能 1. 设备管理的目标设备管理的目标 设备管理是操作系统的重要组成部分,现代操作系统设备管理是操作系统的重要组成部分,现代操作系统 的设备管理的基本目标除了公平和有效之外,另一目标是的设备管理的基本目标除了公平和有效之外,另一目标是 把所有外设都抽象成文件,使得对物理特征各异的各种设把所有外设都抽象成文件,使得对物理特征各异的各种设 备都可以以统一的文件方式进行操作。具体地说,它必须备都可以以统一的文件方式进行操作。具体地说,它必

35、须 满足下述设计要求:满足下述设计要求: 为用户提供方便、统一的设备使用界面。将复杂的为用户提供方便、统一的设备使用界面。将复杂的 具体设备操作控制过程隐藏起来,通过统一的文件操作界具体设备操作控制过程隐藏起来,通过统一的文件操作界 面进行面进行i/o操作,既方便了用户对设备的使用和满足用户操作,既方便了用户对设备的使用和满足用户 使用外设的各种要求,又有利于将不同类型的设备配置在使用外设的各种要求,又有利于将不同类型的设备配置在 系统中。系统中。 提高外设的利用率,尽量提高并行程度。一方面,提高外设的利用率,尽量提高并行程度。一方面, 用户使用外设常有很大的随机性,设备管理应能根据当时用户使

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

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

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

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

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

41、次设备号构成。主设备号用于标由主设备号和次设备号构成。主设备号用于标 识设备类型,如识设备类型,如ide硬盘、硬盘、scsi硬盘、显示器、打印机等,硬盘、显示器、打印机等, 同一类设备使用的是同一个设备驱动程序。次设备号用于同一类设备使用的是同一个设备驱动程序。次设备号用于 标识同类设备中的某个具体设备及其控制器,即同类设备标识同类设备中的某个具体设备及其控制器,即同类设备 的序号。的序号。 这里的这里的设备驱动程序指针设备驱动程序指针实际上是一个指针组,其中实际上是一个指针组,其中 的每个指针指向一个设备操作函数。设备驱动程序容易被的每个指针指向一个设备操作函数。设备驱动程序容易被 人误认为

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

43、不当然,对于块设备和字符设备以及不同的块设备和不 同的字符设备,各自所含的功能函数的个数有所不同,同同的字符设备,各自所含的功能函数的个数有所不同,同 名函数具体执行的算法也是不同的,从而构成了不同设备名函数具体执行的算法也是不同的,从而构成了不同设备 的驱动程序。设备驱动程序就是操作系统对设备的物理抽的驱动程序。设备驱动程序就是操作系统对设备的物理抽 象(最底层抽象)。象(最底层抽象)。 至于如何管理至于如何管理dcb则可以有不同的方法。自则可以有不同的方法。自unix后,后, 现代操作系统普遍将现代操作系统普遍将dcb抽象成抽象成特殊文件特殊文件(即(即设备文件设备文件)。)。 与数据文件

44、一样,系统为每个设备文件建立一个与数据文件一样,系统为每个设备文件建立一个 fcb,但,但 设备文件的特殊之处在于,它并没有数据文件意义上的文设备文件的特殊之处在于,它并没有数据文件意义上的文 件体,即它并不在磁盘空间中占有一席之地,换言之,操件体,即它并不在磁盘空间中占有一席之地,换言之,操 作系统并不给设备文件分配磁盘空间单元。那么,作系统并不给设备文件分配磁盘空间单元。那么,设备文设备文 件的文件体是什么呢?就是件的文件体是什么呢?就是dcb! 例如,例如,linux是按如下方式处理的。是按如下方式处理的。 linux支持三种类型的硬件设备:字符设备、块设备支持三种类型的硬件设备:字符设

45、备、块设备 及网络设备。及网络设备。 字符设备能够存储或传输不定长数据。某些字符设备字符设备能够存储或传输不定长数据。某些字符设备 可以每次传送一个字节,可以不经过缓冲区直接进行读可以每次传送一个字节,可以不经过缓冲区直接进行读 写,如系统中的串行口写,如系统中的串行口/dev/dnao和和/dev/cnal,传送,传送 完一个字节后产生一个完一个字节后产生一个i/o中断;另一些字符设备可以在中断;另一些字符设备可以在 设备内缓存数据,因此可以一次传送完多个字节后产生一设备内缓存数据,因此可以一次传送完多个字节后产生一 个个i/o中断。中断。 块设备以块为单位传输数据。每个块设备都可建有一块设

46、备以块为单位传输数据。每个块设备都可建有一 个个i/o数据缓冲区队列,缓冲区的大小与块相等,因此,数据缓冲区队列,缓冲区的大小与块相等,因此, 块设备一次可传输一块或多块数据。块设备一次可传输一块或多块数据。 网络设备也称包设备(如以太网卡),是通过网络设备也称包设备(如以太网卡),是通过bsd socket和网络子系统访问,它负责数据包的发送和接收。和网络子系统访问,它负责数据包的发送和接收。 网络协议(如网络协议(如tcp/ip)就建立在网络设备驱动程序之上。)就建立在网络设备驱动程序之上。 与字符设备和块设备不同的是,网络设备传输的不是无结与字符设备和块设备不同的是,网络设备传输的不是无

47、结 构的流式数据,而是有结构的数据包。构的流式数据,而是有结构的数据包。 针对这三类设备,针对这三类设备,linux在内核空间中建立了三个在内核空间中建立了三个设设 备注册表备注册表(也称(也称设备开关表设备开关表),分别是:),分别是:块设备注册表块设备注册表、 字符设备注册表、字符设备注册表、以及以及网络设备注册表网络设备注册表,它们均为线性,它们均为线性 表(数组)表(数组) 。每个已配置在系统中的外设都在相应的设。每个已配置在系统中的外设都在相应的设 备注册表中占有一个表项。表项中包含了备注册表中占有一个表项。表项中包含了dcb中的核心中的核心 内容,主要有:设备名(即设备文件名)、主

48、设备号、内容,主要有:设备名(即设备文件名)、主设备号、 驱动程序指针。驱动程序指针。 dcb中的其他内容则被记录在中的其他内容则被记录在 i 节点中。节点中。i 节点中也节点中也 设置有主设备号,通过它与相应的注册表表项连接了起设置有主设备号,通过它与相应的注册表表项连接了起 来。从而在设备文件名与设备驱动程序之间建立起了一来。从而在设备文件名与设备驱动程序之间建立起了一 条通路。见图条通路。见图9-2。 i节点号节点号 外设外设 主设备号主设备号 fops *read() *write() write() read() 驱动程序驱动程序 中处程序中处程序 设备设备 文件名文件名 设备目录设

49、备目录 i 节点节点 设备注册表设备注册表 图图9-2 设备文件名到设备驱动程序的通路设备文件名到设备驱动程序的通路 *intrrpt() 2.3 i/o软件的分层结构软件的分层结构 设备管理软件,也称作设备管理软件,也称作i/o控制系统(控制系统(iocs)或)或 i/o软件软件 ,是操作系统中非常繁杂的部分,通常按照,是操作系统中非常繁杂的部分,通常按照 i/o功能进行分层,每一层提供独特的功能,并与相邻功能进行分层,每一层提供独特的功能,并与相邻 的层面间设计有标准界面。当然,不同的操作系统这种的层面间设计有标准界面。当然,不同的操作系统这种 分层是不同的,但一般都会有如下几层(从高到低

50、)分层是不同的,但一般都会有如下几层(从高到低) : 用户级用户级i/o软件软件 独立于设备的独立于设备的i/o软件软件 设备驱动程序设备驱动程序 设备中断处理程序设备中断处理程序 i/o 请求请求 (用户进程)(用户进程) i/o 应答应答 用户级用户级i/o软件软件 独立于设备的独立于设备的i/o软件软件 设备驱动程序设备驱动程序 硬硬 件件 图图9-3 i/o软件的分层结构软件的分层结构 设备中断处理程序设备中断处理程序 3 由于大多数由于大多数i/o均为中断驱动,设备中断处理程序就均为中断驱动,设备中断处理程序就 成为成为i/o软件的不可分割的组成部分。由于设备中断处理软件的不可分割的

51、组成部分。由于设备中断处理 程序直接与硬件相关,针对不同的外部设备,中断响应的程序直接与硬件相关,针对不同的外部设备,中断响应的 处理也不尽相同,因此,设备中断处理程序处于处理也不尽相同,因此,设备中断处理程序处于i/o软件软件 分层结构里面的最底层。而为了降低操作系统的复杂性,分层结构里面的最底层。而为了降低操作系统的复杂性, 设备中断处理程序的暴露窗口应该越小越好,与其打交道设备中断处理程序的暴露窗口应该越小越好,与其打交道 的的os部分也是越少越好。部分也是越少越好。 而降低暴露窗口的最好办法是让设备驱动程序负责而降低暴露窗口的最好办法是让设备驱动程序负责 i/o中断响应,即设备驱动程序

52、启动中断响应,即设备驱动程序启动i/o操作后阻塞(通操作后阻塞(通 过执行信号量的过执行信号量的p操作或等待信号),然后等待操作或等待信号),然后等待i/o中断。中断。 当响应当响应i/o中断时,先执行设备中断处理程序,在设备中中断时,先执行设备中断处理程序,在设备中 断处理程序完成相关的处理后唤醒设备驱动程序(通过执断处理程序完成相关的处理后唤醒设备驱动程序(通过执 行信号量的行信号量的v操作或发送信号)。操作或发送信号)。 i/o中断处理过程大致有以下几个步骤:中断处理过程大致有以下几个步骤: 1. 关中断。关中断。cpu中的中断响应部件响应中断请求后立中的中断响应部件响应中断请求后立 即

53、关中断。即关中断。 2. 保存现行进程(被中断的进程)的执行现场(上下保存现行进程(被中断的进程)的执行现场(上下 文)。文)。 3. 分析中断源(中断类型和发出中断的设备分析中断源(中断类型和发出中断的设备id),切),切 换到相应的设备中断处理程序。换到相应的设备中断处理程序。 4. 执行设备中断处理程序。设备中断处理程序首先从执行设备中断处理程序。设备中断处理程序首先从 设备控制器中读出设备状态,根据设备的当前状态作相应设备控制器中读出设备状态,根据设备的当前状态作相应 处理;最后唤醒相应的设备驱动程序。处理;最后唤醒相应的设备驱动程序。 5. 恢复被中断进程的执行现场。恢复被中断进程的

54、执行现场。 6. 开中断。开中断。 4 什么是设备驱动程序什么是设备驱动程序 设备驱动程序的算法框架设备驱动程序的算法框架 4.1 什么是设备驱动程序什么是设备驱动程序 设备驱动程序,顾名思义,就是直接驱动外部设备进设备驱动程序,顾名思义,就是直接驱动外部设备进 行行i/o操作的软件。其作用就是实现对外部设备的软件封操作的软件。其作用就是实现对外部设备的软件封 装,隐藏外部设备的所有硬件细节,向用户提供一个统一装,隐藏外部设备的所有硬件细节,向用户提供一个统一 的操作界面,的操作界面,是操作系统对外部设备的物理抽象是操作系统对外部设备的物理抽象。它属于。它属于 与设备控制器直接联系的与设备控制

55、器直接联系的iocs部分,与具体的外设直接部分,与具体的外设直接 相关,并针对每个特定的外设进行过优化。设备驱动程序相关,并针对每个特定的外设进行过优化。设备驱动程序 通常由设备制造商提供,但归属于操作系统内核。正因为通常由设备制造商提供,但归属于操作系统内核。正因为 这一属性,设备驱动程序是操作系统安全的一大隐患。这一属性,设备驱动程序是操作系统安全的一大隐患。 由于需要直接驱动设备的运行,设备驱动程序必须清由于需要直接驱动设备的运行,设备驱动程序必须清 楚设备的所有物理细节。例如,磁盘驱动程序必须清楚磁楚设备的所有物理细节。例如,磁盘驱动程序必须清楚磁 盘控制器设置有多少寄存器及其端口,了

56、解磁盘拥有的柱盘控制器设置有多少寄存器及其端口,了解磁盘拥有的柱 面数(磁道数)、磁头数(盘面数)、扇区数及扇区的容面数(磁道数)、磁头数(盘面数)、扇区数及扇区的容 量、臂的移动、交叉访问系数、电机驱动器、磁头稳定时量、臂的移动、交叉访问系数、电机驱动器、磁头稳定时 间以及所有保证磁盘正常工作的硬件机制。鼠标驱动程序间以及所有保证磁盘正常工作的硬件机制。鼠标驱动程序 自然需要具备辨认是哪个按键被按下的能力。自然需要具备辨认是哪个按键被按下的能力。 每种设备配置有一个设备驱动程序,但一个设备驱动每种设备配置有一个设备驱动程序,但一个设备驱动 程序并不是一个完整独立的程序,而是由一组相对独立的程

57、序并不是一个完整独立的程序,而是由一组相对独立的 设备操作函数(内核函数)所构成,其中的每个函数都可设备操作函数(内核函数)所构成,其中的每个函数都可 被进程单独调用,实现相关的物理被进程单独调用,实现相关的物理i/o。 在在unix中,设备驱动程序与整个中,设备驱动程序与整个os内核编在一个二内核编在一个二 进制文件里。如果要增加新的设备驱动程序或者修改现有进制文件里。如果要增加新的设备驱动程序或者修改现有 的设备驱动程序,则需要重新编译整个操作系统内核。的设备驱动程序,则需要重新编译整个操作系统内核。 unix的这种做法主要是考虑到安全因素。由于用户无法的这种做法主要是考虑到安全因素。由于

58、用户无法 动态地装卸设备驱动程序,操作系统的安全性较高。不动态地装卸设备驱动程序,操作系统的安全性较高。不 过,这种不能动态装卸的限制让人感觉十分不便,因此在过,这种不能动态装卸的限制让人感觉十分不便,因此在 最新的最新的unix以及以及linux版本里,建立了较复杂的可安装版本里,建立了较复杂的可安装 内核模块机制,它可支持设备驱动程序的动态装卸。内核模块机制,它可支持设备驱动程序的动态装卸。 windows操作系统从一开始(操作系统从一开始(nt开始)就支持设备开始)就支持设备 驱动程序的动态装卸,这也是驱动程序的动态装卸,这也是windows不如不如unix安全安全 的一个原因。的一个原

59、因。 4.2 设备驱动程序的算法框架设备驱动程序的算法框架 (1) 在收到一个在收到一个i/o请求后,设备驱动程序做的第一请求后,设备驱动程序做的第一 件事是检查输入参数是否合法。如果不合法,则错误返回;件事是检查输入参数是否合法。如果不合法,则错误返回; 否则,将否则,将i/o请求的抽象表示转换为设备控制器能够认识请求的抽象表示转换为设备控制器能够认识 的具体表示,例如,将线性的盘块号映射为磁道、磁头、的具体表示,例如,将线性的盘块号映射为磁道、磁头、 扇区等。扇区等。 (2) 然后,设备驱动程序需要检查设备状态以确认设然后,设备驱动程序需要检查设备状态以确认设 备是否处于闲置状态。如果设备

60、正忙着,则将备是否处于闲置状态。如果设备正忙着,则将i/o请求送请求送 入该设备的等待队列以待处理,并阻塞调用者;否则,若入该设备的等待队列以待处理,并阻塞调用者;否则,若 设备空闲,就驱动设备运行并启动电机。设备空闲,就驱动设备运行并启动电机。 (3) 接着开始驱动真正的接着开始驱动真正的i/o操作。设备驱动程序通操作。设备驱动程序通 过向设备寄存器里送入一系列的过向设备寄存器里送入一系列的i/o控制命令来进行物理控制命令来进行物理 的数据传输工作。如果需要,设备驱动程序通过自行阻塞的数据传输工作。如果需要,设备驱动程序通过自行阻塞 来等待来等待i/o中断。中断。 (4) 在被中断处理程序唤

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论