计算机控制第3章_第1页
计算机控制第3章_第2页
计算机控制第3章_第3页
计算机控制第3章_第4页
计算机控制第3章_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

1、第第3 3章章 实时多任务系统实时多任务系统3.1 3.1 概要概要 在控制系统中,一个实时应用(在控制系统中,一个实时应用(ApplicationApplication)通常包括若干控制流。为了有效地运行有多个控通常包括若干控制流。为了有效地运行有多个控制流的复杂的应用,应该将应用分解为若干个与制流的复杂的应用,应该将应用分解为若干个与控制流相对应的任务(控制流相对应的任务(tasktask)加以处理。现代控)加以处理。现代控制系统广泛使用实时操作系统(制系统广泛使用实时操作系统(Real Time Real Time KernelKernel)的基本功能为主线,介绍实时多任务系)的基本功能

2、为主线,介绍实时多任务系统的基本问题,包括以下内容:统的基本问题,包括以下内容: 实时系统中的多任务调度。实时系统中的多任务调度。 实时系统中的基本问题,如同步与互斥,优先级实时系统中的基本问题,如同步与互斥,优先级反转等等。反转等等。 分布式控制系统中的实时通信。分布式控制系统中的实时通信。 此外,本章也介绍两种不使用实时操作系统的多此外,本章也介绍两种不使用实时操作系统的多任务方法,前台任务方法,前台/ /后台系统和循环调度系统,它们后台系统和循环调度系统,它们由于简单可靠,至今仍在控制系统中广泛使用。由于简单可靠,至今仍在控制系统中广泛使用。3.23.2、实时系统和实时操作系统、实时系统

3、和实时操作系统1 1、实时系统、实时系统实时计算机系统的定义是:能够在确定的时间实时计算机系统的定义是:能够在确定的时间内运行其功能并对外部的异步事件作出响应的内运行其功能并对外部的异步事件作出响应的计算机系统。应注意到,计算机系统。应注意到,“确定的时间确定的时间”是对是对实时系统的最根本的要求,实时系统处理的正实时系统的最根本的要求,实时系统处理的正确性不仅取决于处理结果的逻辑上的正确性,确性不仅取决于处理结果的逻辑上的正确性,更取决于获得该结果所需的时间。例如,一个更取决于获得该结果所需的时间。例如,一个在大多数情况下能在在大多数情况下能在20us20us作出响应,但是偶然作出响应,但是

4、偶然需要需要100us100us响应时间的系统,它的实时性能要响应时间的系统,它的实时性能要劣于一个能在任何情况下以劣于一个能在任何情况下以500us500us作出响应的作出响应的系统。系统。 高性能的实时系统,其硬件结构应该具有高的计高性能的实时系统,其硬件结构应该具有高的计算速度、高速中断处理和高的算速度、高速中断处理和高的I/OI/O通过能力。但是通过能力。但是应该认识到,应该认识到,“实时实时”和和“快速快速”是两个不同的是两个不同的概念。计算机系统处理速度的快慢,主要取决于概念。计算机系统处理速度的快慢,主要取决于它的硬件系统,尤其是所采用的处理器的性能。它的硬件系统,尤其是所采用的

5、处理器的性能。对一个特定的计算机系统,它的处理速度无论怎对一个特定的计算机系统,它的处理速度无论怎样高,如果采用的是普通操作系统,就没有实时样高,如果采用的是普通操作系统,就没有实时性可言。在现代控制系统中,实时操作系统是实性可言。在现代控制系统中,实时操作系统是实时系统的核心。时系统的核心。 在控制系统中广泛采用实时计算机组成应用系统,在控制系统中广泛采用实时计算机组成应用系统,实时系统通常运行两类典型的工作。实时系统通常运行两类典型的工作。 一类是在预期的时间限制内,确认和响应外部的一类是在预期的时间限制内,确认和响应外部的事件事件; ; 另一类处理和储存大量的来自被控系统的数据。另一类处

6、理和储存大量的来自被控系统的数据。对于第对于第1 1类工作,任务响应时间、中断等待时间和类工作,任务响应时间、中断等待时间和中断处理能力是最重要的,将它称为中断型的。中断处理能力是最重要的,将它称为中断型的。第第2 2类是计算型的工作,要求很好的处理速度和吞类是计算型的工作,要求很好的处理速度和吞吐能力。在实际应用中,经常遇到的是兼具两种吐能力。在实际应用中,经常遇到的是兼具两种要求的中断要求的中断/ /计算混合型的实时系统。计算混合型的实时系统。 不同的实时应用,对任务响应时间、中断等待时不同的实时应用,对任务响应时间、中断等待时间、计算和吞吐能力是有不同的要求。间、计算和吞吐能力是有不同的

7、要求。 限定时间(限定时间(deadlinedeadline)是指一个任务不被处理的)是指一个任务不被处理的最长时间。最长时间。 根据对限定时间的不同要求,实时系统可以分为根据对限定时间的不同要求,实时系统可以分为硬实时系统、强实时系统和弱实时系统。而在一硬实时系统、强实时系统和弱实时系统。而在一般的实时应用中,往往既包含强实时性任务也包般的实时应用中,往往既包含强实时性任务也包含弱实时性任务。含弱实时性任务。 弱实时(弱实时(soft real timesoft real time)系统的基本特征是)系统的基本特征是: :要求要求的响应时间和处理时间既短又要确定,如果超出的响应时间和处理时间

8、既短又要确定,如果超出限定时间,所产生的结果就不可用。限定时间,所产生的结果就不可用。 硬实时(硬实时(hard real timehard real time)系统,如果超出限定时)系统,如果超出限定时间,就会造成灾难性后果。例如一个核电站,它间,就会造成灾难性后果。例如一个核电站,它对数据采集和处理的要求就高的多,必须密切地、对数据采集和处理的要求就高的多,必须密切地、连续地监测和控制电站设备的各项功能,以防止连续地监测和控制电站设备的各项功能,以防止核事故或者突然的停电或关机,响应时间稍有超核事故或者突然的停电或关机,响应时间稍有超出,就可能造成灾难性后果,或者对安全生产或出,就可能造成

9、灾难性后果,或者对安全生产或发电成本有很大影响。从总体性能来说强实时和发电成本有很大影响。从总体性能来说强实时和硬实时更注重峰值(硬实时更注重峰值(I/OI/O)负载下的性能。)负载下的性能。 在单处理器的嵌入式应用中,可以在单处理器的嵌入式应用中,可以s s要求,通常是要求,通常是在设备控制级实现在设备控制级实现; ;对前端计算机(对前端计算机(IOCIOC)的实时)的实时要求通常低于设备控制器要求通常低于设备控制器; ;而操作员接口计算机而操作员接口计算机(OPIOPI)则往往是弱实时或者非实时的,它们运)则往往是弱实时或者非实时的,它们运行通用的桌面操作系统。行通用的桌面操作系统。2 2

