1、操作系统基础第三章*发展历史发展历史第一代用键盘和打印机第一代用键盘和打印机第二代用鼠标和调制解调器(俗称第二代用鼠标和调制解调器(俗称“猫猫”)第三代用手写笔和扫描仪等第三代用手写笔和扫描仪等另外,还有众多的专业领域的设备。另外,还有众多的专业领域的设备。*外部设备分类外部设备分类1.按使用特性分按使用特性分 存储型设备存储型设备 输入型设备(输入型设备(外设外设主机主机)输出型设备(主机输出型设备(主机外设)外设)输入输出型设备输入输出型设备2.2.按数据组织分按数据组织分 块设备块设备 以数据块为单位存储、传输信息以数据块为单位存储、传输信息 字符设备字符设备 以字符为单位存储、传输信息
2、以字符为单位存储、传输信息3.按外部设备的从属关系分按外部设备的从属关系分 系统设备系统设备 指操作系统生成时,登记在系统中的标准设备指操作系统生成时,登记在系统中的标准设备 (如终端、打印机、磁盘机等)(如终端、打印机、磁盘机等)用户设备用户设备 指在系统生成时,未登记在系统中的非标准设备。对于这类设备的处理程序由用户提供,并将其纳指在系统生成时,未登记在系统中的非标准设备。对于这类设备的处理程序由用户提供,并将其纳入系统,由系统代替用户实施管理。入系统,由系统代替用户实施管理。(如(如A/DA/D,D/AD/A转换器,转换器,CADCAD所用专用设备)所用专用设备)4.按资源分配角度分按资
3、源分配角度分 独占设备独占设备 在一段时间内只能有一个进程使用的设备,一般为低速在一段时间内只能有一个进程使用的设备,一般为低速I/O设备。(如打印机,磁带等)设备。(如打印机,磁带等)共享设备共享设备 在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高。(如硬盘)率高。(如硬盘)虚设备虚设备 在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备的
4、设备称为虚设备 (将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率)(将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率)(为了提高资源利用率,如(为了提高资源利用率,如SPOOLingSPOOLing技术就使用了虚设备技术技术就使用了虚设备技术用硬盘模拟输入输出设备。)用硬盘模拟输入输出设备。)SPOOLing SPOOLing技术技术 为解决独立设备数量少,速度慢,不能满足众多进程的要求,而且在进程独占设备期间,设备利为解决独立设备数量少,速度慢,不能满足众多进程的要求,而且在进程独占设备期间,设备利用率比较低而提出的一种设备管理技术。用率比较低而提出的一种设备管理技
5、术。5.从程序使用角度分从程序使用角度分 逻辑设备逻辑设备 物理设备物理设备*设备管理的目的和任务设备管理的目的和任务1.1.按照用户的请求,控制设备的各种操作,完成按照用户的请求,控制设备的各种操作,完成I/OI/O设备与内存之间的数据交换(包括设备分配与设备与内存之间的数据交换(包括设备分配与回收;设备驱动程序;设备中断处理;缓冲区管理),最终完成用户的回收;设备驱动程序;设备中断处理;缓冲区管理),最终完成用户的I/OI/O请求请求(1)(1)选择和分配选择和分配I/OI/O设备,以便进行数据传输操作设备,以便进行数据传输操作(2)(2)控制控制I/OI/O设备与内存之间交换数据设备与内
6、存之间交换数据2.向用户提供使用外部设备的方便接口,使用户摆脱繁琐的编程负担向用户提供使用外部设备的方便接口,使用户摆脱繁琐的编程负担 方便性方便性 友好界面友好界面 透明性透明性3.3.充分利用各种技术(通道,中断,缓冲等)提高充分利用各种技术(通道,中断,缓冲等)提高CPUCPU与设备、设备与设备之间的并行工作能力,与设备、设备与设备之间的并行工作能力,充分利用资源,提高资源利用率充分利用资源,提高资源利用率 并行性并行性 均衡性(使设备充分忙碌)均衡性(使设备充分忙碌)4.保证在多道程序环境下,当多个进程竞争使用设备时,按一定策略分配和管理各种设备,使系保证在多道程序环境下,当多个进程竞
7、争使用设备时,按一定策略分配和管理各种设备,使系统能有条不紊的工作统能有条不紊的工作5.5.与设备无关性(设备独立性)与设备无关性(设备独立性)用户在编制程序时,使用逻辑设备名,由系统实现从逻辑设备到物理设备(实际设备)的转换用户在编制程序时,使用逻辑设备名,由系统实现从逻辑设备到物理设备(实际设备)的转换 用户能独立于具体物理设备而方便的使用设备用户能独立于具体物理设备而方便的使用设备 用户申请使用设备时,只需要指定设备类型,而无须指定具体物理设备,系统根据当前的请求,及设备用户申请使用设备时,只需要指定设备类型,而无须指定具体物理设备,系统根据当前的请求,及设备分配的情况,在相同类别设备中
8、,选择一个空闲设备,并将其分配给一个申请进程分配的情况,在相同类别设备中,选择一个空闲设备,并将其分配给一个申请进程 统一性:统一性:对不同的设备采取统一的操作方式,在用户程序中使用的是逻辑设备对不同的设备采取统一的操作方式,在用户程序中使用的是逻辑设备优点:优点:设备忙碌或设备故障时,用户不必修改程序设备忙碌或设备故障时,用户不必修改程序改善了系统的可适应性和可扩展性改善了系统的可适应性和可扩展性*设备管理的任务设备管理的任务按用户需求提出的要求接入外部设备,系统按一定算法分配和管理控制,而用户不必关心设按用户需求提出的要求接入外部设备,系统按一定算法分配和管理控制,而用户不必关心设备的实际
9、地址和控制指令备的实际地址和控制指令.尽量提高输入输出设备的利用率,例如,发挥主机与外设以及外设与外设之间的真正并行工尽量提高输入输出设备的利用率,例如,发挥主机与外设以及外设与外设之间的真正并行工作能力作能力.*设备管理的功能设备管理的功能 设备分配与回收设备分配与回收 记录设备的状态记录设备的状态 根据用户的请求和设备的类型,采用一定的分配算法,选择一条数据通路根据用户的请求和设备的类型,采用一定的分配算法,选择一条数据通路 分配设备:按设备的不同类型和操作系统选用的算法分配。包括分配相应的通道、设备控制器以及对分配设备:按设备的不同类型和操作系统选用的算法分配。包括分配相应的通道、设备控
10、制器以及对未分配到的任务或怍业进行排队等;未分配到的任务或怍业进行排队等;控制和实现真正的输入输出操作。包括通道程序控制、启动设备、及时响应及处理中断讯号等;控制和实现真正的输入输出操作。包括通道程序控制、启动设备、及时响应及处理中断讯号等;对输入输出缓冲区进行管理。例如逻辑名的管理,多个缓冲区的分时以及串并行操作,同类多个外部对输入输出缓冲区进行管理。例如逻辑名的管理,多个缓冲区的分时以及串并行操作,同类多个外部设备的均衡工作,避免设备的均衡工作,避免“忙的忙忙的忙”和和“闲的闲闲的闲”;在一些较大系统中实现虚拟设备技术(虚拟硬盘、虚拟内存)。在一些较大系统中实现虚拟设备技术(虚拟硬盘、虚拟
11、内存)。3.1 I/O硬件硬件原理原理 I/O设备对不同的人有不同的理解,设计硬件的人员和对硬件编程的人员和用户都有不同的观设备对不同的人有不同的理解,设计硬件的人员和对硬件编程的人员和用户都有不同的观点和见解,我们主要分析如何对这些设备编程控制,更好地使设备之间协调工作,即主要从程序点和见解,我们主要分析如何对这些设备编程控制,更好地使设备之间协调工作,即主要从程序员的角度来分析它。员的角度来分析它。控制器卡上通常有一个插座,通过电缆与设备相连;控制器卡上通常有一个插座,通过电缆与设备相连;控制器和设备之间的接口是一个标准接口,它符合控制器和设备之间的接口是一个标准接口,它符合ANSIANS
12、I、IEEEIEEE或或ISOISO这样的国际标准。这样的国际标准。关注点:对该硬件如何进行程序设计,不考虑设备内部如何工作关注点:对该硬件如何进行程序设计,不考虑设备内部如何工作 程序员:软件接口程序员:软件接口 即硬件所接受的命令,它所完成的功能,报回的错误即硬件所接受的命令,它所完成的功能,报回的错误 因此我们所关心的就是控制器,因为它和操作系统打交道,也就是我们要分析的重点。因此我们所关心的就是控制器,因为它和操作系统打交道,也就是我们要分析的重点。*设备接口设备接口 一次完整的一次完整的I/OI/O传送过程,典型地由一长列低级信号组成,这些信号启动设备所执行的操作,并传送过程,典型地
13、由一长列低级信号组成,这些信号启动设备所执行的操作,并通过测试设备状态来监控设备操作的进展通过测试设备状态来监控设备操作的进展 。一个一个I/OI/O过程由四步组成:过程由四步组成:*准备准备 *启动启动 *测试和等待测试和等待 *结果检查和错误处理结果检查和错误处理 这个过程均是通过对设备接口寄存器组的读写完成这个过程均是通过对设备接口寄存器组的读写完成*设备连接模式设备连接模式 指指I/OI/O设备与设备与CPUCPU之间的连接方式,亦即将设备连接到一个计算机系统上的方式。在一个确定之间的连接方式,亦即将设备连接到一个计算机系统上的方式。在一个确定的连接模式下,从的连接模式下,从I/OI/
14、O设备到设备到CPUCPU间的所有连接成分构成了一条间的所有连接成分构成了一条I/OI/O路径(路径(I/OI/O链)。链)。1.设备与主机间最基本的连接方式设备与主机间最基本的连接方式 四个要素:四个要素:设备接口形式设备接口形式 I/O指令形式指令形式 I/O地址空间分配及译码地址空间分配及译码 连线问题连线问题(1)设备接口形式设备接口形式 *端口地址译码端口地址译码 *按照主机与设备的约定格式和过程接受或发送数据和信号按照主机与设备的约定格式和过程接受或发送数据和信号 计算机计算机 设备设备 设备设备 计算机计算机*将计算机的数字信号转换为机械部分能识别的模拟信号,或反过来将计算机的数
15、字信号转换为机械部分能识别的模拟信号,或反过来*实现一些诸如设备内部硬件缓冲存储、数据加工的提高性能或增强功能的任务实现一些诸如设备内部硬件缓冲存储、数据加工的提高性能或增强功能的任务(2)I/O指令形式与指令形式与I/O地址是相互关联的,主要有两种形式:地址是相互关联的,主要有两种形式:内存映像内存映像I/O模式模式 I/O专用指令专用指令要考虑的几个问题:要考虑的几个问题:设备完成技术:系统如何知道设备的一次设备完成技术:系统如何知道设备的一次I/OI/O操作是否完成?操作是否完成?对对CPUCPU编程的编程的I/OI/O技术:技术:CPUCPU必须亲自完成必须亲自完成I/OI/O的启动与
16、完成的处理,亲自执行所有数据在内存和设备的启动与完成的处理,亲自执行所有数据在内存和设备之间的实际物理传送之间的实际物理传送进一步改善:进一步改善:*使使CPU利用率尽可能不被利用率尽可能不被I/O降低,使降低,使CPU脱离脱离I/O的负担的负担*提高提高I/O本身的绝对速度本身的绝对速度*减少或缓解速度差距减少或缓解速度差距*使使CPU不等待不等待I/O*使使CPU尽可能摆脱尽可能摆脱I/O*提高设备利用率提高设备利用率*在设备与主机的硬连接上,引入总线,节省连线并提供配置扩充与改变时的灵活性;引入控制器,在设备与主机的硬连接上,引入总线,节省连线并提供配置扩充与改变时的灵活性;引入控制器,
17、扩大设备与主机间的相互适用范围扩大设备与主机间的相互适用范围-总线的引入总线的引入2.总线总线 将计算机系统中的各个子系统(将计算机系统中的各个子系统(CPU、内存、外设等)相互连接,且连接是共享的。、内存、外设等)相互连接,且连接是共享的。好处:低成本(一线多用)好处:低成本(一线多用)灵活性(易于增加设备灵活性(易于增加设备 便于两个计算机系统之间共享外设)便于两个计算机系统之间共享外设)总线的缺点:总线的缺点:本身形成了通讯瓶颈,限制本身形成了通讯瓶颈,限制I/O吞吐量吞吐量总线分类:总线分类:数据总线、地址总线、控制总线数据总线、地址总线、控制总线控制器,即设备的电子部分完成设备与主机
18、间的连接和通讯控制器,即设备的电子部分完成设备与主机间的连接和通讯CPUCPU与控制器间通讯:与控制器间通讯:单总线模型(微机、小型机)单总线模型(微机、小型机)多总线模型(中、大型机)多总线模型(中、大型机)-I/O-I/O通道通道DMA(direct memory access)数据在内存与数据在内存与I/O设备间的直接成块传送设备间的直接成块传送 CPU在开始时向设备发在开始时向设备发“传送一块传送一块”命令,结束时进行相应处理,实际操作由命令,结束时进行相应处理,实际操作由DMA硬件直接完硬件直接完成成 DMA DMA需要附加的辅助硬件,且该需要附加的辅助硬件,且该DMADMA硬件属于
19、设备的电子部分的功能(由控制器实现)。许多控制器,硬件属于设备的电子部分的功能(由控制器实现)。许多控制器,尤其是块设备控制器都支持尤其是块设备控制器都支持DMADMA。例如:对磁盘进行访问例如:对磁盘进行访问 不用不用DMA时,磁盘如何读:首先,控制器从磁盘驱动器串行地一位一位地读一个块,直到时,磁盘如何读:首先,控制器从磁盘驱动器串行地一位一位地读一个块,直到将整块信息放入控制器的内部缓冲区中。其次,它做和校验计算,以核实没有读错误发生。将整块信息放入控制器的内部缓冲区中。其次,它做和校验计算,以核实没有读错误发生。然后控制器产生一个中断。然后控制器产生一个中断。CPU响应中断,控制转给操
20、作系统。当操作系统开始运行时,它响应中断,控制转给操作系统。当操作系统开始运行时,它重复地从控制器缓冲区中一次一个字节或一个字地读这个磁盘块的信息,并将其送入内存中重复地从控制器缓冲区中一次一个字节或一个字地读这个磁盘块的信息,并将其送入内存中 采用采用DMA方式时,允许方式时,允许DMA控制器接管地址线的控制权,直接控制控制器接管地址线的控制权,直接控制DMA控制器与内存的数据交控制器与内存的数据交换。从而使磁盘设备与存储器之间的数据传送不需要换。从而使磁盘设备与存储器之间的数据传送不需要CPU介入,因而减轻了介入,因而减轻了CPU负担;负担;当采用当采用DMA时,除向控制器提供要读数据块的
21、磁盘地址外,还要向控制器提供两个信息:数据时,除向控制器提供要读数据块的磁盘地址外,还要向控制器提供两个信息:数据块送往内存的起始地址和要传送的字节数。块送往内存的起始地址和要传送的字节数。当当DMADMA硬件控制磁盘与存储器之间进行信息交换时,每当磁盘把一个数据读入控制器的数据缓冲硬件控制磁盘与存储器之间进行信息交换时,每当磁盘把一个数据读入控制器的数据缓冲区时,区时,DMADMA控制器取代控制器取代CPUCPU,接管地址总线的控制权,并按照,接管地址总线的控制权,并按照DMADMA控制器中的存储器地址寄存器内控制器中的存储器地址寄存器内容把数据送入相应的内存单元中。然后,容把数据送入相应的
22、内存单元中。然后,DMADMA硬件自动地把传送字节计数器减硬件自动地把传送字节计数器减1 1,把存储器地址寄,把存储器地址寄存器加存器加1 1,并恢复,并恢复CPUCPU对内存的控制权,对内存的控制权,DMADMA控制器对每一个传送的数据重复上述过程,直到传送控制器对每一个传送的数据重复上述过程,直到传送字节计数器为字节计数器为“0 0”时,向时,向CPUCPU产生一个中断信号。当操作系统接管产生一个中断信号。当操作系统接管CPUCPU控制权时,再无需做块复制控制权时,再无需做块复制的工作了。的工作了。有关技术有关技术 通道技术:通道技术:定义:通道是独立于定义:通道是独立于CPUCPU的专门
23、负责数据输入的专门负责数据输入/输出传输工作的处理机,对外部设备实现统一管理,代输出传输工作的处理机,对外部设备实现统一管理,代替替CPUCPU对输入对输入/输出操作进行控制,从而使输入,输出操作可与输出操作进行控制,从而使输入,输出操作可与CPUCPU并行操作。并行操作。引入通道的目的:引入通道的目的:为了使为了使CPU从从I/O事务中解脱出来,同时为了提高事务中解脱出来,同时为了提高CPU与设备,设备与设备之间的并行工作能力。与设备,设备与设备之间的并行工作能力。分类分类1)字节多路通道字节多路通道 字节多路通道以字节为单位传输信息,它可以分时地执行多个通道程序。当一个通道程序控制某台字节
24、多路通道以字节为单位传输信息,它可以分时地执行多个通道程序。当一个通道程序控制某台设备传送一个字节后,通道硬件就控制转去执行另一个通道程序,控制另一台设备传送信息。设备传送一个字节后,通道硬件就控制转去执行另一个通道程序,控制另一台设备传送信息。主要连接以字节为单位的低速主要连接以字节为单位的低速I/O设备。如打印机,终端。设备。如打印机,终端。以字节为单位交叉传输,当一台传送一个以字节为单位交叉传输,当一台传送一个字节后,立即转去为另一台传送字节。字节后,立即转去为另一台传送字节。2)2)选择通道选择通道 选择通道是以成组方式工作的,即每次传送一批数据,故传送速度很高。选择通道在一段时间内选
25、择通道是以成组方式工作的,即每次传送一批数据,故传送速度很高。选择通道在一段时间内只能执行一个通道程序,只允许一台设备进行数据传输。只能执行一个通道程序,只允许一台设备进行数据传输。当这台设备数据传输完成后,再选择与通道连接的另一台设备,执行它的相应的通道程序。当这台设备数据传输完成后,再选择与通道连接的另一台设备,执行它的相应的通道程序。主要连接磁盘,磁带等高速主要连接磁盘,磁带等高速I/OI/O设备。设备。3)3)成组多路通道成组多路通道 它结合了选择通道传送速度高和字节多路通道能进行分时并行操作的优点。它先为一台设备执它结合了选择通道传送速度高和字节多路通道能进行分时并行操作的优点。它先
26、为一台设备执行一条通道指令,然后自动转接,为另一台设备执行一条通道指令。行一条通道指令,然后自动转接,为另一台设备执行一条通道指令。主要连接高速设备主要连接高速设备 这样,对于连接多台磁盘机的数组多路通道,它可以启动它们同时执行移臂定位操作,然后,这样,对于连接多台磁盘机的数组多路通道,它可以启动它们同时执行移臂定位操作,然后,按序交叉地传输一批批数据。数据多路通道实际上是对通道程序采用多道程序设计的硬件实现。按序交叉地传输一批批数据。数据多路通道实际上是对通道程序采用多道程序设计的硬件实现。IO软件的基本思想是按分层的思想构成,较低层软件要使较高层软件独立于硬件的特性,较高层软软件的基本思想
27、是按分层的思想构成,较低层软件要使较高层软件独立于硬件的特性,较高层软件则要向用户提供一个友好的、清晰的、简单的、功能更强的接口。件则要向用户提供一个友好的、清晰的、简单的、功能更强的接口。3.2.1 I/O软件的目标软件的目标 在设计在设计I IO O软件时的一个关键概念是设备独立性。用户在编写使用软盘或硬盘上文件的程序时,无需为不软件时的一个关键概念是设备独立性。用户在编写使用软盘或硬盘上文件的程序时,无需为不同的设备类型而修改程序就可以使用。同的设备类型而修改程序就可以使用。*设备无关性:设备无关性:与设备独立性密切相关的是统一命名与设备独立性密切相关的是统一命名(uniform nam
28、ing)(uniform naming)这一目标。一个文件或一个设备的名字只应这一目标。一个文件或一个设备的名字只应是一个简单的字符串或一个整数,不应依赖于设备是一个简单的字符串或一个整数,不应依赖于设备.如简单的输入:如简单的输入:sort outputsort output 此时操作系统能够从各种设备上获得输入,也可以做同样的输出。设备的驱动和设备间的差异性此时操作系统能够从各种设备上获得输入,也可以做同样的输出。设备的驱动和设备间的差异性均由操作系统本身来处理。均由操作系统本身来处理。*错误处理错误处理 出错处理是出错处理是I/O软件的另一个目标。一般来说,数据传输中的错误应尽可能地在接
29、近硬件层上软件的另一个目标。一般来说,数据传输中的错误应尽可能地在接近硬件层上处理。由控制器尽可能地处理它所遇到的问题,如果它真的处理不了,再交给设备的驱动程处理。由控制器尽可能地处理它所遇到的问题,如果它真的处理不了,再交给设备的驱动程序,去再进行一次重复操作。如对磁盘的读取。序,去再进行一次重复操作。如对磁盘的读取。尽量把错误交给底层的软件来处理,只有底层软件处理不了的时候再交给较高一层的软件尽量把错误交给底层的软件来处理,只有底层软件处理不了的时候再交给较高一层的软件来处理。来处理。*异步同步问题异步同步问题 数据的传输对数据的传输对I/O硬硬件来说是异步的(大多数),如何在系统中实现异
30、步,需要实现阻塞和唤件来说是异步的(大多数),如何在系统中实现异步,需要实现阻塞和唤醒机制,操作系统中需要有此模拟,是通过中断来实现的,利用中断来实现阻塞和唤醒,实醒机制,操作系统中需要有此模拟,是通过中断来实现的,利用中断来实现阻塞和唤醒,实现符合硬件的异步传输。现符合硬件的异步传输。*独占与共享独占与共享 由于一些设备是独占设备由于一些设备是独占设备(打印机打印机),有些设备是共享设备,有些设备是共享设备(磁盘磁盘),故操作系统需要能够同时处理,故操作系统需要能够同时处理这些设备。这些设备。3.2.2 中断处理程序中断处理程序 *每个进程在启动一个每个进程在启动一个I/O操作后阻塞;操作后
31、阻塞;*直到直到I/O操作完成并产生一个中断;操作完成并产生一个中断;*由操作系统接管由操作系统接管CPUCPU后唤醒该进程为止。后唤醒该进程为止。3.2.3 设备驱动程序设备驱动程序 与设备密切相关的代码放在设备驱动程序中,每个设备驱动程序处理一种设备类型。与设备密切相关的代码放在设备驱动程序中,每个设备驱动程序处理一种设备类型。每一个控制器都设有一个或多个设备寄存器,用来存放向设备发送的命令和参数。设备驱每一个控制器都设有一个或多个设备寄存器,用来存放向设备发送的命令和参数。设备驱动程序负责释放这些命令,并监督它们正确执行。动程序负责释放这些命令,并监督它们正确执行。一般,设备驱动程序的任
32、务是接收来自与设备无关的上层软件的抽象请求,并执行这个请一般,设备驱动程序的任务是接收来自与设备无关的上层软件的抽象请求,并执行这个请求。求。在设备驱动程序的进程释放一条或多条命令后,系统有两种处理方式,多数情况下,执行在设备驱动程序的进程释放一条或多条命令后,系统有两种处理方式,多数情况下,执行设备驱动程序的进程必须等待命令完成。设备驱动程序的进程必须等待命令完成。这样,在命令开始执行后,它阻塞自已,直到中断处理时将它解除阻塞为止(此时,一般这样,在命令开始执行后,它阻塞自已,直到中断处理时将它解除阻塞为止(此时,一般驱动程序需要等待控制器完成一定的操作,故阻塞自己)。而在其它情况下,命令执
33、行不必驱动程序需要等待控制器完成一定的操作,故阻塞自己)。而在其它情况下,命令执行不必延迟就很快完成(如在终端滚动屏幕,需要太多操作,根本不需要阻塞)。延迟就很快完成(如在终端滚动屏幕,需要太多操作,根本不需要阻塞)。3.2.4 与硬件无关的与硬件无关的I/O软件软件 虽然虽然I/O软件中一部分是设备专软件中一部分是设备专用的,但大部分软件是与设备无用的,但大部分软件是与设备无关的。设备驱动程序与设备独立关的。设备驱动程序与设备独立软件之间的确切界限是依赖于具软件之间的确切界限是依赖于具体系统的。体系统的。1.独立于设备的软件的基本任务是实现所有设备都需要的功能,并且向用户级软件提供一个统一的
34、接独立于设备的软件的基本任务是实现所有设备都需要的功能,并且向用户级软件提供一个统一的接口。口。2.如何给文件和设备这样的对象命名是操作系统中的一个主要课题。独立于设备的软件负责把设备的如何给文件和设备这样的对象命名是操作系统中的一个主要课题。独立于设备的软件负责把设备的符号名映射到正确的设备驱动上。符号名映射到正确的设备驱动上。3.设备保护设备保护 系统如何防止无权存取设备的用户存取设备呢?系统如何防止无权存取设备的用户存取设备呢?对设备文件的对设备文件的rwxrwx进行控制,但一般的系统中都不允许访问。进行控制,但一般的系统中都不允许访问。4.不同的磁盘可以采用不同的扇区尺寸。向较高层软件
35、掩盖这一事实并提供大小统一的块尺寸,不同的磁盘可以采用不同的扇区尺寸。向较高层软件掩盖这一事实并提供大小统一的块尺寸,这正是设备独立软件的一个任务。它可将若干扇区合成一个逻辑块。这样,较高层的软件只这正是设备独立软件的一个任务。它可将若干扇区合成一个逻辑块。这样,较高层的软件只与抽象设备打交道,独立于物理扇区的尺寸而使用等长的逻辑块。与抽象设备打交道,独立于物理扇区的尺寸而使用等长的逻辑块。5.缓冲技术缓冲技术 6.设备分配设备分配 7.出错处理出错处理 3.2.5 用户空间的用户空间的I/O软件软件 尽管大部分尽管大部分I/O软件都包含在操作系统中,但仍有一小部分是由与用户程序连接在一起的库
36、过软件都包含在操作系统中,但仍有一小部分是由与用户程序连接在一起的库过程,甚至完全由运行于核外的程序构成。系统调用,包括程,甚至完全由运行于核外的程序构成。系统调用,包括I/O系统调用,通常由库过程实现。系统调用,通常由库过程实现。这些过程所做的工作只是将系统调用时所用的参数放在合适的位置,由其它的这些过程所做的工作只是将系统调用时所用的参数放在合适的位置,由其它的I/O过程实际实过程实际实现真正的操作。现真正的操作。(1 1)用户进程层执行输入输出系统调用,对)用户进程层执行输入输出系统调用,对I/O数据进行格式化,为假脱机输入输出作准备;数据进行格式化,为假脱机输入输出作准备;(2 2)独
37、立于设备的软件实现设备的命名、设备的保护、成块处理、缓冲技术和设备分配;)独立于设备的软件实现设备的命名、设备的保护、成块处理、缓冲技术和设备分配;(3 3)设备驱动程序设置设备寄存器、检查设备的执行状态;)设备驱动程序设置设备寄存器、检查设备的执行状态;(4 4)中断处理程序负责)中断处理程序负责I IO O完成时,唤醒设备驱动程序进程,进行中断处理;完成时,唤醒设备驱动程序进程,进行中断处理;(5 5)硬件层实现物理)硬件层实现物理I IO O的操作。的操作。死锁的现象死锁的现象*死锁的定义:死锁的定义:一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的一组
38、进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。资源,这种现象称为进程死锁,这一组进程就称为死锁进程。出现死锁,必然出现:出现死锁,必然出现:死锁(死锁(DeadlockDeadlock)饥饿(饥饿(StarvationStarvation)*关于死锁的一些结论:关于死锁的一些结论:参与死锁的进程最少是两个;参与死锁的进程最少是两个;(两个以上进程才会出现死锁)(两个以上进程才会出现死锁)参与死锁的进程至少有两个已经占有资源;参与死锁的进程至少有两个已经占有资源;参与死锁的所有进程都在等待资源;参与死锁的所有进
39、程都在等待资源;参与死锁的进程是当前系统中所有进程的子集。参与死锁的进程是当前系统中所有进程的子集。注:注:如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃。如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃。3.3.1资源资源 资源是在任何时刻只能被单个进程使用的对象资源是在任何时刻只能被单个进程使用的对象 可剥夺式资源可剥夺式资源 不可剥夺式资源不可剥夺式资源 对于打印的过程(可剥夺式资源是存储器,不可剥夺式资源是打印机)对于打印的过程(可剥夺式资源是存储器,不可剥夺式资源是打印机)对于任一个资源,它本身必存在一个固定的模式。对于任一个资源,它本身必存在一个固定的模式。“被申请被申请被分
40、配被分配被使用被使用被释放被释放”模式。模式。3.3.2 3.3.2 死锁的原理死锁的原理一般来说,死锁时,没有一个进程可以触发那个能够唤醒本集合中另一个进程的时间,所以所有的进一般来说,死锁时,没有一个进程可以触发那个能够唤醒本集合中另一个进程的时间,所以所有的进程都将永远等待下去。程都将永远等待下去。*发生死锁的四个必要条件:发生死锁的四个必要条件:1.1.互斥使用,每一资源或者已被分配给一个进程,或者空闲;(资源独占)互斥使用,每一资源或者已被分配给一个进程,或者空闲;(资源独占)2.2.保持和等待,一个进程在申请新的资源的同时保持对原有资源的占有;保持和等待,一个进程在申请新的资源的同
41、时保持对原有资源的占有;(只有这样才是动态申请,动态分配)(只有这样才是动态申请,动态分配)3.3.不可强占不可强占,资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放;资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放;4.4.循环等待,即必然有一条由两个或多个进程组成的循环链,链中每个进程都在等待相邻进程占用的资循环等待,即必然有一条由两个或多个进程组成的循环链,链中每个进程都在等待相邻进程占用的资源。源。存在一个进程等待队列存在一个进程等待队列 P1,P2,Pn,其中其中P1等待等待P2占有的资源,占有的资源,P2等待等待P3占有的资源,占有的资源
42、,Pn等待等待P1占有的资源,形成一个进程等占有的资源,形成一个进程等待环路。待环路。*死锁的解决方案死锁的解决方案1.1.产生死锁的例子产生死锁的例子 申请不同类型资源产生死锁申请不同类型资源产生死锁 P1P1:申请打印机申请打印机申请扫描仪申请扫描仪使用使用释放打印机释放打印机释放扫描仪释放扫描仪P2P2:申请扫描仪申请扫描仪申请打印机申请打印机使用使用释放打印机释放打印机释放扫描仪释放扫描仪申请同类资源产生死锁申请同类资源产生死锁(如内存)(如内存)设有资源设有资源R R,R R有有m m个分配单位,由个分配单位,由n n个进程个进程P P1 1,P,P2 2,P,Pn n(n mn m
43、)共享。假设每个进程对)共享。假设每个进程对R R的申请的申请和释放符合下列原则:和释放符合下列原则:*一次只能申请一个单位一次只能申请一个单位 *满足总申请后才能使用满足总申请后才能使用 *使用完后一次性释放使用完后一次性释放申请同类资源产生死锁(如内存)申请同类资源产生死锁(如内存)m=2m=2,n=3n=3资源分配不当导致死锁产生资源分配不当导致死锁产生*处理死锁的方法处理死锁的方法1.1.忽略死锁的发生;忽略死锁的发生;2.2.检测死锁并恢复;检测死锁并恢复;3.3.谨慎对资源进行动态分配,避免死锁;谨慎对资源进行动态分配,避免死锁;4.4.通过破坏上述四个必要条件来预防死锁的发生。通
44、过破坏上述四个必要条件来预防死锁的发生。3.3.5 死锁预防死锁预防定义:定义:在系统设计时确定资源分配算法,保证不发生死锁。具体的做法是破坏产生死锁的四个必要条件在系统设计时确定资源分配算法,保证不发生死锁。具体的做法是破坏产生死锁的四个必要条件之一。之一。破坏破坏“互斥使用互斥使用”条件条件 对于打印机这类设备,利用假脱机等技术来避免进程之间的资源竞争,而是利用监控程序来统对于打印机这类设备,利用假脱机等技术来避免进程之间的资源竞争,而是利用监控程序来统一调配。一调配。破坏破坏“请求和保持请求和保持”条件条件 要求每个进程在运行前必须一次性申请它所要求的所有资源,且仅当该进程所要资源均可满
45、足时才给予要求每个进程在运行前必须一次性申请它所要求的所有资源,且仅当该进程所要资源均可满足时才给予一次性分配。一次性分配。另一方案,当进程申请时,先释放掉自己的资源再进行申请,当申请成功后再收回刚才自己的资源。另一方案,当进程申请时,先释放掉自己的资源再进行申请,当申请成功后再收回刚才自己的资源。问题:问题:对于第一种方案,资源数目的判断只有在运行时才知道,而且效率无法提高。对于第一种方案,资源数目的判断只有在运行时才知道,而且效率无法提高。破坏破坏“循环等待循环等待”条件条件 采用资源有序分配法:采用资源有序分配法:把系统中所有资源编号,进程在申请资源时必须严格按资源编号的递增次序进行,否
46、则操作系统不把系统中所有资源编号,进程在申请资源时必须严格按资源编号的递增次序进行,否则操作系统不予分配。予分配。破坏破坏“不可剥夺不可剥夺”条件条件 在允许进程动态申请资源前提下规定,一个进程在申请新的资源不能立即得到满足而变为等待状态在允许进程动态申请资源前提下规定,一个进程在申请新的资源不能立即得到满足而变为等待状态之前,必须释放已占有的全部资源,若需要再重新申请。之前,必须释放已占有的全部资源,若需要再重新申请。3.3.6 死锁避免死锁避免定义:定义:在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果在系统运行过程中,对进程发出的每一个系统能够满足的
47、资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配。决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配。安全状态与不安全状态安全状态与不安全状态安全状态:安全状态:如果存在一个由系统中所有进程构成的安全序列如果存在一个由系统中所有进程构成的安全序列P P1 1,PPn n,则系统处于安全状态。,则系统处于安全状态。安全序列:安全序列:一个进程序列一个进程序列PP1 1,P Pn n 是安全的,如果对于每一个进程是安全的,如果对于每一个进程P Pi i(1(1i in n),它以后尚需要的资源量不),它以后尚需要的资源量不超
48、过系统当前剩余资源量与所有进程超过系统当前剩余资源量与所有进程P Pj j(j i)(j i)当前占有资源量之和,系统处于安全状态。当前占有资源量之和,系统处于安全状态。(安全状态一定是没有死锁发生的安全状态一定是没有死锁发生的)安全状态与不安全状态安全状态与不安全状态不安全状态不安全状态:不存在一个安全序列,不安全状态一定导致死锁不存在一个安全序列,不安全状态一定导致死锁银行家算法银行家算法(单种资源单种资源)银行家算法银行家算法当进程当进程pipi提出资源申请时,系统执行下列步骤:提出资源申请时,系统执行下列步骤:(1 1)若)若RequestiNeedi,RequestiNeedi,转(
49、转(2 2););否则错误返回否则错误返回(2 2)若若RequestiAvailable,RequestiAvailable,转(转(3 3);否则进程等待);否则进程等待(3(3)假设系统分配了资源,则有:)假设系统分配了资源,则有:Available:=Available-Requesti;Available:=Available-Requesti;Allocationi:=Allocationi:=Allocationi+Requesti;Allocationi+Requesti;Needi:=Needi-RequestiNeedi:=Needi-Requesti若系统新状态是安全的,
50、则分配完成若系统新状态是安全的,则分配完成若系统新状态是不安全的,则恢复原状态,进程等待若系统新状态是不安全的,则恢复原状态,进程等待银行家算法银行家算法为进行安全性检查,定义数据结构:为进行安全性检查,定义数据结构:Work:ARRAY1.m of integer;Work:ARRAY1.m of integer;Finish:ARRAY1.n of Boolean;Finish:ARRAY1.n of Boolean;银行家算法银行家算法安全性检查的步骤:安全性检查的步骤:(1)Work:=Available;(1)Work:=Available;Finish:=false;Finish: