自动化运维任务的优先级处理方法和处理装置与流程
设置优先级,处理重要任务先 #生活技巧# #健康生活方式# #生活节奏调整# #科学时间管理#
[0001]
本申请涉及自动化运维信息处理领域,特别是涉及一种自动化运维任务的优先级处理方法和处理装置。
背景技术:
[0002]
在自动化运维项目的多任务并发的环境里,从概念上看,有多个任务在同时执行,具体到单个cpu级别,实际上任何时刻只能有一个任务处于执行状态;因此操作系统需要决定哪个任务执行,哪些任务等待,也就是任务的调度。
[0003]
优先级反转是当一个高优先级任务通过信号量机制访问共享资源时,该信号量已被一低优先级任务占有,因此造成高优先级任务被许多具有较低优先级任务阻塞,实时性难以得到保证。
[0004]
在多任务系统中,通常可能出现如下优先级反转的情形:
[0005]
假设有三个优先级不同的任务,分别为task1、task2、和task3;task1的优先级最高,task3次之,task2最低。其中task1和task2有共享的临界区,因此存在互斥锁,即task1和task2在同一时间只有一者能访问临界区。在任务执行的过程中,如果task2已进入临界区,由于互斥锁的存在,task1在被唤醒且进入临界区之前,就会被阻塞。
[0006]
由于task1只有在task2从临界区退出后才能被调度,而task2什么时候从临界区退出是未知的,因此task1被阻塞的时间也是未知的。这样,低优先级的task3先于高优先级的task1被调度,造成了优先级反转。
[0007]
现有技术为了解决这一问题,提出了优先级继承的方法。在上述过程中,task1在被阻塞的时候会提升task2的优先级与task1相同,此时其他任务就无法打断task2,从而保证task2执行之后顺利执行高优先级的task1,解决了三个任务单一互斥锁的情况下优先级反转的问题。
[0008]
但是,如果此时task2与task3共享临界区,task3获得互斥锁的情况下,task2也被阻塞,只有task3能够继续执行,在执行task3的过程中,优先级高于task3的任务均可以打断task3执行,导致优先级高的task1执行推后。
技术实现要素:
[0009]
鉴于上述问题,本申请一实施例提出一种自动化运维任务的优先级处理方法和处理装置,以解决现有技术存在的问题。
[0010]
为了解决上述问题,本申请一实施例公开一种自动化运维任务的优先级处理方法,所述任务包括第一任务、第二任务和第三任务,所述的第一任务的优先级高于所述第二任务和所述第三任务;所述方法包括:当所述第一任务由于访问第一临界区失败而被阻塞时,提升与所述第一任务共享第一临界区且正在访问所述第一临界区的第二任务的优先级;判断是否存在与第二任务共享第二临界区且正在访问所述第二临界区的第三任务;当存在所述第三任务时,提升所述第三任务的优先级。
[0011]
为了解决上述问题,本申请一实施例还公开一种自动化运维任务的优先级处理装置,所述任务包括第一任务、第二任务和第三任务,所述的第一任务的优先级高于所述第二任务和所述第三任务;所述装置包括:第一优先级变更模块,用于当所述第一任务由于访问第一临界区失败而被阻塞时,提升与所述第一任务共享第一临界区且正在访问所述第一临界区的第二任务的优先级;第一判断模块,用于判断是否存在与第二任务共享第二临界区且正在访问所述第二临界区的第三任务;第二优先级变更模块,用于当存在所述第三任务时,提升所述第三任务的优先级。
[0012]
由上述可知,本申请实施例至少包括以下优点:
[0013]
本申请提出一种自动化运维任务的优先级处理方法,应用于多任务操作系统。当操作系统中的第一任务和第二任务共享第一临界区,而第二任务与第三任务共享第二临界区时,为了避免现有的优先级继承的方法在多任务系统中仍可能造成的优先级反转的任务,本申请实施例提供的方案不仅在第一任务无法访问第一临界区的情况下提升此时正在访问临界区的第二任务,同时提升与第二任务共享第二临界区的第三任务,避免优先级低的第三任务拖延第二任务的执行,从而避免优先级高的第一任务延迟执行造成的优先级反转。
附图说明
[0014]
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0015]
图1是本申请第一实施例的任务的优先级处理方法的流程图。
[0016]
图2是本申请第二实施例的任务的优先级处理方法的流程图。
[0017]
图3是本申请第三实施例的任务的优先级处理装置的方框图。
[0018]
图4是本申请第四实施例的任务的优先级处理装置的方框图。
具体实施方式
[0019]
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
[0020]
本申请的核心思想之一在于,提出一种自动化运维任务的优先级处理方法,所述任务包括第一任务、第二任务和第三任务,所述的第一任务的优先级高于所述第二任务和所述第三任务;所述方法包括:当所述第一任务由于访问第一临界区失败而被阻塞时,提升与所述第一任务共享第一临界区且正在访问所述第一临界区的第二任务的优先级;判断是否存在与第二任务共享第二临界区且正在访问所述第二临界区的第三任务;当存在所述第三任务时,提升所述第三任务的优先级。本申请实施例提出的方案在现有的优先级继承的基础上,不仅提高了与第一任务共享临界区的第二任务的优先级,而且提高了可能拖延第二任务执行的其他任务(例如与第二任务共享临界区的其他任务)的优先级,避免优先级低
于第一任务的其他任务抢占执行造成的优先级反转,提高了优先级高的第一任务的响应时间。
[0021]
以下以两段多操作系统中执行的程序为例,说明现有的优先级继承问题存在的实质缺陷和本申请提供的任务的优先级处理方法。
[0022]
假设有task1,task2,task3,优先级分别为5,20,25,数字越小代表任务优先级越高。下面的例子中涉及到的互斥锁有mutex_1以及mutex_2。互斥锁是一种信号量,常用来防止两个任务在同一时刻访问相同的共享资源。下述示例中互斥锁mutex_1保护task1和task2的共享资源,mutex_2保护task2和task3的共享资源。每一个共享资源分别对应一个互斥锁标记,这一标记用来保证任意时刻只有一个任务能够访问该共享资源。
[0023]
程序1:
[0024][0025][0026]
按照现有的优先级继承提供的方案,假设开始的时候task1以及task2处于等待某事件的阻塞状态(例如主动睡眠、等待信号量输入等),上述程序执行的步骤如下:
[0027]
执行步骤1’.task3运行,在(9)处获得互斥锁mutex_2;
[0028]
执行步骤2’.task3运行到(10)处时,task2被中断唤醒;
[0029]
执行步骤3’.由于task2优先级高于task3,运行task2,task3被挂起;
[0030]
执行步骤4’.task2在(4)处获得互斥锁mutex_1;
[0031]
执行步骤5’.当task2运行到(5)处时,因为互斥锁mutex_2已被task3获得,因而task2得不到互斥锁mutex_2,会被阻塞;
[0032]
执行步骤6’.根据优先级继承的方法,task3的优先级被task2从25拉升到20;
[0033]
执行步骤7’.task2被阻塞当中,假设task1被中断唤醒然,task1开始运行;
[0034]
执行步骤8’.当task1运行到(1)处时,由于此时task2在步骤(4)时已获得了互斥锁mutex_1,此时task1得不到互斥锁mutex_1,被阻塞;
[0035]
执行步骤9’.根据优先级继承的方法,task2的优先级被task1从20拉升到5;
[0036]
执行步骤10’.task2继续返回task3运行(10)处。
[0037]
从上述可知,此时task1的优先级为5,task2的优先级为5,task3的优先级为20。在步骤5处时task2被阻塞,在步骤8处task1被阻塞,只有task3能够继续执行。task3在(10)处继续运行的时候会被其他任意优先级为5-19的任务可以随便抢占,如果有一个task4优先级为15,可以随时打断task3的运行,到时再返回task3运行到(11)处的时候,则高优先级的task1和task2的等的时间会非常长,本质上还是造成了优先级反转的问题。
[0038]
为了解决这一问题,本申请提出一种自动化运维任务的优先级处理方法,结合上述程序,对该方法进行说明。在本申请中,假设开始的时候task1以及task2处于等待某事件,处于阻塞状态,上述程序执行的步骤如下:
[0039]
执行步骤1.task3运行,在(9)处获得互斥锁mutex_2;
[0040]
执行步骤2.task3运行到(10)处的时候,此时task2被中断唤醒;
[0041]
执行步骤3.由于task2优先级高于task3,运行task2,task3被挂起;
[0042]
执行步骤4.task2在(4)处获得互斥锁mutex_1;
[0043]
执行步骤5.当task2运行到(5)处时,因为互斥锁mutex_2已被task3获得,因而task2得不到互斥锁mutex_2,会被阻塞;
[0044]
执行步骤6.根据优先级继承的方法,task3的优先级被task2从25拉升到20;
[0045]
执行步骤7.task2被阻塞当中,假设task1被中断唤醒然,task1开始运行;
[0046]
执行步骤8.当task1运行到(1)处时,由于此时task2在步骤(4)时已获得了互斥锁mutex_1,因此task1得不到互斥锁mutex_1,被阻塞;
[0047]
执行步骤9.根据优先级继承的方法,task1将task2的优先级从20拉升到5;
[0048]
执行步骤10.task1同时将task3的优先级从20拉升到5;
[0049]
执行步骤11.task2继续返回task3运行(10)处。
[0050]
从上述可知,此时task1的优先级为5,task2和task3的优先级也被提升至5。task3在(10)处继续运行的时候不会被其他任意优先级为5-19的任务抢占执行,task3结束之后释放互斥锁mutex_2,进一步执行task2,并在task2执行完毕之后释放互斥锁mutex_1,执行task1,保证了优先级高的task1顺利执行,不会被优先级低的任务抢占执行。
[0051]
程序2:
[0052]
[0053][0054]
假设利用现有技术提供的方案,假设优先级task1为5,task2为20,task3为25,假设开始的时候task1以及task2处于等待某事件的阻塞状态(例如主动睡眠、等待信号量输入等),上述程序执行的步骤如下:
[0055]
执行步骤1’.task3获得互斥锁mutex_1;
[0056]
执行步骤2’.task3运行到(6)的时候,task2被唤醒,运行task2,task3被挂起;
[0057]
执行步骤3’.task2运行到(3)处时,无法获得互斥锁mutex_1,task2被阻塞,此时将task3的优先级25提升到task2优先级20,task2睡眠;
[0058]
执行步骤4’.task3继续运行(6)处时,假设task1被唤醒运行;
[0059]
执行步骤5’.由于task1无法获得互斥锁mutex_1,task1被阻塞,此时将task3的优先级20提升到与task1的优先级5相同;
[0060]
执行步骤6’.task1睡眠,回到task3运行;
[0061]
执行步骤7’.task3在(7)处解锁,唤醒task2继续运行,此时task3的优先级被还原到初始值25。
[0062]
由上述可知,由于task3此时的优先级相对较低,在步骤6中task3运行的过程中,优先级高于task3的任务,即使优先级低于task1和task2,均可以抢占任务,如果有一个
task4优先级高于task3,其随时打断task3的运行,到时再返回task3运行到(7)处的时候,task1和task2的等的时间会非常长,同样造成了优先级反转的问题。
[0063]
为了解决这一问题,本申请提出一种自动化运维任务的优先级处理方法,结合上述程序,对该方法进行说明。在本申请中,假设开始的时候task1以及task2处于等待某事件,处于阻塞状态,上述程序执行的步骤如下:
[0064]
执行步骤1.task3获得互斥锁mutex_1;
[0065]
执行步骤2.task3运行到(6)的时候,task2被唤醒,资源被task2抢占;
[0066]
执行步骤3.task2运行到(3)处时,无法获得互斥锁mutex_1,task2被阻塞,此时将task3提升到task2优先级,然后task2睡眠;
[0067]
执行步骤4.task3继续运行(6)处时,task1被唤醒运行;
[0068]
执行步骤5.由于task1无法获得互斥锁mutex_1,task1被阻塞,此时task1将task2的优先级提高到与task1相同;
[0069]
执行步骤6.task1将task3的优先级同时拉升到与task1的优先级相同;
[0070]
执行步骤7.task1睡眠,回到task3运行;
[0071]
执行步骤8.task3在(7)处解锁,然后唤醒task2继续运行。
[0072]
由上述可知,在步骤8的task3运行的过程中,由于task3的优先级已被提升至与task1相同,因此在task3运行(6)的过程中,优先级低于5的其他任务不会打断task3运行,从而在task3结束之后释放互斥锁mutex_1,进一步执行task2和task1,保证了优先级高的task1顺利执行,不会被优先级低的任务抢占执行。
[0073]
以下通过具体实施例说明本申请提出的任务的优先级处理方法和处理装置。
[0074]
第一实施例
[0075]
本申请第一实施例提出一种自动化运维任务的优先级处理方法。图1所示为本申请第一实施例的任务的优先级处理方法的步骤流程图。
[0076]
如图1所示,本申请实施例提出一种自动化运维任务的优先级处理方法,所述任务包括第一任务、第二任务和第三任务,所述的第一任务的优先级高于所述第二任务和所述第三任务;该方法包括如下步骤:
[0077]
s101,当所述第一任务由于访问第一临界区失败而被阻塞时,提升与所述第一任务共享第一临界区且正在访问所述第一临界区的第二任务的优先级;
[0078]
在这一步骤中,参考上述程序1的执行步骤9和程序2的执行步骤5,根据优先级继承方法,在满足如下情况时第二任务的优先级可以被提升至与第一任务相同:
[0079]
1,第二任务的优先级低于第一任务;
[0080]
2,此时第一任务和第二任务的临界区由第二任务访问,即第二任务获得了保护临界区(共享资源)的互斥锁导致当前第一任务无法获得。
[0081]
在这一步骤中,当第一任务由于访问第一临界区失败而被阻塞时,第一任务将当前访问第一临界区的第二任务的优先级提升。
[0082]
在一优选实施例中,上述第二任务的优先级优选可以被提升至与第一任务的优先级相同。在其他实施例中,上述第二任务的优先级也可以提升至仅次于第一任务,或者提升至高于其他任务的优先级,本申请并不以此为限。
[0083]
在实际操作中,可以在任务创建的接口设置任务和对应的优先级。进一步地,程序
中例如可以包括如下语句,提升第二任务的优先级至第一任务的优先级:
[0084][0085]
task_pri_change(mutex_task,g_active_task->prio);可知:如果当前的任务的优先级高于获得锁的任务的优先级,就会调用task_pri_change(mutex_task,g_active_task->prio)这个程序,改变这个任务的优先级到当前任务的优先级。其中task_pri_change这个函数会提升对方的优先级。
[0086]
s102,判断是否存在与第二任务共享第二临界区且正在访问所述第二临界区的第三任务;
[0087]
s103,当存在所述第三任务时,提升所述第三任务的优先级。
[0088]
在上述两个步骤中,参考上述程序1的执行步骤10和程序2的执行步骤6,本申请实施例提出的改进相比于现有技术而言,不仅提升task2的优先级,同时提升与task2相关的task3的优先级,以避免task3拖延task2的执行时间,导致task1无法及时执行。
[0089]
在本发明实施例中,task_pri_change里可以包括下面的代码,用于步骤s102中发现task3并提升task3的优先级。
[0090][0091][0092]
在上述代码中,如果task1发现task2是在阻塞状态下,先把task2的优先级改成和
task1一致,往下判断如果task2阻塞在task3的互斥锁上(即当前task3正在访问第二临界区,导致task2无法访问)的时候,会通过阻塞的互斥锁mutex_2得到task3,如下:
[0093]
mutex_tmp=(kmutex_t*)(task->blk_obj);
[0094]
mutex_task=mutex_tmp->mutex_task;
[0095]
之后,如果task3的优先级比task1低,如步骤s103,则提升task3的优先级:
[0096]
if(mutex_task->prio>task->prio){
[0097]
task=mutex_task;
[0098]
具体地,在本实施例中,影响task2执行的情况包括:task3与task2共享第二临界区且task3正在访问第二临界区(即task3获得了互斥锁)导致task2无法获得互斥锁时,只有task3执行完毕释放互斥锁,task2才能执行,继而task1才能执行。因此,为了保证在task3执行过程中不被其他低与task1的优先级的任务打断,在上述步骤s103中将task3的优先级提高至与task1相同。
[0099]
在一优选实施例中,上述第三任务的优先级优选可以被提升至与第一任务的优先级相同。在其他实施例中,上述第三任务的优先级也可以提升至仅次于第一任务,或者提升至高于其他任务的优先级,本申请并不以此为限。
[0100]
由上述可知,本申请第一实施例提出的任务的优先级处理方法至少具有如下技术效果:
[0101]
本发明提出一种自动化运维任务的优先级处理方法,应用于多任务操作系统。当操作系统中的第一任务和第二任务共享第一临界区,而第二任务与第三任务共享第二临界区时,为了避免现有的优先级继承的方法在多任务系统中仍可能造成的优先级反转的任务,本发明实施例提供的方案不仅在第一任务无法访问第一临界区的情况下提升此时正在访问临界区的第二任务的优先级,同时提升与第二任务共享第二临界区的第三任务的优先级,避免优先级低的第三任务拖延第二任务的执行,从而避免优先级高的第一任务延迟执行造成的优先级反转。相比于现有技术,本发明实施例改进了现有的优先级继承的方法,解决了优先级反转的问题,进而解决了高优先级的任务由于等待低优先级任务的互斥锁的时间太长,而导致系统实时性跟不上的问题。本申请提出的方法提高了系统的实用性,在各种领域,特别是工业,语音,航天,军工,等领域具有重要的应用价值。
[0102]
第二实施例
[0103]
本申请第二实施例提出一种自动化运维任务的优先级处理方法。图2所示为本申请第二实施例的任务的优先级处理方法的步骤流程图。如图2所示,本申请实施例提出一种自动化运维任务的优先级处理方法,所述任务包括第一任务、第二任务和第三任务,所述的第一任务的优先级高于所述第二任务和所述第三任务;该方法包括如下步骤:
[0104]
s201,当所述第一任务由于访问第一临界区失败而被阻塞时,提升与所述第一任务共享第一临界区且正在访问所述第一临界区的第二任务的优先级;
[0105]
s202,判断是否存在与第二任务共享第二临界区且正在访问所述第二临界区的第三任务;
[0106]
s203,当存在所述第三任务时,提升所述第三任务的优先级。
[0107]
上述步骤s201至步骤s203与上一实施例的步骤s101至步骤s103相同或相似,在此不再赘述。本实施例重点说明与上一实施例的不同之处。
[0108]
在这一实施例中,与步骤s101相似地,步骤s201中,可以将第二任务的优先级提升至与第一任务的优先级相同,或者例如可以仅次于第一任务的优先级等,在此不再赘述。
[0109]
在步骤s203中,与步骤s203相似地,可以将第三任务的优先级提升至与第一任务的优先级相同,或者例如可以仅次于第一任务的优先级等,在此不再赘述。
[0110]
在本实施例中,第一临界区与第二临界区可以是同一临界区,也可以是不同临界区。
[0111]
同一临界区的情况可以参考上述程序2,其中task1、task2和task3共享临界区,在进入临界区之前需要获得互斥锁mutex_1。当其中一者获得互斥锁mutex_1并访问临界区时,其余的任务无法访问该临界区。
[0112]
不同临界区的情况可以参考上述程序1,其中task1、task2共享第一临界区,该临界区由互斥锁mutex_1保护;task2和task3共享第二临界区,该临界区由互斥锁mutex_2保护。针对每个临界区,当其中一者获得互斥锁mutex_1并访问临界区时,另一者无法访问该临界区。
[0113]
在一实施例中,上述任务的优先级处理方法针对的任务可以不限为三个。例如可以包括第四任务、第五任务
……
第n任务等。
[0114]
在提升第三任务的优先级之后,所述方法还可以包括:
[0115]
s204,判断是否存在与所述第三任务共享第三临界区且正在访问所述第三临界区的第四任务;
[0116]
s205,当存在时,判断所述第四任务的优先级是否低于所述第一任务的优先级;
[0117]
s206,当判断出所述第四任务的优先级低于所述第一任务时,提升所述第四任务的优先级。
[0118]
在这一步骤中,按照与上述相同的方法判断出是否存在与第三任务共享第三临界区的第四任务,当存在时,且第四任务的优先级低于第一任务的优先级时,可以提升第四任务的优先级,例如提升至与第一任务相同。
[0119]
可选地,在步骤s206,即当判断出所述第四任务的优先级低于所述第一任务时,提升所述第四任务的优先级之后,该方法还可以包括:
[0120]
s207,判断是否存在与被提高优先级的第n任务共享临界区且正在访问该临界区的第n+1任务;
[0121]
s208,当存在时,判断所述第n+1任务的优先级是否低于所述第一任务的优先级;
[0122]
s209,当判断出所述第n+1任务的优先级低于所述第一任务时,提升所述第n+1任务的优先级提高至所述第一任务的优先级,其中为n大于等于4的正整数。
[0123]
在上述步骤中,假设n为4,在第四任务被提升优先级之后,判断是否存在与第四任务共享临界区的第五任务。当存在时,且第五任务的优先级低于第一任务的优先级时,可以提升第五任务的优先级,例如提升至与第一任务相同。由此,可以保证多于三个任务执行时,每一个与第三任务相关的任务的优先级均被提升,避免了低优先级任务拖延高优先级任务的执行。上述的“与第三任务相关的任务”是指需要先于第三任务执行、否则第三任务无法执行的任务。
[0124]
综上所述,本实施例提出的任务的优先级处理方法至少具有如下优点:
[0125]
本申请提出一种自动化运维任务的优先级处理方法,应用于多任务操作系统。当
操作系统中的第一任务和第二任务共享第一临界区,而第二任务与第三任务共享第二临界区时,为了避免现有的优先级继承的方法在多任务系统中仍可能造成的优先级反转的任务,本申请实施例提供的方案不仅在第一任务无法访问第一临界区的情况下提升此时正在访问临界区的第二任务,同时提升与第二任务共享第二临界区的第三任务,避免优先级低的第三任务拖延第二任务的执行,从而避免优先级高的第一任务延迟执行造成的优先级反转。
[0126]
除此之外,本实施例提出的任务的优先级处理方法至少还包括如下优点:
[0127]
本申请优选实施例提出一种自动化运维任务的优先级处理方法,应用于多任务操作系统。在操作系统中的任务高于三个的情况下,本申请实施例提供的方案不仅在第一任务无法访问第一临界区的情况下提升此时正在访问临界区的第二任务,同时提升与第二任务共享第二临界区的第三任务,以及与第三任务共享临界区的第四、第五
……
第n+1任务的优先级,避免优先级低的任务直接或间接地拖延第二任务的执行,从而避免优先级高的第一任务延迟执行造成的优先级反转。相比于现有技术,本申请实施例改进了现有的优先级继承的方法,解决了优先级反转的问题,进而解决了高优先级的任务由于等待时间过长导致延迟响应的问题。
[0128]
第三实施例
[0129]
本申请第三实施例提出一种自动化运维任务的优先级处理装置,图3是本申请第三实施例的任务的优先级处理装置的方框图。如图3所示,所述任务包括第一任务、第二任务和第三任务,所述的第一任务的优先级高于所述第二任务和所述第三任务;所述装置包括:
[0130]
第一优先级变更模块301,用于当所述第一任务由于访问第一临界区失败而被阻塞时,提升与所述第一任务共享第一临界区且正在访问所述第一临界区的第二任务的优先级;
[0131]
参考上述程序1的执行步骤9和程序2的执行步骤5,根据优先级继承方法,在满足如下情况时第二任务的优先级可以被提升至与第一任务相同:
[0132]
1,第二任务的优先级低于第一任务;
[0133]
2,此时第一任务和第二任务的临界区由第二任务访问,即第二任务获得了保护临界区(共享资源)的互斥锁导致当前第一任务无法获得。
[0134]
在这一模块中,当第一任务由于访问第一临界区失败而被阻塞时,第一任务将当前访问第一临界区的第二任务的优先级提升。
[0135]
在一优选实施例中,上述第二任务的优先级优选可以被提升至与第一任务的优先级相同。在其他实施例中,上述第二任务的优先级也可以提升至仅次于第一任务,或者提升至高于其他任务的优先级,本申请并不以此为限。
[0136]
第一判断模块302,用于判断是否存在与第二任务共享第二临界区且正在访问所述第二临界区的第三任务;
[0137]
第二优先级变更模块303,用于当存在所述第三任务时,提升所述第三任务的优先级。
[0138]
在上述两个模块中,参考上述程序1的执行步骤10和程序2的执行步骤6,本申请实施例提出的改进相比于现有技术而言,不仅提升task2的优先级,同时提升与task2相关的
task3的优先级,以避免task3拖延task2的执行时间,导致task1无法及时执行。
[0139]
在本发明实施例中,task_pri_change里可以包括下面的代码,用于步骤s102中发现task3并提升task3的优先级。
[0140]
在一优选实施例中,上述第三任务的优先级优选可以被提升至与第一任务的优先级相同。在其他实施例中,上述第三任务的优先级也可以提升至仅次于第一任务,或者提升至高于其他任务的优先级,本申请并不以此为限。
[0141]
本实施例提出的任务的优先级处理装置至少具有如下优点:
[0142]
本发明提出一种自动化运维任务的优先级处理装置,应用于多任务操作系统。当操作系统中的第一任务和第二任务共享第一临界区,而第二任务与第三任务共享第二临界区时,为了避免现有的优先级继承的方法在多任务系统中仍可能造成的优先级反转的任务,本发明实施例提供的方案不仅在第一任务无法访问第一临界区的情况下提升此时正在访问临界区的第二任务的优先级,同时提升与第二任务共享第二临界区的第三任务的优先级,避免优先级低的第三任务拖延第二任务的执行,从而避免优先级高的第一任务延迟执行造成的优先级反转。
[0143]
相比于现有技术,本发明实施例改进了现有的优先级继承的手段,解决了优先级反转的问题,进而解决了高优先级的任务由于等待低优先级任务的互斥锁的时间太长,而导致系统实时性跟不上的问题。本申请提出优先级处理装置提高了系统的实用性,在各种领域,特别是工业,语音,航天,军工,等领域具有重要的应用价值。
[0144]
第四实施例
[0145]
本申请第四实施例提出一种自动化运维任务的优先级处理装置,图4是本申请第四实施例的任务的优先级处理装置的方框图。所述任务包括第一任务、第二任务和第三任务,所述的第一任务的优先级高于所述第二任务和所述第三任务;如图4所示,该任务的优先级处理装置包括:
[0146]
第一优先级变更模块401,用于当所述第一任务由于访问第一临界区失败而被阻塞时,提升与所述第一任务共享第一临界区且正在访问所述第一临界区的第二任务的优先级;
[0147]
第二判断模块402,用于判断是否存在与第二任务共享第二临界区且正在访问所述第二临界区的第三任务;
[0148]
第二优先级变更模块403,用于当存在所述第三任务时,提升所述第三任务的优先级。
[0149]
上述模块401至403与上一实施例的模块301至303相同或相似,在此不再赘述,相关内容可以参考模块301至303的描述。
[0150]
可选地,所述第一临界区与所述第二临界区为同一临界区或不同临界区。
[0151]
可选地,所述提升与所述第一任务共享第一临界区且正在访问所述第一临界区的第二任务的优先级中,所述第二任务的优先级被提升至与所述第一任务的优先级相同;和/或
[0152]
所述提升所述第三任务的优先级中,所述第三任务的优先级被提升至与所述第一任务的优先级相同。
[0153]
可选地,所述装置还包括:
[0154]
第一判断模块404,用于判断是否存在与所述第三任务共享第三临界区且正在访问所述第三临界区的第四任务;
[0155]
第一优先级判断模块405,用于当存在第四任务时,判断所述第四任务的优先级是否低于所述第一任务的优先级;
[0156]
第三优先级变更模块406,用于当判断出所述第四任务的优先级低于所述第一任务时,提升所述第四任务的优先级。
[0157]
可选地,所述装置还包括:
[0158]
第三判断模块407,判断是否存在与被提高优先级的第n任务共享临界区且正在访问该临界区的第n+1任务;
[0159]
第二优先级判断模块408,用于当存在第n+1任务时,判断所述第n+1任务的优先级是否低于所述第一任务的优先级;
[0160]
第四优先级变更模块409,用于当判断出所述第n+1任务的优先级低于所述第一任务时,提升所述第n+1任务的优先级,并判断提升后的所述第n+1任务的优先级是否为最高优先级,如果所述第n+1任务的优先级是最高优先级,则发出变更结果通知。
[0161]
综上所述,本实施例提出的任务的优先级处理装置至少具有如下优点:
[0162]
本申请提出一种自动化运维任务的优先级处理装置,应用于多任务操作系统。当操作系统中的第一任务和第二任务共享第一临界区,而第二任务与第三任务共享第二临界区时,为了避免现有的优先级继承的手段在多任务系统中仍可能造成的优先级反转的任务,本申请实施例提供的方案不仅在第一任务无法访问第一临界区的情况下提升此时正在访问临界区的第二任务,同时提升与第二任务共享第二临界区的第三任务,避免优先级低的第三任务拖延第二任务的执行,从而避免优先级高的第一任务延迟执行造成的优先级反转。
[0163]
除此之外,本实施例提出的任务的优先级处理装置至少还包括如下优点:
[0164]
本申请优选实施例提出一种自动化运维任务的优先级处理装置,应用于多任务操作系统。在操作系统中的任务高于三个的情况下,本申请实施例提供的方案不仅在第一任务无法访问第一临界区的情况下提升此时正在访问临界区的第二任务,同时提升与第二任务共享第二临界区的第三任务,以及与第三任务共享临界区的第四、第五
……
第n+1任务的优先级,避免优先级低的任务直接或间接地拖延第二任务的执行,从而避免优先级高的第一任务延迟执行造成的优先级反转。相比于现有技术,本申请实施例改进了现有的优先级继承的方案,解决了优先级反转的问题,进而解决了高优先级的任务由于等待时间过长导致延迟响应的问题。
[0165]
本申请实施例还提出一种电子装置,用于任务的优先级处理,所述任务包括第一任务、第二任务和第三任务,所述的第一任务的优先级高于所述第二任务和所述第三任务;包括:
[0166]
存储器,用于存储计算机可读程序;
[0167]
处理器,当所述处理器读取所述存储器中的计算机可读程序时,所述电子装置执行如下操作:
[0168]
当所述第一任务由于访问第一临界区失败而被阻塞时,提升与所述第一任务共享第一临界区且正在访问所述第一临界区的第二任务的优先级;
[0169]
判断是否存在与第二任务共享第二临界区且正在访问所述第二临界区的第三任务;
[0170]
当存在所述第三任务时,提升所述第三任务的优先级。
[0171]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
[0172]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0173]
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0174]
在一个典型的配置中,所述计算机设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
[0175]
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0176]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0177]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0178]
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
[0179]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0180]
以上对本申请所提供的一种自动化运维任务的优先级处理方法和处理装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
网址:自动化运维任务的优先级处理方法和处理装置与流程 https://www.yuejiaxmz.com/news/view/1402346
相关内容
一种自动化任务处理方法和装置与流程智能化任务处理装置以及智能任务处理方法
任务处理系统和任务处理方法与流程
智能化任务处理装置以及智能任务处理方法.pdf
一种样本自动化处理的任务调度方法及系统与流程
组合优化任务的处理方法以及处理装置
衣物处理装置的除菌方法和装置与流程
自动任务处理方法、装置、服务器及存储介质.pdf
多任务处理优化:如何优化操作系统以提升多任务处理能力?
多任务处理优化.docx