10、、实时操作系统、实时操作系统操作系统是计算机运行以及所有资源的管理者,操作系统是计算机运行以及所有资源的管理者,包括任务管理、任务间的信息传递、包括任务管理、任务间的信息传递、I/OI/O设备管理、设备管理、内存管理和文件系统的管理等等。从外部来看,内存管理和文件系统的管理等等。从外部来看,操作系统提供了与使用者、程序及硬件的接口,操作系统提供了与使用者、程序及硬件的接口,操作系统与计算机操作系统与计算机I/OI/O硬件设备的接口是设备驱动硬件设备的接口是设备驱动器,应用程序与操作系统之间的接口是系统调用。器,应用程序与操作系统之间的接口是系统调用。通用计算机系统中运行的桌面操作系统,通用计算

11、机系统中运行的桌面操作系统,WindowsWindows和和UNIXUNIX(LinuxLinux)。控制系统主要使用)。控制系统主要使用实时操作系统。大多数实时操作系统的结构依照实时操作系统。大多数实时操作系统的结构依照UNIXUNIX操作系统的风格,所以它们又称为操作系统的风格,所以它们又称为“类类UNIX”UNIX”操作系统。操作系统。 3.33.3微内核微内核 现代的实时操作系统的内核(现代的实时操作系统的内核(kernelkernel)通常采用)通常采用客户客户/ /服务者方式,或称为微内核(服务者方式,或称为微内核(microkernelmicrokernel)方式,微内核通常只保

12、留任务调度和任务间通讯方式,微内核通常只保留任务调度和任务间通讯等几项功能,它依据客户报务者模型概念,把等几项功能,它依据客户报务者模型概念,把所有其他的操作系统功能都变成一个个用户态的所有其他的操作系统功能都变成一个个用户态的服务器,而用户任务则被当做客户。客户要用到服务器,而用户任务则被当做客户。客户要用到操作系统时,其实就是通过微内核与服务器通讯操作系统时,其实就是通过微内核与服务器通讯而已,微内核验证消息的有效性,在客户和服务而已,微内核验证消息的有效性,在客户和服务器之间传递它们并核准对硬件的存取,这样,微器之间传递它们并核准对硬件的存取,这样,微内核仅仅成为传递消息的工具。内核仅仅

13、成为传递消息的工具。 微内核将与微内核将与CPUCPU有关的硬件细节都包含在很小的有关的硬件细节都包含在很小的内核里,其他部分与硬件无关,这样,整个操作内核里,其他部分与硬件无关,这样,整个操作系统就很容易移植。如果要扩展功能,仅只是增系统就很容易移植。如果要扩展功能,仅只是增加相应的服务器而已。在微内核方式下,各个服加相应的服务器而已。在微内核方式下,各个服务器都是独立的用户态任务,有自己的内存保护务器都是独立的用户态任务,有自己的内存保护空间,以标准的方式通讯,一个服务器出错,不空间,以标准的方式通讯,一个服务器出错,不会导致整个系统崩溃。此外,微内核操作系统的会导致整个系统崩溃。此外,微

14、内核操作系统的各种服务器可以分别在不同的处理机上运行,适各种服务器可以分别在不同的处理机上运行,适合分布式系统。合分布式系统。 计算机系统里的所有活动,被分解为一个个任务计算机系统里的所有活动,被分解为一个个任务(tasktask)运行。简单地说,任务就是装入计算机内)运行。简单地说,任务就是装入计算机内正在运行的程序。程序是由指令和数据集所组成的正在运行的程序。程序是由指令和数据集所组成的可运行文件,而任务则是运行中的程序,它包括程可运行文件,而任务则是运行中的程序,它包括程序和与这个程序有关的数据及计算机资源等,每个序和与这个程序有关的数据及计算机资源等,每个任务都占有自己的地址空间,包括

15、堆栈区、代码区任务都占有自己的地址空间,包括堆栈区、代码区和数据区。和数据区。 UNIXUNIX操作系统与实时操作系统的核心区别是它们操作系统与实时操作系统的核心区别是它们任务调度方式的不同,任务调度方式的不同,UNIXUNIX公平地对待所有的任公平地对待所有的任务,采用轮转调度等方法来调度任务。实时操作系务,采用轮转调度等方法来调度任务。实时操作系统采用基于优先级的抢先方式来调度任务,调度器统采用基于优先级的抢先方式来调度任务,调度器可以打断正在运行的任务,让优先级更高的任务优可以打断正在运行的任务,让优先级更高的任务优先运行,从而保证对高优级的事件在确定的时间里先运行,从而保证对高优级的事

