具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请实施例的主要解决方案是:在接收到任务调度请求时,获取任务列表中处于就绪状态的首位任务以及所述首位任务的预设最大执行时间;获取当前调度周期内的剩余时间片;在所述首位任务的预设最大执行时间小于或等于当前调度周期内的剩余时间片时,确定所述首位任务为目标任务;调度所述目标任务。
由于在采用抢占式任务调度过程中,当前正在运行的低优先级任务会被更高优先任务抢占,等到高优先级任务执行完释放处理器后继续执行先前的低优先级任务,但是采用该抢占式调度方式需要中断上下文切换,导致无法在某个特定时间内准确执行特定的任务,任务执行时间的确定性较差。而本申请在任务列表中对任务的优先级进行高低排序,并在判定优先级较高的首位任务的预设最大执行时间大于或等于剩余时间片时,将其确定为可调度的目标任务,从而提高任务执行时间的确定性。
为了更好的理解上述技术方案,下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,图1为本发明实施例方案涉及的硬件运行环境的结构示意图。
需要说明的是,图1即可为嵌入式系统的硬件运行环境的结构示意图。
如图1所示,该嵌入式系统可以包括:处理器1001,例如CPU,存储器1005,用户接口1003,网络接口1004,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。该嵌入式系统还包括:调度器,用于从任务列表中调度目标任务。该嵌入式系统还包括定时器,使得调度器在接收到定时器产生的中断信号后调度目标任务。
本领域技术人员可以理解,图1中示出的嵌入式系统结构并不构成对嵌入式系统限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及任务调度程序。其中,操作系统是管理和控制嵌入式系统硬件和软件资源的程序,任务调度程序以及其它软件或程序的运行。
在图1所示的嵌入式系统中,用户接口1003主要用于连接终端,与终端进行数据通信;网络接口1004主要用于后台服务器,与后台服务器进行数据通信;处理器1001可以用于调用存储器1005中存储的任务调度程序。
在本实施例中,嵌入式系统包括:存储器1005、处理器1001及存储在所述存储器上并可在所述处理器上运行的任务调度程序,其中:
处理器1001调用存储器1005中存储的任务调度程序时,执行以下操作:
在接收到任务调度请求时,获取任务列表中处于就绪状态的首位任务以及所述首位任务的预设最大执行时间;
获取当前调度周期内的剩余时间片;
在所述首位任务的预设最大执行时间小于或等于当前调度周期内的剩余时间片时,确定所述首位任务为目标任务;
调度所述目标任务。
处理器1001调用存储器1005中存储的任务调度程序时,还执行以下操作:
在接收到任务调度请求时,获取任务列表中处于就绪状态的首位任务以及所述首位任务的预设最大执行时间;
获取当前调度周期内的剩余时间片;
在所述首位任务的预设最大执行时间小于或等于当前调度周期内的剩余时间片时,确定所述首位任务为目标任务;
调度所述目标任务。
处理器1001调用存储器1005中存储的任务调度程序时,还执行以下操作:
在接收到任务调度请求时,在当前调度周期内获取任务列表中首位任务的等待时间和工作状态;
在所述等待时间小于或等于预设时间且所述工作状态处于未挂起状态时,确定所述首位任务处于就绪状态;
获取所述处于就绪状态的所述首位任务关联的预设最大执行时间。
处理器1001调用存储器1005中存储的任务调度程序时,还执行以下操作:
在所述首位任务的预设最大执行时间大于当前调度周期内的剩余时间片时,确定所述首位任务为不可调度任务;
获取所述任务列表中处于就绪状态的首位任务的下一任务,将所述下一任务作为首位任务,并返回执行所述获取任务列表中处于就绪状态的首位任务以及所述首位任务的预设最大执行时间的步骤。
处理器1001调用存储器1005中存储的任务调度程序时,还执行以下操作:
根据所述目标任务的预设时间偏移量确定所述目标任务调度时间;
到达所述调度时间时调度所述目标任务。
处理器1001调用存储器1005中存储的任务调度程序时,还执行以下操作:
更新任务列表中除所述目标任务外的其他处于就绪状态的任务的等待时间,并更新所述目标任务的运行次数。
处理器1001调用存储器1005中存储的任务调度程序时,还执行以下操作:
获取所述目标任务的当前已执行时间;
在所述目标任务的当前已执行时间大于所述目标任务的预设最大执行时间时,根据所述当前已执行时间和所述预设最大执行时间确定所述目标任务的超时信息;
标记所述目标任务的超时信息。
处理器1001调用存储器1005中存储的任务调度程序时,还执行以下操作:
获取系统处理器的当前任务负载量;
在所述系统处理器的当前任务负载量超过预设阈值时,根据任务的超时程度以及所述任务列表中任务的优先级确定目标剔除任务;
剔除所述目标剔除任务。
以下将以实施例的方式介绍本申请的技术方案。
第一实施例。
如图2所示,在本申请的第一实施例中,本申请的任务调度方法,包括以下步骤:
步骤S110,在接收到任务调度请求时,获取任务列表中处于就绪状态的首位任务以及所述首位任务的预设最大执行时间。
在本实施例中,为了解决本申请采用该抢占式调度方式需要中断上下文切换,导致无法在某个特定时间内准确执行特定的任务,任务执行时间的确定性较差的问题。本申请在任务列表中对任务的优先级进行高低排序,并在判定优先级较高的首位任务的预设最大执行时间大于或等于剩余时间片时,将其确定为可调度的目标任务,从而提高任务执行时间的确定性。
在本实施例中,可以是在嵌入式系统上电启动时,表示接收到任务调度请求。也可以是通过定时器定时产生中断信号,调度器在接收到该中断信号时,表示接收到任务调度请求。可以预设定时器产生中断信号的中断周期,基于所述中断周期产生的中断信号生成任务调度请求。
可选地,在嵌入式系统启动的同时还会初始化定时器以及调度器。
在本实施例中,在任务注册到调度器列表中,预设任务的优先级,任务预设最大执行时间,每个任务理论上都必须在此时间片内完成执行,调度周期,调度周期内预设时间偏移量,任务就绪标志,如下图4中任务注册模块。越关键的任务注册的优先级越高。
具体的,任务在被调度之前预先注册于任务列表中,且任务列表中可同时注册多个任务。任务在注册列表中按照优先级进行排序。本申请的任务按照从高到低的优先级进行排序,即位于任务列表中的首位任务的优先级最高,最先被调度。每个任务在任务列表中都有一个固定的优先级,该优先级用于指示任务被调度的顺序。每个优先级对应一个数字,数字越低表示优先级越高。在每一个调度周期会进行轮转,基于从高到低的优先级顺序遍历每一个任务,在一个任务周期,只要时间片足够充足,每一个优先级的任务都会被执行。
在本实施例中,在任务被注册到任务列表中时,每个任务均存在关联的预设时间偏移量、预设最大执行时间以及调度频率。
其中,预设时间偏移量实质为在每个任务之间设置一个时间间隔,比如,假设有3个任务都在第5ms需要调度,那么对其中一个任务加100us偏移,其中一个加200us偏移,相当于这三个任务,一个是5ms执行,一个是5.1ms执行,一个是5.2ms执行。通过设置预设时间偏移量使得相邻两个任务之间存在一定的执行时间间隔,从而避免由于当前任务执行完毕后马上执行下一任务导致的负载过大的问题。预设最大执行时间是在任务注册到任务列表时就预设好的,一般任务正常执行时花费的时间都小于预设最大执行时间。假设任务调度频率是100hz,表示10ms执行一次,假设系统调度周期为5ms,每经过一次调度周期,相当于这个任务的执行等待时间减去5ms,即需要2个调度周期才能执行。
在本实施例中,任务被调度时,需满足任务处于就绪状态,且任务的预设最大执行时间需小于当前调度周期内的剩余时间等条件才能被调度。因此,在接收到任务调度请求时,根据任务的优先级遍历任务的工作状态。由于任务列表中任务的优先级是从高到低排序的,因此,基于该优先级的高低排序遍历任务的工作状态。首先,遍历任务列表中首位任务的工作状态。在该首位任务的工作状态为未挂起状态,表示该首个任务参与时间片轮转的调度检查,即可确定该首位任务属于就绪状态。在获取该首位任务的同时获取与该首位任务关联的预设最大执行时间。
步骤S120,获取当前调度周期内的剩余时间片。
在本实施例中,所述调度周期实质为调度延迟,调度延迟表示了一段时间,并且在这段时间内,所有的可被调度程序都应该至少被运行一次。所述剩余时间片是通过调度周期减去任务的已执行消耗时间。假设调度周期为500ms,第一个任务的已执行消耗时间为200ms,则剩余时间片为300ms。
步骤S130,在所述首位任务的预设最大执行时间小于或等于当前调度周期内的剩余时间片时,确定所述首位任务为目标任务。
在本实施例中,在获取当前调度周期内的剩余时间片之后,判断首位任务的预设最大执行时间与当前调度周期的剩余时间片之间的关系。在首位任务的预设最大执行时间小于或等于当前调度周期内的剩余时间片时,确定所述首位任务为目标任务,即该首位任务为可调度的任务。例如,假设首位任务的预设最大执行时间为200ms,假设剩余时间片为300ms,则表示该首位任务为目标任务。
步骤S140,调度所述目标任务。
在本实施例中,在确定该首位任务为目标任务时,控制调度器调度该目标任务。
本实施例根据上述技术方案,由于采用了在接收到任务调度请求时,获取任务列表中处于就绪状态的首位任务以及所述首位任务的预设最大执行时间;获取当前调度周期内的剩余时间片;判断首位任务的预设最大执行时间与剩余时间片之间的关系,在首位任务的预设最大执行时间小于或等于当前调度周期内的剩余时间片时,确定所述首位任务为目标任务,即可调度该目标任务技术方案,由于在任务列表中对任务的优先级进行高低排序,并在判定优先级较高的首位任务的预设最大执行时间大于或等于剩余时间片时,将其确定为可调度的目标任务,从而解决了在抢占式调度任务时,无法准确确定任务的执行时间的问题,通过本申请的技术方案使得在某个特定时间内能准确执行特定的任务,提高任务执行时间的确定性。
可选地,调度所述目标任务具体包括以下步骤:
步骤S141,根据所述目标任务的预设时间偏移量确定所述目标任务调度时间。
步骤S142,到达所述调度时间时调度所述目标任务。
在本实施例中,在任务列表中的每个任务都可根据实际情况确定是否设置时间偏移量以及设置时间偏移量的大小。在调度目标任务的过程中,根据该目标任务的预设时间偏移量确定目标任务调度时间。在达到该调度时间时,调度该目标任务。假设该目标任务的时间偏移量为200us,该目标任务原先在第5ms时需要被调度,通过时间偏移量即可确定该目标任务调度时间为第5.2ms。因此,在到达5.2ms时,调度该目标任务。
在本实施例的技术方案中,通过设置预设时间偏移量使得相邻两个任务之间存在一定的执行时间间隔,从而避免出现由于当前目标任务执行完毕后马上执行下一任务导致系统负载过大的问题。
可选地,在调度该目标任务之后,基于与该目标任务同样的确定方式,继续在任务列表中确定可调度的处于就绪状态的目标任务,从而实现本申请任务调度。
第二实施例。
在本申请第一实施例之前,还可包括以下步骤:
步骤S210,将各个任务注册到任务列表中;其中,所述任务列表中的各个所述任务按照优先级进行排序,且位于所述任务列表首位的任务的优先级最高。
在本实施例中,在任务调度之前,需要将任务注册到任务列表中。在所述任务列表中各个任务按照优先级进行排序,本申请的任务按照从高到低的优先级进行排序,即位于任务列表中的首位任务的优先级最高,最先被调度。每个任务在任务列表中都有一个固定的优先级,该优先级用于指示任务被调度的顺序。每个优先级对应一个固定数字,数字越低表示优先级越高。
本实施例根据上述技术方案,由于采用了将任务基于优先级高低顺序注册到任务列表中的技术手段,实现了在任务调度过程中,基于该优先级从任务列表中调度任务。
第三实施例。
在本申请的第三实施例中,本申请的任务调度方法,包括以下步骤:
步骤S210,将各个任务注册到任务列表中;其中,所述任务列表中的各个所述任务按照优先级进行排序,且位于所述任务列表首位的任务的优先级最高。
步骤S111,在接收到任务调度请求时,在当前调度周期内获取任务列表中首位任务的等待时间和工作状态;
步骤S112,在所述等待时间小于或等于预设时间且所述工作状态处于未挂起状态时,确定所述首位任务处于就绪状态;
步骤S113,获取所述处于就绪状态的所述首位任务关联的预设最大执行时间;
在本实施例中,所述预设时间可根据实际情况进行设置,所述预设时间可设置为0。即在等待时间小于或等于0时,且该首位任务的工作状态处于未挂起状态时,表示该首位任务处于就绪状态。调度器通过定时器触发定时器模块,如图4中定时器模块,在每个调度周期内首先遍历任务列表,检查首位任务是否挂起。任务挂起是指任务被剔除了调度列表,不参与时间片轮转的调度检查。相反,任务未挂起表示任务参与时间片轮转的调度检查。然后依次递减每个任务等待时间,如果首位任务等待时间小于或者等于0并且首位任务的工作状态处于未挂起状态,则表明首位任务处于就绪状态。
步骤S120,获取当前调度周期内的剩余时间片;
步骤S130,在所述首位任务的预设最大执行时间小于或等于当前调度周期内的剩余时间片时,确定所述首位任务为目标任务;
步骤S130,调度所述目标任务。
本实施例根据上述技术方案,由于采用了确定首位任务的等待时间和工作状态,在首位任务的等待时间和工作状态满足条件时,确定该首位任务处于就绪状态的技术手段,进而后续确定该处于就绪状态的目标任务是否为可调度。
第四实施例。
如图3所示,在本申请的第四实施例中,本申请的任务调度方法,包括以下步骤:
步骤S110,在接收到任务调度请求时,获取任务列表中处于就绪状态的首位任务以及所述首位任务的预设最大执行时间;
步骤S120,获取当前调度周期内的剩余时间片;
步骤S310,在所述首位任务的预设最大执行时间大于当前调度周期内的剩余时间片时,确定所述首位任务为不可调度任务;
步骤S320,获取所述任务列表中处于就绪状态的首位任务的下一任务,将所述下一任务作为首位任务,并返回执行步骤S110,获取任务列表中处于就绪状态的首位任务以及所述首位任务的预设最大执行时间。
在本实施例中,在获取首位任务的预设最大执行时间以及当前调度周期内的剩余时间片之后。判断首位任务的预设最大执行时间和当前调度周期的剩余时间片之间的关系。在首位任务的预设最大执行时间大于当前调度周期内的剩余时间片时,表示该首位任务为不可调度任务。假设首位任务的预设最大执行时间为300ms,假设剩余时间片为200ms,则表示该首位任务为不可调度任务。
在确定该首位任务为不可调度任务之后,基于预设优先级继续遍历该任务列表中的其他任务,即遍历首位任务的下一任务。其中,下一任务的优先级低于首位任务。将下一任务作为首位任务。执行与该首位任务相同的确定方式,判断该首位任务是否属于可调度的任务。具体的,将首个任务的下一任务确定为首位任务,获取该首位任务的预设最大执行时间,获取当前调度周期内的剩余时间片,在所述首位任务的预设最大执行时间小于或等于当前调度周期内的剩余时间片时,确定所述首位任务为目标任务。在所述首位任务的预设最大执行时间大于当前调度周期内的剩余时间片时,确定所述首位任务为不可调度任务。通过上述调度方式,对任务列表中的任务进行调度。
本实施例根据上述技术方案,由于采用了在所述首位任务的预设最大执行时间大于当前调度周期内的剩余时间片时,确定所述首位任务为不可调度任务,并继续判断下一任务是否可以调度的技术手段,从而实现对任务进行调度。
第五实施例。
在本申请的第五实施例中,本申请的任务调度方法,包括以下步骤:
步骤S110,在接收到任务调度请求时,获取任务列表中处于就绪状态的首位任务以及所述首位任务的预设最大执行时间;
步骤S120,获取当前调度周期内的剩余时间片;
步骤S130,在所述首位任务的预设最大执行时间小于或等于当前调度周期内的剩余时间片时,确定所述首位任务为目标任务;
步骤S140,调度所述目标任务。
步骤S410,更新任务列表中除所述目标任务外的其他处于就绪状态的任务的等待时间,并更新所述目标任务的运行次数。
在本实施例中,在调度目标任务之后,会更新任务列表中除目标任务外的其他处于就绪状态的任务的等待时间。在当前调度周期时,如果任务A被从调度列表调度执行完成后,在下一个调度周期到达进行调度时,任务列表还会存在任务A。任务列表中每个任务存在对应的调度频率,即运行次数。假设任务列表中存在任务A、任务B以及任务C。任务A为目标任务,在当前调度周期调度该任务A执行后,递增该任务A的运行次数。同时依次递减任务B以及任务C的等待时间。
本实施例根据上述技术方案,由于采用了在调度完任务之后,更新任务列表中除所述目标任务外的其他处于就绪状态的任务的等待时间,并更新所述目标任务的运行次数的技术手段,实现了任务更新。
第六实施例。
在本申请的第六实施例中,本申请的任务调度方法,包括以下步骤:
步骤S110,在接收到任务调度请求时,获取任务列表中处于就绪状态的首位任务以及所述首位任务的预设最大执行时间;
步骤S120,获取当前调度周期内的剩余时间片;
步骤S130,在所述首位任务的预设最大执行时间小于或等于当前调度周期内的剩余时间片时,确定所述首位任务为目标任务;
步骤S140,调度所述目标任务;
步骤S510,获取所述目标任务的当前已执行时间;
步骤S520,在所述目标任务的当前已执行时间大于所述目标任务的预设最大执行时间时,根据所述当前已执行时间和所述预设最大执行时间确定所述目标任务的超时信息;
步骤S530,标记所述目标任务的超时信息。
在本实施例中,通过比较调度周期内剩余时间片和首位任务的预设最大执行时间,决定是否调度该首位任务执行并设置相应标志位,如下图4中任务运行统计模块。
在任务被调度执行后,对其执行时间进行统计,如果调度任务执行时间大于预设最大执行时间,则根据超时严重程度设置任务状态标志位,如下图4中任务运行统计模块。如果被调度任务严重超时,即超过了调度周期节拍,则由外围硬件中断程序重构整个调度任务,将此严重超时任务挂起,如下图4中任务超时处理模块。设置的标志位是指示该任务在一个调度周期内是否能得到执行,比方说一个任务已经就绪,该任务需要的执行时间为500ms,如果该调度周期剩余可用时间只有300ms,那么该任务其实在此调度周期无法执行,就设置一个标志位,表示该任务在该周期内没得到调度。
在本实施例的技术方案中,通过标记目标任务的超时信息用于指示该目标任务是否被调度。
第七实施例。
在本申请的第七实施例中,本申请的任务调度方法,包括以下步骤:
步骤S110,在接收到任务调度请求时,获取任务列表中处于就绪状态的首位任务以及所述首位任务的预设最大执行时间;
步骤S120,获取当前调度周期内的剩余时间片;
步骤S130,在所述首位任务的预设最大执行时间小于或等于当前调度周期内的剩余时间片时,确定所述首位任务为目标任务;
步骤S140,调度所述目标任务;
步骤S610,获取系统处理器的当前任务负载量;
步骤S620,在所述系统处理器的当前任务负载量超过预设阈值时,根据任务的超时程度以及所述任务列表中任务的优先级确定目标剔除任务;
步骤S630,剔除所述目标剔除任务。
在本实施例中,所述预设阈值可根据实际情况进行设置。统计整个调度器任务列表,结合系统处理器负载,在系统负载超过预设阈值时,根据超时严重程度的不同,剔除相应的非关键任务,确保系统的关键任务能够在每个调度周期得到执行。通过监控任务执行时间和调度节拍,对任务划分为关键任务和非关键任务。关键任务为可保留的任务,非关键任务为目标剔除任务。根据任务执行时间对非关键任务实施动态降级,确保系统执行的稳定性。其中,关键任务和非关键任务通过任务优先级来区分,数字越低表示优先级越高,优先级0~20的任务一般为关键任务,优先级为20以上的为非关键任务。
本实施例根据上述技术方案,通过获取系统处理器的当前任务负载量,在当前任务负载量超过预设阈值时,剔除非关键任务的技术手段,使得即使出现处理器占用率过高等问题,亦能确保关键任务执行,从而提高嵌入式系统的稳定性。
第八实施例。
参照图5,在本申请的第八实施例中,本申请的任务调度方法,包括:在调度开始时,判断是否有任务挂起。若是,则表示挂起的任务处于不可被调度,则跳过挂起的任务。轮询任务列表中的其他任务,并递减其他任务的等待时间。在当前任务的等待时间小于或等于预设阈值时,进一步判断当前任务是否处于挂起状态。在当前任务处于挂起状态时,返回执行轮询列表中的其他任务的步骤。在当前任务处于未挂起状态时,获取当前时间,记录已经使用时间即任务的已执行消耗时间。根据当前时间以及已经使用时间确定当前调度周期内的剩余时间片。判断当前调度周期内的剩余时间片是否够执行任务。若当前调度周期内的剩余时间片足以执行任务时,更新任务等待时间并递增任务运行次数,调度当前任务注册函数。同时,获取当前时间,计算任务使用时间,并据此设置任务超时标志位。在设置任务超时标志位后,统计任务和调度运行时间信息。根据系统负载阈值和任务超时程度剔除非关键任务。若当前调度周期内的剩余时间片不足以执行任务时,更新任务列表中任务的等待时间、递增已调度执行的任务的运行次数。
本发明实施例提供了任务调度方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
基于同一发明构思,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有任务调度程序,所述任务调度程序被处理器执行时实现如上所述的任务调度的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
由于本申请实施例提供的计算机可读存储介质,为实施本申请实施例的方法所采用的计算机可读存储介质,故而基于本申请实施例所介绍的方法,本领域所属人员能够了解该计算机可读存储介质的具体结构及变形,故而在此不再赘述。凡是本申请实施例的方法所采用的计算机可读存储介质都属于本申请所欲保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。