16、件在确定的时间里作出响应。作出响应。 3.43.4内核态和用户态内核态和用户态 操作系统内核的任务(服务器)称为内核任务,操作系统内核的任务(服务器)称为内核任务,它们运行在内核态,又称内核空间。内核作为计它们运行在内核态,又称内核空间。内核作为计算机系统资源的管理者,必须对算机系统资源的管理者,必须对CPUCPU具有超过一具有超过一般用户的控制权,内核任务工作在般用户的控制权,内核任务工作在CPUCPU的管态的管态(Supervisor StateSupervisor State), ,可以访问所有资源,执行所可以访问所有资源,执行所有有CPUCPU指令。指令。 工作在用户态(用户空间)的服

17、务器和应用任务工作在用户态(用户空间)的服务器和应用任务无法执行无法执行CPUCPU的特权指令,它们对系统资源的访的特权指令,它们对系统资源的访问以及对系统其他部分的影响是受到限制的,它问以及对系统其他部分的影响是受到限制的,它们只能通过执行系统调用来访问系统资源。在不们只能通过执行系统调用来访问系统资源。在不特别指明情况下,本章把应用任务简称为任务。特别指明情况下,本章把应用任务简称为任务。 3.53.5实时执行器实时执行器 不包括文件管理功能的实时操作系统称为实时执不包括文件管理功能的实时操作系统称为实时执行器(行器(Real Time Executive,RTEXReal Time Ex

18、ecutive,RTEX)或实时内核)或实时内核(Real Time KernelReal Time Kernel),事实上,实时执行器在控),事实上,实时执行器在控制系统得到更广泛的应用。在本章以下的内容,制系统得到更广泛的应用。在本章以下的内容,如不特别指出,谈到实时操作系统,即是指实时如不特别指出,谈到实时操作系统,即是指实时执行器。执行器。 实时操作系统的多任务方式也带来了一系列需要实时操作系统的多任务方式也带来了一系列需要解决的问题,例如任务之间的同步和互斥、生产解决的问题,例如任务之间的同步和互斥、生产和消费、死锁、饥饿和优先级反转问题。和消费、死锁、饥饿和优先级反转问题。 3.6

19、3.6、运行多任务的简单系统、运行多任务的简单系统 对于较为简单的控制应用,并不一定需要实时操对于较为简单的控制应用,并不一定需要实时操作系统的管理。方法之一是采用前台作系统的管理。方法之一是采用前台/ /后台方式运后台方式运行多个控制流,这种方法适合用来实现功能比较行多个控制流,这种方法适合用来实现功能比较简单的应用,但是不具有实时性。另一个行之有简单的应用,但是不具有实时性。另一个行之有效的、简单的实时控制的方法称为循环调度方式,效的、简单的实时控制的方法称为循环调度方式,它适用于控制周期性任务。它适用于控制周期性任务。 1 1、前台、前台/ /后台系统后台系统 控制系统中,最简单的运行多

20、个控制流的方法是控制系统中,最简单的运行多个控制流的方法是前台前台/ /后台(后台(foreground/backgroundforeground/background)方式,又)方式,又称为超循环方式。前台称为超循环方式。前台/ /后台系统包含一个称为后台系统包含一个称为“后台后台”的无限循环程序,在的无限循环程序,在C C语言程序中就是语言程序中就是mainmain(),它顺序地调用各个应用模块,运行所(),它顺序地调用各个应用模块,运行所设计的操作(例如设计的操作(例如I/OI/O操作)操作); ;同时,同时, 中断服务程中断服务程序(序(ISRISR)用来处理异步事件,称为)用来处理异

21、步事件,称为“前台前台”程序,程序,显然前台的显然前台的ISRISR是抢先后台程序运行的。前台是抢先后台程序运行的。前台/ /后后台系统是一种事件驱动(台系统是一种事件驱动(event-drivenevent-driven)的系统。)的系统。 在通常的程序设计中,要求中断处理尽快完成,在通常的程序设计中,要求中断处理尽快完成,以免影响其他中断处理或者任务的执行。以免影响其他中断处理或者任务的执行。ISRISR在取在取得中断设备传来的数据和状态信息之后就应该立得中断设备传来的数据和状态信息之后就应该立即退出,将处理工作交由一般任务来完成。而在即退出,将处理工作交由一般任务来完成。而在前台前台/

22、/后台系统中,为了及时处理异步事件,必须后台系统中,为了及时处理异步事件,必须在在ISRISR中完成全部处理,这样,中断服务程序就比中完成全部处理,这样,中断服务程序就比通常的中断处理占用较长的时间。通常的中断处理占用较长的时间。 可编程逻辑控制器(可编程逻辑控制器(PLCPLC)是使用前台)是使用前台/ /后台方式后台方式的典型例子。的典型例子。PLCPLC的前台用来处理网络通信和时的前台用来处理网络通信和时钟管理等异步事件,而所有钟管理等异步事件,而所有I/OI/O操作都在后台以操作都在后台以“扫描扫描”方式顺序运行。方式顺序运行。 前台前台/ /后台方式无法满足实时性要求。首先,由中后台

23、方式无法满足实时性要求。首先,由中断服务程序而引入到后台处理的信息,并不能立断服务程序而引入到后台处理的信息,并不能立即得到处理,必须等到后台循环轮到之后才得到即得到处理,必须等到后台循环轮到之后才得到处理,这样,异步事件在最坏情况下的响应时间,处理,这样,异步事件在最坏情况下的响应时间,取决于运行一轮后台循环所需要的时间。以取决于运行一轮后台循环所需要的时间。以PLCPLC为例,由前台通信取得的对某个为例,由前台通信取得的对某个I/OI/O通道的开头命通道的开头命令,如果恰好发生在该通道刚被扫描之后(最坏令,如果恰好发生在该通道刚被扫描之后(最坏情况),则后台必须循环整整一轮之后才能再次情况

24、),则后台必须循环整整一轮之后才能再次查询到并执行这个查询到并执行这个I/OI/O开头命令。而且由于前台异开头命令。而且由于前台异步事件的插入,后台扫描循环一周所需的时间是步事件的插入,后台扫描循环一周所需的时间是不能准确预测的。不能准确预测的。 其次,后台扫描循环一周所需的时间还会随着新其次,后台扫描循环一周所需的时间还会随着新加入的应用模块(加入的应用模块(I/OI/O操作)而增加。仍以操作)而增加。仍以PLCPLC为为例,如果扫描器(处理机)最初只处理例,如果扫描器(处理机)最初只处理1 1个个3232通道通道的的I/OI/O模块,后来新增加一个模块,后来新增加一个1616通道的通道的I

25、/OI/O模块,模块,则所用的循环扫描时间就会增加许多。以上这些则所用的循环扫描时间就会增加许多。以上这些因素,造成前台因素,造成前台/ /后台方式不能在预定的时间内响后台方式不能在预定的时间内响应异步事件,因而它不具有实时性。应异步事件,因而它不具有实时性。前台前台/ /后台方式简单可靠而且易于实现,无需后台方式简单可靠而且易于实现,无需实时操作系统支持。采用前台实时操作系统支持。采用前台/ /后台方式的后台方式的PLCPLC虽然不够实时,但只要所扫描的虽然不够实时,但只要所扫描的I/OI/O模块模块不是特别多(至多装满一个机箱),却也足不是特别多(至多装满一个机箱),却也足够够“快快”,响

26、应时间在,响应时间在1010100ms100ms量级,可量级,可以满足许多场合的控制需要,加之以满足许多场合的控制需要,加之PLCPLC的编的编程极为简单(称为程极为简单(称为lad logiclad logic), ,因此在工业控因此在工业控制领域得到广泛应用。制领域得到广泛应用。 2 2、循环调度系统、循环调度系统 对于周期性的、顺序执行的若干任务,可以采用对于周期性的、顺序执行的若干任务,可以采用循环执行(循环执行(Cyclic ExecutiveCyclic Executive)的方法来运行,又)的方法来运行,又称为时间线(称为时间线(TimelineTimeline)方法。它将各个不

27、同频)方法。它将各个不同频率的任务按静态设计好的顺序排列,由定时器中率的任务按静态设计好的顺序排列,由定时器中断产生的定时节拍(断产生的定时节拍(ticktick)所驱动,定时节拍的频)所驱动,定时节拍的频率是各个任务运行频率的最小公倍数,任务在分率是各个任务运行频率的最小公倍数,任务在分割的时间片中运行,一个任务运行结束之后,另割的时间片中运行,一个任务运行结束之后,另一个任务开始运行。一个任务开始运行。 设计循环执行系统,要保证每个时间片内任务运行设计循环执行系统,要保证每个时间片内任务运行的总时间小于时间片长度的总时间小于时间片长度,在上述例子中,即是,在上述例子中,即是要求要求Ca+C

28、bCa+Cb,Ca+Cc,Ca+Cc, ,如果不能满足这个要求,如果不能满足这个要求,就需要把执行时间过长的任务分割为较短的子任务就需要把执行时间过长的任务分割为较短的子任务来设计。来设计。 循环执行方法的不足之处首先是它只能用于调度周循环执行方法的不足之处首先是它只能用于调度周期性任务。其次,它通常只有采用查询的方式。如期性任务。其次,它通常只有采用查询的方式。如果要在其中加入果要在其中加入I/OI/O事件驱动(外部中断驱动),则事件驱动(外部中断驱动),则系统设计就比较复杂。加入中断处理的主要困难在系统设计就比较复杂。加入中断处理的主要困难在于如何将中断服务程序于如何将中断服务程序ISRI

29、SR的数据可靠传递给任务。的数据可靠传递给任务。一个方法是分别为一个方法是分别为ISRISR和任务开设互相分隔的缓冲区,和任务开设互相分隔的缓冲区,ISRISR的数据写入自己的缓冲区,在进入定时器节拍中的数据写入自己的缓冲区,在进入定时器节拍中断时,屏蔽所有中断,将断时,屏蔽所有中断,将ISRISR缓冲区的数据拷贝到任缓冲区的数据拷贝到任务缓冲区,然后开中断,进行任务调度。这种方法务缓冲区,然后开中断,进行任务调度。这种方法的缺点是,通过中断所取得的的缺点是,通过中断所取得的I/OI/O数据,不能立即传数据,不能立即传递给任务,会有一段延迟。递给任务,会有一段延迟。 循环执行方法中,往往只有一

30、个任务能保证强实时循环执行方法中,往往只有一个任务能保证强实时性。在一个时间片里,只有第一个任务是准确地被性。在一个时间片里,只有第一个任务是准确地被时钟节拍中断所启动,后续的任务可能因前一个任时钟节拍中断所启动,后续的任务可能因前一个任务运行时间的不确定性(例如,存在与数据有关的务运行时间的不确定性(例如,存在与数据有关的循环)而出现时间晃动。循环)而出现时间晃动。 由于循环执行方法的任务调度模块与应用模块之间由于循环执行方法的任务调度模块与应用模块之间存在强耦合,当应用模块需要改动时,任务调度模存在强耦合,当应用模块需要改动时,任务调度模块也必须改动(事实上一旦设计完成,很难进行扩块也必须

31、改动(事实上一旦设计完成,很难进行扩充或改动)。例如,初始设计充或改动)。例如,初始设计A A、B B和和C C个任务的周个任务的周期分别为期分别为250ms250ms、50ms50ms和和100ms,100ms,则主循环则主循环T=100ms,T=100ms,次循环(时间片)次循环(时间片)=25ms=25ms。如果将。如果将B B任务运行周期改为任务运行周期改为40ms40ms,则主循环,则主循环T=200ms,T=200ms,次循次循环环=5ms=5ms,前后两个设计的差别十分之大。,前后两个设计的差别十分之大。 循环执行方法是一种时间驱动(循环执行方法是一种时间驱动(time-driv

32、entime-driven)的)的方法。尽管有以上缺点,但这个方法简单,可靠方法。尽管有以上缺点,但这个方法简单,可靠性高,运行开销小而又具有实时性,而且由于任性高,运行开销小而又具有实时性,而且由于任务之间共享数据,很容易保证任务间数据交换的务之间共享数据,很容易保证任务间数据交换的完整性。因此这种方法很长时间里一直被用于空完整性。因此这种方法很长时间里一直被用于空中交通管制、空间飞船和飞机(例如波音中交通管制、空间飞船和飞机(例如波音777777)等生命安全级(等生命安全级(safety-criticalsafety-critical)高的可靠控制系统)高的可靠控制系统中。中。 3.73.

33、7、实时多任务系统、实时多任务系统 处理多任务的理想方法之一是采用紧耦合多处理处理多任务的理想方法之一是采用紧耦合多处理机(机(multi-processormulti-processor)系统,让每个处理机各处)系统,让每个处理机各处理一个任务。这种方法真正做到了在同一时刻运理一个任务。这种方法真正做到了在同一时刻运行多个任务,称为并行处理。这种处理复杂应用行多个任务,称为并行处理。这种处理复杂应用的紧耦合多处理机系统,在分布式控制系统中应的紧耦合多处理机系统,在分布式控制系统中应用并不普遍,不是本章研究的内容。用并不普遍,不是本章研究的内容。 分布式控制系统中的各个节点普遍使用单处理机分布

34、式控制系统中的各个节点普遍使用单处理机系统。单处理机系统在实时操作系统调度的下,系统。单处理机系统在实时操作系统调度的下,可以使若干任务并发地运行,构成所谓多任务可以使若干任务并发地运行,构成所谓多任务(multitaskingmultitasking)系统,事实上,无论是大型的分)系统,事实上,无论是大型的分布式系统还是小型的嵌入式系统,实时控制系统布式系统还是小型的嵌入式系统,实时控制系统大多数是以这种方式运行的。并发处理大多数是以这种方式运行的。并发处理(concurrent processingconcurrent processing)是指在一段时间里调度)是指在一段时间里调度若干任

35、务若干任务“同时同时”运行,其实具体到任何时刻,运行,其实具体到任何时刻,系统中只能有一个任务在运行,因为只有一个处系统中只能有一个任务在运行,因为只有一个处理机。并发处理被看作是一种伪并行机制。理机。并发处理被看作是一种伪并行机制。 一、任务及任务切换一、任务及任务切换 1 1、任务、任务 在操作系统管理下,复杂的应用被分解为若干任在操作系统管理下,复杂的应用被分解为若干任务(务(tasktask),每个任务执行一项特定的工作。如),每个任务执行一项特定的工作。如前所说,任务就是运行中的程序,每个任务所对前所说,任务就是运行中的程序,每个任务所对应的程序通常是一个顺序执行的无限循环,自以应的

36、程序通常是一个顺序执行的无限循环,自以为占用全部为占用全部CPUCPU资源,而事实上对于单处理机系资源,而事实上对于单处理机系统,任何时刻只可能有一个任务在运行,诸多任统,任何时刻只可能有一个任务在运行,诸多任务是在操作系统的调度下交错地(并发地)运行。务是在操作系统的调度下交错地(并发地)运行。 一个任务可以处在以下三种状态之一一个任务可以处在以下三种状态之一 运行(运行(RunningRunning)态,任务正在运行。在任何时)态,任务正在运行。在任何时刻,只可能有一个任务处在运行态。在待命态排刻,只可能有一个任务处在运行态。在待命态排队的任务,可以受调度器的派遣(队的任务,可以受调度器的

37、派遣(dispatchdispatch)而进)而进入运行态。入运行态。 待命(待命(ReadyReady)态,任务准备好可以运行,但目)态,任务准备好可以运行,但目前还未运行前还未运行 ,需要得到调度器的派遣才能进入运,需要得到调度器的派遣才能进入运行态。处在待命态的任务,以某种规则排队等待行态。处在待命态的任务,以某种规则排队等待进入运行态。处在运行态的任务可以由于各种原进入运行态。处在运行态的任务可以由于各种原因(与调度方式和调度策略有关)被调度器重新因(与调度方式和调度策略有关)被调度器重新安排到待命队列去排队。安排到待命队列去排队。 阻塞(阻塞(BlockedBlocked)态。正在运

38、行的任务)态。正在运行的任务可能因为作系统调用等待一个外部事可能因为作系统调用等待一个外部事件任务而阻塞,此时只有被外部事件件任务而阻塞,此时只有被外部事件产生的中断所唤醒(激活),才能从产生的中断所唤醒(激活),才能从阻塞态进入待命态阻塞态进入待命态; ;任务也可能在请求任务也可能在请求一个资源时需要等待而被阻塞,例如一个资源时需要等待而被阻塞,例如一个想使用打印机的任务,发须等待一个想使用打印机的任务,发须等待其他任务使用完打印机之后才能继续其他任务使用完打印机之后才能继续工作工作 2 2、任务周境切换、任务周境切换 每个任务除了包含程序和相应的数据之外,还有每个任务除了包含程序和相应的数

39、据之外,还有一个用来描述该任务的数据结构,称之为任务控一个用来描述该任务的数据结构,称之为任务控制块(制块(TCBTCB)。)。TCBTCB中包括了任务的当前状态、中包括了任务的当前状态、优先级、要等待的事件或资源、任务程序代码的优先级、要等待的事件或资源、任务程序代码的起始地址、初始堆栈指针等信息,调度器在唤醒起始地址、初始堆栈指针等信息,调度器在唤醒一个任务时,要用到任务控制块。为了保持系统一个任务时,要用到任务控制块。为了保持系统的一致性,任务不能直接对自己的的一致性,任务不能直接对自己的TCBTCB寻址,只寻址,只能通过系统调用加以修改。能通过系统调用加以修改。 TCBTCB中的大部分

40、内容构成任务的周境(中的大部分内容构成任务的周境(contextcontext)。)。任务的周境就是指当一个运行中的任务被阻塞任务的周境就是指当一个运行中的任务被阻塞(或重新运行)时,所要保存(或恢复)的所有(或重新运行)时,所要保存(或恢复)的所有状态信息,例如当前程序计数器值、堆栈指针以状态信息,例如当前程序计数器值、堆栈指针以及各个通用寄存器的内容等等。任务的周境的内及各个通用寄存器的内容等等。任务的周境的内容,一方面取决于所使用的容,一方面取决于所使用的CPUCPU的类型和指令集,的类型和指令集,另一方面也取决于实时操作系统及编译器对它的另一方面也取决于实时操作系统及编译器对它的定义。

41、定义。 任务切换(任务切换(task switchtask switch)是指一个任务停止运行,)是指一个任务停止运行,而另一个任务开始运行。当发生任务切换时,当而另一个任务开始运行。当发生任务切换时,当前运行任务的周境被存入自己的前运行任务的周境被存入自己的TCBTCB,将要被运,将要被运行的任务的周境从它的行的任务的周境从它的TCBTCB中被取出,放入各个中被取出,放入各个寄存器中,于是这个新的任务开始运行,运行的寄存器中,于是这个新的任务开始运行,运行的起点是前次它在运行时补中止的位置。这个任务起点是前次它在运行时补中止的位置。这个任务切换时保存和恢复相应的任务周境的过程被称之切换时保存

42、和恢复相应的任务周境的过程被称之为周境切换(为周境切换(context switchcontext switch)。周境切换时间是)。周境切换时间是影响实时系统性能的重要因素之一。影响实时系统性能的重要因素之一。 二、实时任务调度二、实时任务调度 1 1、实时任务的时间特性、实时任务的时间特性 一个实时任务有两个最基本的特性,重要性和时间一个实时任务有两个最基本的特性,重要性和时间特性,与任务调度有关的所有问题,都是围绕着这特性,与任务调度有关的所有问题,都是围绕着这两个基本特性展开的。实时任务的重要性可以用优两个基本特性展开的。实时任务的重要性可以用优先级来确定。实时任务按时间特性可以分为三

43、类:先级来确定。实时任务按时间特性可以分为三类: 周期性任务,是指被以固定的时间间隔发生的事件周期性任务,是指被以固定的时间间隔发生的事件所激活的任务。所激活的任务。 非周期性任务,是指被无规则的或者随机的外部事非周期性任务,是指被无规则的或者随机的外部事件所激活的任务。件所激活的任务。 偶发(偶发(sporaticsporatic)任务,也可以归类为非周期性任务,)任务,也可以归类为非周期性任务,只是事件发生的频度低。只是事件发生的频度低。 任务的时间特性包括任务的时间特性包括 限定时间(限定时间(deadlinedeadline)。如前所述,根据对限定)。如前所述,根据对限定时间的要求,可

44、以把实时任务分为硬实时、强实时间的要求,可以把实时任务分为硬实时、强实时、弱实时和非实时等类型。时、弱实时和非实时等类型。 最坏情况下的执行时间。通常定义为,在没有更最坏情况下的执行时间。通常定义为,在没有更高优先级任务的干扰的情况下,任务执行所需的高优先级任务的干扰的情况下,任务执行所需的最长时间。为了保证对限定时间的要求,大部分最长时间。为了保证对限定时间的要求,大部分实时应用在设计任务调度时,希望预先知道各个实时应用在设计任务调度时,希望预先知道各个任务在最坏情况下的执行时间,这可以通过反复任务在最坏情况下的执行时间,这可以通过反复(使用逻辑分析仪或示波器)实测得出,也可以(使用逻辑分析

45、仪或示波器)实测得出,也可以用软件工具仿真估算出来。用软件工具仿真估算出来。 执行周期(对周期性任务而言)。执行周期(对周期性任务而言)。 典型的周期性任务的例子是数字反馈控制系统,典型的周期性任务的例子是数字反馈控制系统,例如,三个闭环反馈控制任务以不同的频率控制例如,三个闭环反馈控制任务以不同的频率控制三个独立的被控对象(三个独立的被控对象(plantplant),它们都是具有严),它们都是具有严格定义周期的任务。此外,定期的数据采集,时格定义周期的任务。此外,定期的数据采集,时钟定时触发以及显示更新等,都是周期性任务的钟定时触发以及显示更新等,都是周期性任务的例子。例子。 除了周期性任务

46、之外,多数控制应用还要处理非除了周期性任务之外,多数控制应用还要处理非周期性的和偶发性的外部事件。任何与具有时间周期性的和偶发性的外部事件。任何与具有时间间隔的外部事件有关的控制系统,都包含对非周间隔的外部事件有关的控制系统,都包含对非周期性任务处理,例如网络及通信设备、多媒体播期性任务处理,例如网络及通信设备、多媒体播放、医疗器械和工业过程控制等。凡出错检测、放、医疗器械和工业过程控制等。凡出错检测、需要人工干预的开需要人工干预的开/ /关或启动过程关或启动过程/ /事件,均是偶事件,均是偶发性任务的例子。例如,控制者可以随时地、无发性任务的例子。例如,控制者可以随时地、无任何预见性地把工业

47、流程从生产状态转为安全保任何预见性地把工业流程从生产状态转为安全保护状态,与这两种状态相关的任务就是偶发性任护状态,与这两种状态相关的任务就是偶发性任务。务。 在实际应用中,周期性任务调度比较容易实现,在实际应用中,周期性任务调度比较容易实现,实时多任务调度的许多困难都是与非周期性任务实时多任务调度的许多困难都是与非周期性任务调度有关的。调度有关的。 2 2、任务调度器、任务调度器 实时应用中,根据需要可以把应用分解为强实时、实时应用中,根据需要可以把应用分解为强实时、弱实时和非实时不同等级的任务,用某种调度方弱实时和非实时不同等级的任务,用某种调度方法安排运行。实时内核中有一个调度器法安排运

48、行。实时内核中有一个调度器(schedulerscheduler),专门同于调度应用任务。实时操),专门同于调度应用任务。实时操作系统中的任务调度方法有许多种,其中最广泛作系统中的任务调度方法有许多种,其中最广泛使用的是基于优先级的抢先调度方式及软件园调使用的是基于优先级的抢先调度方式及软件园调度方式。度方式。 调度器的基本功能是管理待命队列和阻塞队列,调度器的基本功能是管理待命队列和阻塞队列,并负责控制每个任务在各个状态之间的切换。并负责控制每个任务在各个状态之间的切换。 对于单处理机系统,调度器作为一个内核任务,对于单处理机系统,调度器作为一个内核任务,不能与应用任务同时运行,只能在系统时

49、钟中断不能与应用任务同时运行,只能在系统时钟中断的驱动下,按指定的节拍(的驱动下,按指定的节拍(ticktick)周期性地激活,)周期性地激活,也就是说,调度器本身也是消耗也就是说,调度器本身也是消耗CPUCPU资源的。调资源的。调度器出除了被系统时钟激活之外,正在运行的任度器出除了被系统时钟激活之外,正在运行的任务也可以通过系统调用,向调度器发送一个消息务也可以通过系统调用,向调度器发送一个消息来激活调度器。来激活调度器。 调度器被激活运行后,若发现需要进行任务切换,调度器被激活运行后,若发现需要进行任务切换,就按照设定的方法从待命队列中选取下一个任务,就按照设定的方法从待命队列中选取下一个

50、任务,交由处理机运行。交由处理机运行。 正在运行的任务,在发生下列情况之一停止运行。正在运行的任务,在发生下列情况之一停止运行。 调度器根据调度方法(轮转或抢先等)的安排,而被调度器根据调度方法(轮转或抢先等)的安排,而被停止运行进入待命队列。停止运行进入待命队列。 因需要等待一个事件而要求阻塞,发生系统调用,直因需要等待一个事件而要求阻塞,发生系统调用,直到事件发生后才恢复运行。到事件发生后才恢复运行。 因申请一个当前无法得到的资源,发出系统调用,从因申请一个当前无法得到的资源,发出系统调用,从而被调度器阻塞。而被调度器阻塞。 该任务完成了它的工作,发生系统调用,要求重新作该任务完成了它的工

51、作,发生系统调用,要求重新作调度。此时调度器根据该任务是否要立即重新运行还调度。此时调度器根据该任务是否要立即重新运行还是需要延迟等待,把它放入待命队列或者阻塞队列中。是需要延迟等待,把它放入待命队列或者阻塞队列中。 在上述情况中,只有第在上述情况中,只有第1 1种情况是由调度方法和策种情况是由调度方法和策略所决定的。其余几种情况均由用户安排,称之略所决定的。其余几种情况均由用户安排,称之为任务控制。为任务控制。 3 3、轮转方式任务调度、轮转方式任务调度 轮转调度法(轮转调度法(Round RobinRound Robin),所有参加轮转调),所有参加轮转调度的任务没有优先级之分(在普通操作

52、系统中),度的任务没有优先级之分(在普通操作系统中),或者具有相同的优先级(在实时操作系统中)。或者具有相同的优先级(在实时操作系统中)。任务从待命队列的末端进入,从队列的始端被调任务从待命队列的末端进入,从队列的始端被调度器取出执行。调度器分配给每个任务一个相同度器取出执行。调度器分配给每个任务一个相同的执行时间片,一个任务用完时间片之后就停止的执行时间片,一个任务用完时间片之后就停止执行,处在待命队列中的下一个任务开始执行执行,处在待命队列中的下一个任务开始执行(当然,一个正在运行的任务也可能由于前面所(当然,一个正在运行的任务也可能由于前面所说的几种情况,不等用完自己的时间片就被切说的几

53、种情况,不等用完自己的时间片就被切换)。换)。 时间片的长度与系统时钟的周期成正比,时间片时间片的长度与系统时钟的周期成正比,时间片长度不能太短,否则频繁的周境切换开销将降低长度不能太短,否则频繁的周境切换开销将降低系统的利用率。时间片长度应略微大于平均的任系统的利用率。时间片长度应略微大于平均的任务最坏情况执行时间,如果多数按轮转方式调度务最坏情况执行时间,如果多数按轮转方式调度的任务都需要不止一个时间片才能完成,就会导的任务都需要不止一个时间片才能完成,就会导致系统利用率下降。致系统利用率下降。 轮转调度的响应时间太慢而且不可预测(这也就轮转调度的响应时间太慢而且不可预测(这也就是普通操作

54、系统不能用于实时应用的原因)。在是普通操作系统不能用于实时应用的原因)。在实时操作系统中,一般是将具有相同的优先级的实时操作系统中,一般是将具有相同的优先级的任务,按轮转方法调度。这一类任务往往是系统任务,按轮转方法调度。这一类任务往往是系统中的非实时的任务或者实时的任务。中的非实时的任务或者实时的任务。 4 4、基于优先级的抢先调度、基于优先级的抢先调度 基于优先级的抢先(基于优先级的抢先(priority-based preemptivepriority-based preemptive)调)调度方法为每个任务指定的优先级,没有处于阻塞态度方法为每个任务指定的优先级,没有处于阻塞态的最高优

55、先级任务将一直运行下去,它只有因为等的最高优先级任务将一直运行下去,它只有因为等待一个事件或者资源而被阻塞时才停止运行,这时,待一个事件或者资源而被阻塞时才停止运行,这时,排在其后的次高优先级的任务才能切换运行。排在其后的次高优先级的任务才能切换运行。 基于优先级的抢先调度可以保证快的响应时间。以基于优先级的抢先调度可以保证快的响应时间。以下图为例,在待命队列里任务优先级固定地排列。下图为例,在待命队列里任务优先级固定地排列。具有最高优先级(具有最高优先级(1 1)的任务因为等待外部事件而)的任务因为等待外部事件而被阻塞,当外部事件(即外部设备的中断信号)发被阻塞,当外部事件(即外部设备的中断

56、信号)发生后,中断服务程序会立即通过系统调用唤醒这个生后,中断服务程序会立即通过系统调用唤醒这个任务,进入待命队列,因为它是最高优先级的任务,任务,进入待命队列,因为它是最高优先级的任务,调度器就把当前运行的任务(优先级为调度器就把当前运行的任务(优先级为2 2)阻塞,抢)阻塞,抢先运行此任务。先运行此任务。 如果实时操作系统虽然能按优先级抢先,但是对如果实时操作系统虽然能按优先级抢先,但是对正在系统空间的运行中(正在作系统调用)的低正在系统空间的运行中(正在作系统调用)的低优先级不能立即被高优先级任务抢先,只能等到优先级不能立即被高优先级任务抢先,只能等到系统调用执行完毕之后才进行任务切换。

57、某些系系统调用执行完毕之后才进行任务切换。某些系统调用可能会花费很长时间,因此,只能实现这统调用可能会花费很长时间,因此,只能实现这种程度抢先的的系统,其实时性就不够好。现代种程度抢先的的系统,其实时性就不够好。现代的优秀的实时操作系统,它的任务调度都能做到的优秀的实时操作系统,它的任务调度都能做到随时能对处在内核态的低优先级任务抢先,这样随时能对处在内核态的低优先级任务抢先,这样才能保证任务切换时间最短,这称之为才能保证任务切换时间最短,这称之为“内核抢内核抢先先”。 实时操作系统中,任务的优先级可达实时操作系统中,任务的优先级可达256256级(例如级(例如0 0级最高,级最高,25525

58、5级最低),之所以设计如此多的优先级最低),之所以设计如此多的优先级,首先是因为在微内核实时操作系统中,大量的级,首先是因为在微内核实时操作系统中,大量的内核任务本身就会占用许多高优先级。另一方面,内核任务本身就会占用许多高优先级。另一方面,复杂的应用也要求分解出许多不同优先级的任务。复杂的应用也要求分解出许多不同优先级的任务。 实时操作系统通常是兼具基于优先级的抢先调度和实时操作系统通常是兼具基于优先级的抢先调度和轮转调度两咱方法。任务的实时性要求越高,则设轮转调度两咱方法。任务的实时性要求越高,则设计其优先级越高。如果有若干任务被设计为具有同计其优先级越高。如果有若干任务被设计为具有同样的

59、优先级,则它们之间以轮转方式调度。最低优样的优先级,则它们之间以轮转方式调度。最低优先级(先级(255255)的任务往往被用作闲空监测()的任务往往被用作闲空监测(idle idle monitormonitor),用来测试尚有多少可用的处理机资源。),用来测试尚有多少可用的处理机资源。 5 5、任务切换时间和抢先时间、任务切换时间和抢先时间 任务切换时间定义为两个独立的,具有相同优先任务切换时间定义为两个独立的,具有相同优先级的任务在待命态和运行态之间切换所需要的平级的任务在待命态和运行态之间切换所需要的平均时间。任务切换时间主要取决于任务的周境切均时间。任务切换时间主要取决于任务的周境切换

60、(换(context switchcontext switch),显然周境的内容越少,周),显然周境的内容越少,周境切换所花费的时间越少。而任务周境的内容则境切换所花费的时间越少。而任务周境的内容则取决于所使用的取决于所使用的CPUCPU的结构和指令集,以及实时的结构和指令集,以及实时操作系统及编译器对周境的定义。操作系统及编译器对周境的定义。 任务抢先时间定义为运行态从低优先级的任务转任务抢先时间定义为运行态从低优先级的任务转移到高优先级任务所花费的平均时间。这个概念移到高优先级任务所花费的平均时间。这个概念类似于任务切换时间,只是时间较长。系统必须类似于任务切换时间,只是时间较长。系统必须

温馨提示

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

评论

0/150

提交评论