一种众核系统的任务管理方法和装置制造方法

文档序号:6504541阅读:96来源:国知局
一种众核系统的任务管理方法和装置制造方法
【专利摘要】本发明提供一种众核系统的任务管理方法和装置,涉及计算机领域,能够在众核系统中通过任务管理装置进行系统任务的调度管理,提高了众核系统进程管理效率。其方法为:当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除。本发明的实施例用于通过任务管理装置进行系统任务的调度管理。
【专利说明】—种众核系统的任务管理方法和装置

【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种众核系统的任务管理方法和装置。

【背景技术】
[0002]在未来的处理器制造工艺中,集成在单芯片上的处理器核数会越来越多,这种集成很多个处理器核的处理器一般被称为众核处理器(Many Core),若在众核处理器环境下的操作系统的任务调度仍采用单纯的操作系统软件任务调度方法,则任务调度本身的效率瓶颈会成为整个系统的瓶颈;如果完全采用硬件调度方法,则会带来很大的硬件系统复杂度,进而增加了硬件设计和验证的难度,并且可能导致该系统同现有的系统完全不兼容的问题。
[0003]在现有技术中,以Linux系统为例,在单核的处理器环境下,系统任务是由runqueue (运行队列)结构进行管理的,每个CPU含有两个runqueue结构,即activerunqueue (活动运行队列)和expired runqueue (过期运行队列),每个runqueue结构中含有一个140项优先级的就绪任务队列,处于就绪状态的任务将被插入到active runqueue对应的优先级的队列中,每个任务有一个时间片来决定其可以执行的时间长短。当一个任务的执行时间超过时间片长度,这个任务就会被挂起并移动到expired runqueue里对应的优先级队列中,在移动的过程中其时间片长度以及优先级会被重新计算。如果目前activerunqueue中的某个优先级队列为空,则将active runqueue和expired runqueue中对应的优先级队列调换位置,即expired runqueue中对应的优先级队列中的任务就被移动到active runqueue中。每当需要任务调度时,Linux系统就会调用scheduler O函数遍历对应cpu的active runqueue,并获取其处于最高优先级的就绪任务进行运行。
[0004]在众核处理器中,各个处理器都拥有自己的runqueue。当一个任务被创建的时候,它就会被插入在某一个处理器的runqueue上。这样会造成各个处理器之间的任务不平衡,因此有必要每隔一段时间就对所有处理器进行一次负载均衡(load balance),以使得各个处理器之间的任务负载保持平衡。
[0005]因此,发明人发现在现有技术中,众核处理器在实现上述的任务调度过程中,至少存在如下问题:
[0006]负载均衡的算法很复杂,并且其执行时间会随着处理器数量的增加而增加,在未来的众核处理器中,runqueue进行负载均衡所需要的时间会降低系统的运行效率,并且每当有cpu调用scheduler O函数的时候,系统就会给runqueue加锁,从而使得各处理器需要等待runqueue资源。因此,系统对runqueue资源的频繁等待同样会降低系统进程管理效率。


【发明内容】

[0007]本发明的实施例提供一种众核系统的任务管理方法和装置,提高了众核系统中的进程管理效率。
[0008]为达到上述目的,本发明的实施例采用如下技术方案:
[0009]第一方面,提供一种众核系统的任务管理方法,所述方法包括:
[0010]根据第一任务队列索引寄存器中头索引的值获取对应的第一任务描述符项,所述第一任务描述符项对应第一索引号,所述第一索引号与所述头索引的值相对应,所述头索引表示所述第一任务队列起始的第一进程的所述第一任务描述符项对应的所述第一索引号;
[0011]根据所述第一任务描述符项中的第一进程描述符指针获取所述第一进程对应的第一进程描述符,所述第一进程描述符指针指向所述第一进程描述符所在的内存地址;
[0012]根据所述第一任务描述符项中的下一个任务索引的值获取对应的第二进程描述符项,根据所述第二任务描述符项中的第二进程描述符指针获取所述第二进程对应的第二进程描述符,直到获取所述第一任务队列索引寄存器中尾索引的值对应的第三进程描述符为止,所述第二任务描述符项对应第二索引号,所述第二索引号与所述第一任务描述符项中的下一个任务索引的值相对应,所述尾索引表示所述第一任务队列末尾的所述第三进程的第三任务描述符项对应的第三索引号。
[0013]在第一种可能的实现方式中,结合第一方面,若需要将第四进程插入到所述第四进程对应的任务队列中,所述方法还包括:
[0014]获取所述第四进程的第四进程描述符指针和第四进程优先级;
[0015]获取空队列索引寄存器中的头索引值对应的第四任务描述符项,将所述第四任务描述符项中的进程描述符指针的值修改为所述第四进程描述符指针的值,所述空队列索引寄存器用以记录处于空闲状态的任务队列;
[0016]将所述空队列索引寄存器的头索引值改为所述第四任务描述符项中的下一个任务索引的值;
[0017]将所述第四任务描述符项中的下一个任务索引的值改为与第四进程优先级对应的第四优先级队列索引寄存器中的头索引的值;
[0018]将所述第四优先级队列索引寄存器中的头索引的值改为所述第四任务描述符项对应的索引号。
[0019]在第二种可能的实现方式中,结合第一方面,若需要将第五进程从所述第五进程对应的任务队列中删除,所述方法还包括:
[0020]获取所述第五进程的第五进程描述符指针和第五进程优先级;
[0021]从与第五进程优先级对应的第五优先级队列索引寄存器中的头索引的值对应的任务描述符项遍历整个所述第五优先级队列,获取与所述第五进程对应的第五任务描述符项;
[0022]将所述第五进程从所述第五优先级队列索引寄存器中移除。
[0023]在第三种可能的实现方式中,结合第一方面的第二种可能的实现方式,所述将所述第五进程从所述第五优先级队列索引寄存器中移除包括:
[0024]若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号相对应,则将所述第五优先级队列索引寄存器中的头索引值或尾索引值修改为与所述第五进程对应的所述第五任务描述符项中的下一个任务索引的值;
[0025]若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号不对应,则将所述第五任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值,并将所述空队列索引寄存器中的头索引的值改为所述第五任务描述符项对应的索引号,其中,若所述空队列索引寄存器的尾索引的值表示为空时,则将所述空队列索引寄存器的尾索引的值改为所述第五任务描述符项对应的索引号。
[0026]在第四种可能的实现方式中,结合第一方面,当处理器需要运行第六进程时,所述方法还包括:
[0027]在所有优先级索引寄存器中获取优先级最高的第六优先级索引寄存器且所述第六优先级索引寄存器中的头索引值不表示为空;
[0028]获取所述第六优先级索引寄存器的头索引的值对应的第六任务描述符项;
[0029]将所述第六优先级索引寄存器的头索引值改为所述第六任务描述符项中的下一个任务索引的值;
[0030]将所述第六任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值;
[0031]将所述空队列索引寄存器中的头索引的值改为第六任务描述符项对应的索引号的值;
[0032]若所述空队列索引寄存器中尾索引的值表示为空,则将所述空队列索引集训期中的尾索引的值改为所述第六任务描述符项对应的索引号的值。
[0033]在第五种可能的实现方式中,结合第一方面的第一种可能的实现方式,当所述空队列索引寄存器中的头索引值表示为空时,所述方法还包括:
[0034]在外部存储器中新建第四任务描述符结构体;
[0035]将所述第四任务描述符结构体中的进程描述符指针的值修改为所述第四任务描述符指针的值;
[0036]将所述第四任务描述符结构体中的下一个任务指针的值修改为所述第四优先级索引寄存器中的外链表指针的值;
[0037]将所述第四优先级索引寄存器中的外链表指针的值修改为所述第四任务描述符结构体的地址。
[0038]在第六种可能的实现方式中,结合第一方面的第二种可能的实现方式,若未获取到所述第五任务描述符项,所述方法还包括:
[0039]根据第五优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第五优先级任务描述符结构体链表;
[0040]遍历整个所述第五优先级任务描述符结构体链表,找到与所述第五进程对应的第五任务描述符结构体;
[0041]将所述第五进程从所述第五优先级任务描述符结构体链表中移除。
[0042]在第八种可能的实现方式中,结合第一方面的第四种可能的实现方式,当所述第六优先级索引寄存器中的头索引值表示为空时,所述方法还包括:
[0043]根据所述第六优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第六任务描述符结构体链表;
[0044]将所述第六进程从所述第六任务描述符结构体链表中移除。
[0045]第二方面,提供一种任务管理装置,所述装置包括:
[0046]第一描述符项获取单元,用于根据第一任务队列索引寄存器中头索引的值获取对应的第一任务描述符项,所述第一任务描述符项对应第一索引号,所述第一索引号与所述头索引的值相对应,所述头索引表示所述第一任务队列起始的第一进程的所述第一任务描述符项对应的所述第一索引号;
[0047]第一进程描述符获取单元,用于根据所述第一任务描述符项中的第一进程描述符指针获取所述第一进程对应的第一进程描述符,所述第一进程描述符指针指向所述第一进程描述符所在的内存地址;
[0048]第三进程描述符获取单元,用于根据所述第一任务描述符项中的下一个任务索引的值获取对应的第二进程描述符项,根据所述第二任务描述符项中的第二进程描述符指针获取所述第二进程对应的第二进程描述符,直到获取所述第一任务队列索引寄存器中尾索引的值对应的第三进程描述符为止,所述第二任务描述符项对应第二索引号,所述第二索引号与所述第一任务描述符项中的下一个任务索引的值相对应,所述尾索引表示所述第一任务队列末尾的所述第三进程的第三任务描述符项对应的第三索引号。
[0049]在第一种可能的实现方式中,结合第二方面,若需要将第四进程插入到所述第四进程对应的任务队列中,所述装置还包括:
[0050]第四进程描述符指针和优先级获取模块,用于获取所述第四进程的第四进程描述符指针和第四进程优先级;
[0051]第四进程描述符指针插入模块,用于获取空队列索引寄存器中的头索引值对应的第四任务描述符项,将所述第四任务描述符项中的进程描述符指针的值修改为所述第四进程描述符指针的值,所述空队列索引寄存器用以记录处于空闲状态的任务队列;
[0052]第一空队列修改模块,用于将所述空队列索引寄存器的头索引值改为所述第四任务描述符项中的下一个任务索引的值;
[0053]第四进程插入模块,用于将所述第四任务描述符项中的下一个任务索引的值改为与第四进程优先级对应的第四优先级队列索引寄存器中的头索引的值;
[0054]将所述第四优先级队列索引寄存器中的头索引的值改为所述第四任务描述符项对应的索引号。
[0055]在第二种可能的实现方式中,结合第二方面,若需要将第五进程从所述第五进程对应的任务队列中删除,所述装置还包括:
[0056]第五进程描述符指针和优先级获取模块,用于获取所述第五进程的第五进程描述符指针和第五进程优先级;
[0057]第五任务描述符项获取模块,用于从与第五进程优先级对应的第五优先级队列索引寄存器中的头索引的值对应的任务描述符项遍历整个所述第五优先级队列,获取与所述第五进程对应的第五任务描述符项;
[0058]第五进程删除模块,用于将所述第五进程从所述第五优先级队列索引寄存器中移除。
[0059]在第三种可能的实现方式中结合第二方面的第二种实现方式,所述第五进程删除模块具体用于:
[0060]若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号相对应,则将所述第五优先级队列索引寄存器中的头索引值或尾索引值修改为与所述第五进程对应的所述第五任务描述符项中的下一个任务索引的值;
[0061]若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号不对应,则将所述第五任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值,并将所述空队列索引寄存器中的头索引的值改为所述第五任务描述符项对应的索引号,其中,若所述空队列索引寄存器的尾索引的值表示为空时,则将所述空队列索引寄存器的尾索引的值改为所述第五任务描述符项对应的索引号。
[0062]在第四种可能的实现方式中,结合第二方面,当处理器需要运行第六进程时,所述装置还包括:
[0063]最高优先级寄存器获取模块,用于在所有优先级索引寄存器中获取优先级最高的第六优先级索引寄存器且所述第六优先级索引寄存器中的头索引值不表示为空;
[0064]第六任务描述符项获取模块,用于获取所述第六优先级索引寄存器的头索引的值对应的第六任务描述符项;
[0065]第六进程移除模块,用于将所述第六优先级索引寄存器的头索引值改为所述第六任务描述符项中的下一个任务索引的值;
[0066]将所述第六任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值;
[0067]将所述空队列索引寄存器中的头索引的值改为第六任务描述符项对应的索引号的值;
[0068]若所述空队列索引寄存器中尾索引的值表示为空,则将所述空队列索引集训期中的尾索引的值改为所述第六任务描述符项对应的索引号的值。
[0069]在第五种可能的实现方式中,结合第二方面的第一种可能的实现方式,当所述空队列索引寄存器中的头索引值表示为空时,所述装置还包括:
[0070]第四任务描述符结构体创建模块,用于在外部存储器中新建第四任务描述符结构体;
[0071]所述第四任务描述符指针插入模块具体用于将所述第四任务描述符结构体中的进程描述符指针的值修改为所述第四任务描述符指针的值;
[0072]所述第四进程插入模块具体用于:将所述第四任务描述符结构体中的下一个任务指针的值修改为所述第四优先级索引寄存器中的外链表指针的值;
[0073]将所述第四优先级索引寄存器中的外链表指针的值修改为所述第四任务描述符结构体的地址。
[0074]在第六种可能的实现方式中,结合第二方面的第二种可能的实现方式,若未获取到所述第五任务描述符项,所述装置还包括:
[0075]第五优先级任务描述符结构体获取模块,用于根据第五优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第五优先级任务描述符结构体链表;
[0076]遍历整个所述第五优先级任务描述符结构体链表,找到与所述第五进程对应的第五任务描述符结构体;
[0077]所述第五进程删除模块具体用于将所述第五进程从所述第五优先级任务描述符结构体链表中移除。
[0078]在第七种可能的实现方式中,结合第二方面的第四种可能的实现方式,当所述第六优先级索引寄存器中的头索引值表示为空时,所述装置还包括:
[0079]第六任务描述符结构体链表获取模块,用于根据所述第六优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第六任务描述符结构体链表;
[0080]所述第六进程移除模块具体用于将所述第六进程从所述第六任务描述符结构体链表中移除。
[0081]本发明的实施例提供一种众核系统的任务管理方法和装置,在众核系统中通过任务管理装置来进行系统任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核系统中通过任务管理装置进行系统任务的调度管理,提高了众核系统中的进程管理效率。

【专利附图】

【附图说明】
[0082]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0083]图1为本发明实施例提供的一种众核系统的任务管理方法流程示意图一;
[0084]图2为本发明实施例提供的一种众核系统的任务管理方法流程示意图二;
[0085]图3为本发明实施例提供的一种任务管理装置结构示意图一;
[0086]图4为本发明实施例提供的一种任务管理装置结构示意图二
[0087]图5为本发明实施例提供的一种众核系统的任务管理方法流程示意图三;
[0088]图6为本发明实施例提供的一种任务管理装置结构示意图三;
[0089]图7为本发明实施例提供的一种任务管理装置结构示意图四;
[0090]图8为本发明实施例提供的一种众核系统的任务管理方法流程示意图四;
[0091]图9为本发明实施例提供的一种任务管理装置结构示意图五;
[0092]图10为本发明实施例提供的一种任务管理装置结构示意图六;
[0093]图11为本发明实施例提供的一种众核系统的任务管理方法流程示意图五;
[0094]图12为本发明实施例提供的一种任务管理装置结构示意图七;
[0095]图13为本发明实施例提供的一种任务管理装置结构示意图八;
[0096]图14为本发明实施例提供的一种众核系统的任务管理方法流程示意图六;
[0097]图15为本发明实施例提供的一种任务管理装置结构示意图九;
[0098]图16为本发明实施例提供的一种任务管理装置结构示意图十;
[0099]图17为本发明实施例提供的一种众核系统的任务管理方法流程示意图七;
[0100]图18为本发明实施例提供的一种任务管理装置结构示意图十一;
[0101]图19为本发明实施例提供的一种任务管理装置结构示意图十二 ;
[0102]图20为本发明实施例提供的一种任务管理装置结构示意图十三;
[0103]图21为本发明实施例提供的一种任务管理装置结构示意图十四;
[0104]图22为本发明实施例提供的一种任务管理装置结构示意图十五;
[0105]图23为本发明实施例提供的一种任务管理装置结构示意图十六;
[0106]图24为本发明实施例提供的一种任务管理装置结构示意图十七;
[0107]图25为本发明实施例提供的一种任务管理装置结构示意图十八;
[0108]图26为本发明实施例提供的一种任务管理装置结构示意图十九;
[0109]图27为本发明实施例提供的一种任务管理装置结构示意图二十;
[0110]图28为本发明实施例提供的一种任务管理装置结构示意图二十一
[0111]图29为本发明实施例提供的一种众核系统的结构示意图。

【具体实施方式】
[0112]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0113]本发明实施例的应用场景为一个众核系统,该众核系统中至少包括两个处理器核,本发明为了提高众核系统中的进程管理效率,在该众核系统中加入了专门的硬件,即任务管理装置,该任务管理装置通过片上网络与该众核系统中的各个处理器核相连接,下面对本发明是示例提供的方法进行说明。
[0114]本发明实施例提供一种众核系统的任务管理方法,如图1所示,在将进程对应的任务描述符项插入任务链表时,该包括:
[0115]101、根据第一任务队列索引寄存器中头索引的值获取对应的第一任务描述符项,所述第一任务描述符项对应第一索引号,所述第一索引号与所述头索引的值相对应,所述头索引表示所述第一任务队列起始的第一进程的所述第一任务描述符项对应的所述第一索引号。
[0116]102、根据所述第一任务描述符项中的第一进程描述符指针获取所述第一进程对应的第一进程描述符,所述第一进程描述符指针指向所述第一进程描述符所在的内存地址。
[0117]103、根据所述第一任务描述符项中的下一个任务索引的值获取对应的第二进程描述符项,根据所述第二任务描述符项中的第二进程描述符指针获取所述第二进程对应的第二进程描述符,直到获取所述第一任务队列索引寄存器中尾索引的值对应的第三进程描述符为止,所述第二任务描述符项对应第二索引号,所述第二索引号与所述第一任务描述符项中的下一个任务索引的值相对应,所述尾索引表示所述第一任务队列末尾的所述第三进程的第三任务描述符项对应的第三索引号。
[0118]本发明的实施例提供一种众核系统的任务管理方法,在众核系统中通过任务管理装置来进行系统任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核系统中通过任务管理装置进行系统任务的调度管理,提高了众核系统中的进程管理效率。
[0119]为了使本领域技术人员能够更清楚地理解本发明实施例提供的技术方案,下面通过具体的实施例,对本发明实施例提供另一种众核系统的任务管理方法进行详细说明,当需要将第一进程加入到任务队列中时,如图2所示,方法包括:
[0120]201、任务管理装置接收处理器核发送的第一进程描述符指针和第一进程优先级。
[0121]具体的,可以通过以下方式实现:
[0122]当操作系统需要创建第一进程、确定第一进程已经处于就绪状态或者正在运行的第一进程的时间片所规定的时间已到时,操作系统就会返回对应第一进程的进程描述符指针以及对应第一进程的进程优先级给当前处理器核;
[0123]该处理器核将收到的对应第一进程的进程描述符指针以及对应第一进程的进程优先级发送给任务管理装置。
[0124]示例性的,假设需要创建第一进程,第一进程的进程描述符指针为第一指针,且第一进程的优先级为0,则操作系统将第一指针以及优先级O返回给当前的处理器核,当前的处理器核将第一指针以及优先级O发送给任务管理装置。
[0125]202、任务管理装置根据第一进程描述符指针的值和第一进程优先级,将第一进程对应的任务描述符项插入到任务链表中。
[0126]具体的,可以包括以下步骤:
[0127]任务管理装置首先取得空队列索引寄存器的头索引值对应的任务描述符项,并将空队列索引寄存器的头索引值对应的任务描述符项中的进程描述符指针的值修改为任务管理装置收到的第一进程描述符指针的值,然后将空队列索引寄存器对应的头索引值修改为空队列索引寄存器的头索引值对应的任务描述符项中的下一个任务索引值;
[0128]再将空队列索引寄存器的头索引值对应的任务描述符项中的下一个任务索引值修改为任务管理装置收到的优先级对应的优先级寄存器中的头索引值,最后将任务管理装置收到的优先级对应的优先级寄存器中的头索引值修改为空队列索引寄存器的头索引值对应的任务描述符项对应的索引号的值。
[0129]示例性的,如图3所示,当任务管理装置接收到第一指针和优先级O后,由于此时空队列索引寄存器中的头索引值为6,则将索引号为6的进程描述符项中的进程描述符指针的值修改为第一指针的值,并将空队列索引寄存器的头索引值6修改为7,即修改为索引号为6的任务描述符项中的下一个任务索引值7 ;
[0130]将索引号为6的任务描述符项中的下一个任务索引值7修改为0,即修改为优先级O队列索引寄存器中的头索引值0,而后将优先级O队列索引寄存器中的头索引值O修改为6,即修改为初始时空队列索引寄存器中头索引值对应的任务描述符项的索引号6,修改后如图4所示。
[0131]由于当有任务都在任务管理装置中对应一个进程描述符项时,任务管理装置需要较大的开销,因此,优选的,可以加入专门的片外存储器,将少量任务描述符项存储在任务管理装置中,将大部分任务描述符项存储在片外存储器中,其中当任务描述符项存储在片外存储器中,将任务描述符项称为任务描述符结构体,在这种情况下,在步骤202之前,如图5所示,还可以包括:
[0132]203、任务管理装置首先判断任务管理装置中是否存在空闲的任务描述符项。
[0133]204、若存在空闲的任务描述符项,则执行202。
[0134]205、若不存在空闲的任务描述符项,则任务管理装置根据第一进程描述符指针的值和第一进程优先级,将第一进程对应的任务描述符项插入到外链表中。
[0135]具体的,可以包括以下步骤:
[0136]任务管理装置在片外存储器中新建任务描述符结构体,并将新建任务描述符结构体中的进程描述符指针的值改为第一进程描述符指针的值,并将新建任务描述符结构体中的下一个任务指针的值改为对应的优先级索引寄存器中的外链表指针的值,再将对应的优先级索引寄存器中的外链表指针的值改为新建任务描述符结构体的地址。
[0137]其中,外链表为在任务管理装置之外的片外存储器中的任务链表。
[0138]示例性的,如图6所示,当需要创建第一进程时,空队列索引寄存器的头索引值为-1,即表示任务管理装置中是不存在空闲的任务描述符项,此时,任务管理装置在片外存储器中创建一个任务描述符结构体1,将任务描述符结构体I中的任务描述符指针设置为第一指针,将任务描述符结构体I中的下一个任务指针改为PO,即改为优先级O寄存器中的外链表指针的值PO,最后将优先级O寄存器中的外链表指针的值PO改为新建的任务描述符结构体的地址p4,修改完后如图7所示。
[0139]在另一种情况下,若操作系统删除某一进程,假设为第二进程,则,如图8所示,该众核系统的任务管理方法还包括:
[0140]801、在操作系统删除第二进程后,任务管理装置接收处理器核发送的第二进程描述符指针和第二进程优先级。
[0141]具体的,可以通过以下方法实现:
[0142]当操作系统删除第二进程后,则操作系统就会返回对应第二进程的进程描述符指针以及对应第二进程的进程优先级给当前处理器,该处理器核将收到的对应第二进程的进程描述符指针以及对应第二进程的进程优先级发送给任务管理装置。
[0143]示例性的,假设操作系统删除第二进程后,第二进程的进程描述符指针为第二指针,且第一进程的优先级为1,则操作系统将第二指针以及优先级I返回给当前的处理器核,当前的处理器核将第二指针以及优先级I发送给任务管理装置。
[0144]802、任务管理装置根据第二进程描述符指针和第二进程优先级,在任务列表中查找待删除的任务描述符项。
[0145]具体的,可以通过以下方法实现:
[0146]任务管理装置访问第二进程的优先级对应的优先级索引寄存器,并根据第二进程的优先级对应的优先级索引寄存器的头索引值遍历对应的优先级任务队列,以便查找待删除的任务描述符项。
[0147]示例性的,如图9所示,若系统在删除第二进程后,任务管理装置根据第二进程的优先级对应的优先级索引寄存器的头索引值遍历对应的优先级任务队列,即从索引号O开始查找,直到找到索引号为I的任务描述符项为第二进程对应的任务描述符项。
[0148]803、任务管理装置在查找到待删除的任务描述符项后,将待删除的任务描述符项从任务链表中删除。
[0149]具体的,可以包括以下步骤:
[0150]若第二进程的优先级对应的优先级索引寄存器的头索引值或者尾索引值指向待删除的任务描述符项,则任务管理装置将第二进程的优先级对应的优先级索引寄存器的头索引值或者尾索引值改为待删除的任务描述符项中的下一个任务索引值;
[0151]若其他任务描述符项中的下一个任务索引值指向待删除的任务描述符项,则任务管理装置将其他任务描述符项中的下一个任务索引值改为待删除的任务描述符项中的下一个任务索引值;
[0152]任务管理装置将待删除的任务描述符项中的下一个任务索引值改为空队列索引寄存器的头索引值,将空队列寄存器的头索引值改为待删除的任务描述符项对应的索引号,或者,将空队列寄存器的尾索引值改为待删除的任务描述符项对应的索引号。
[0153]示例性的,如图9所示,索引号为I的任务描述符项为第二进程对应的描述符项,并且在索引号为O的任务描述符项中的下一个任务描述符项为1,即指向了第二进程对应的索引号为I的任务描述符项,则需要将索引号为O的任务描述符项中的下一个任务索引值由I改为2,即改为第二进程对应的任务描述符项中的下一个任务索引值;
[0154]最后将索引号为I的任务描述符项中的下一个任务索引值2改为6,即改为空队列索引寄存器的头索引值6,将空队列寄存器的头索引6改为1,即改为第二进程对应的任务描述符项对应的索引号I,修改完后如图10所不。
[0155]优选的,当任务管理装置加入专门的片外存储器时,任务管理装置在任务链表中可能查找不到待删除的任务描述符项,此时任务管理装置就要在外链表中查找,此时,如图11所示上述方法还可以包括:
[0156]804、任务管理装置根据第二进程描述符指针和第二进程优先级,在外链表中查找待删除的任务描述符结构体。
[0157]具体的,可以通过以下方式实现:
[0158]任务管理装置根据第二进程的优先级对应的优先级索引寄存器中的外链表指针值访问片外存储器中对应优先级的任务描述结构体链表,查找待删除的任务描述符结构体。
[0159]805、任务管理装置在查找到待删除的任务描述符结构体后,将待删除的任务描述符结构体从外链表中删除。
[0160]示例性的,如图12所示,在索引号O到2中没有找到第二进程对应的任务描述符项,则根据优先级O寄存器中的外链表指针的值pO在片外存储器中查找第二进程对应的任务描述符结构体
[0161]假设在外部存储器中找到了第二进程对应的任务描述符结构体p5,则将p5从外部存储器中删除,删除后如图13所示。
[0162]在另一种情况下,若任务管理装置申请新任务,则如图14所示,该众核系统的任务管理方法还包括:
[0163]1401、任务管理装置接收处理器核发送的新任务请求。
[0164]1402、任务管理装置将可用的优先级最高的优先级索引寄存器从任务链表中移除。
[0165]具体的,可以通过以下方式实现:
[0166]访问优先级最高并且优先级最高并且头索引值不为-1的优先级索引寄存器,并确定优先级索引寄存器对应的任务描述符项,将所述优先级索引寄存器的头索引值改为所述优先级索引寄存器对应的任务描述符项中的下一个任务索引值;
[0167]将优先级索引寄存器对应的任务描述符项的下一个任务索引值改为空队列索引寄存器的头索引值,并将空队列索引寄存器的头索引值改为优先级索引寄存器对应的任务描述符项对应的索引号,或者,将空队列索引寄存器的尾索引值改为优先级索引寄存器对应的任务描述符项对应的索引号。
[0168]示例性的,如图15所示,当处理器核需要一个新任务运行时,则任务管理装置在优先级寄存器中查找当前优先级最高并且其头索引值不为-1的优先级索引寄存器,优先级最高并且其头索引值不为-1的优先级索引寄存器为优先级2索引寄存器,优先级2索引寄存器指向的描述符项为索引号为4的任务描述符项,则此时将优先级2索引寄存器的头索引值4改为5,即改为索引号为4的任务描述符项中的下一个任务索引值;
[0169]而后将索引号为4的任务描述符项中的下一个任务索引值改为6,即改为空队列索引寄存器的头索引值6,最后将空队列寄存器的头索引值6改为4,即改为索引号为4的任务描述符项对应的索引号4,若空队列索引寄存器的尾索引值为-1,则需要将空队列索引寄存器的尾索引值改为4,这里空队列寄存器的尾索引值为N-1,因此不用修改空队列索引寄存器的尾索引值,修改后如图16所示。
[0170]优选的,当任务管理装置加入专门的片外存储器时,在步骤1402之前,如图17所示,还可以包括:
[0171]1403、任务管理装置判断最高优先级的寄存器是否可用,若最高优先级的寄存器可用,则执行1402,若最高优先级的寄存器不可用且最高优先级的寄存器中的外链表指针不为空,则执行1404。
[0172]1404、任务管理装置将新任务对应的任务描述符结构体从外链表中删除。
[0173]具体的,可以通过以下方式实现:
[0174]根据最高级的优先级索引寄存器中的外链表指针访问对应的优先级任务描述符结构体链表,查找到最高级的优先级索引寄存器中的外链表指针指示的任务描述符结构体,并将指示的任务描述符结构体从外链表中删除。
[0175]示例性的,如图18所示,优先级为2的优先级索引寄存器中的头索引值为-1且其外链表指针的值为pi,则根据外链表指针Pi在外链表中找到对应的任务描述符结构体链表,并找到需要删除的任务描述符结构体pl,并将任务描述符结构体Pl从任务描述符结构体链表中删除,删除后如图19所示。
[0176]本发明的实施例提供一种众核系统的任务管理方法,在众核系统中通过任务管理装置来进行系统任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核系统中通过任务管理装置进行系统任务的调度管理,提高了众核系统中的进程管理效率。
[0177]本发明实施例提供一种任务管理装置01,如图20所示,任务管理装置01包括:
[0178]第一描述符项获取单元011,用于根据第一任务队列索引寄存器中头索引的值获取对应的第一任务描述符项,所述第一任务描述符项对应第一索引号,所述第一索引号与所述头索引的值相对应,所述头索引表示所述第一任务队列起始的第一进程的所述第一任务描述符项对应的所述第一索引号;
[0179]第一进程描述符获取单元012,用于根据所述第一任务描述符项中的第一进程描述符指针获取所述第一进程对应的第一进程描述符,所述第一进程描述符指针指向所述第一进程描述符所在的内存地址;
[0180]第三进程描述符获取单元013,用于根据所述第一任务描述符项中的下一个任务索引的值获取对应的第二进程描述符项,根据所述第二任务描述符项中的第二进程描述符指针获取所述第二进程对应的第二进程描述符,直到获取所述第一任务队列索引寄存器中尾索引的值对应的第三进程描述符为止,所述第二任务描述符项对应第二索引号,所述第二索引号与所述第一任务描述符项中的下一个任务索引的值相对应,所述尾索引表示所述第一任务队列末尾的所述第三进程的第三任务描述符项对应的第三索引号。
[0181]进一步的,如图21所示,若需要将第四进程插入到所述第四进程对应的任务队列中,所述装置01还包括:
[0182]第四进程描述符指针和优先级获取模块014,用于获取所述第四进程的第四进程描述符指针和第四进程优先级;
[0183]第四进程描述符指针插入模块015,用于获取空队列索引寄存器中的头索引值对应的第四任务描述符项,将所述第四任务描述符项中的进程描述符指针的值修改为所述第四进程描述符指针的值,所述空队列索引寄存器用以记录处于空闲状态的任务队列;
[0184]第一空队列修改模块016,用于将所述空队列索引寄存器的头索引值改为所述第四任务描述符项中的下一个任务索引的值;
[0185]第四进程插入模块017,用于将所述第四任务描述符项中的下一个任务索引的值改为与第四进程优先级对应的第四优先级队列索引寄存器中的头索引的值;
[0186]将所述第四优先级队列索引寄存器中的头索引的值改为所述第四任务描述符项对应的索引号。
[0187]再进一步的,如图22所示,若需要将第五进程从所述第五进程对应的任务队列中删除,所述装置01还包括:
[0188]第五进程描述符指针和优先级获取模块018,用于获取所述第五进程的第五进程描述符指针和第五进程优先级;
[0189]第五任务描述符项获取模块019,用于从与第五进程优先级对应的第五优先级队列索引寄存器中的头索引的值对应的任务描述符项遍历整个所述第五优先级队列,获取与所述第五进程对应的第五任务描述符项;
[0190]第五进程删除模块0110,用于将所述第五进程从所述第五优先级队列索引寄存器中移除。
[0191]再进一步的,第五进程删除模块0110具体用于:
[0192]若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号相对应,则将所述第五优先级队列索引寄存器中的头索引值或尾索引值修改为与所述第五进程对应的所述第五任务描述符项中的下一个任务索引的值;
[0193]若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号不对应,则将所述第五任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值,并将所述空队列索引寄存器中的头索引的值改为所述第五任务描述符项对应的索引号,其中,若所述空队列索引寄存器的尾索引的值表示为空时,则将所述空队列索引寄存器的尾索引的值改为所述第五任务描述符项对应的索引号。
[0194]又进一步的,如图23所示,当处理器需要运行第六进程时,所述装置01还包括:
[0195]最高优先级寄存器获取模块0111,用于在所有优先级索引寄存器中获取优先级最高的第六优先级索引寄存器且所述第六优先级索引寄存器中的头索引值不表示为空;
[0196]第六任务描述符项获取模块0112,用于获取所述第六优先级索引寄存器的头索引的值对应的第六任务描述符项;
[0197]第六进程移除模块0113,用于将所述第六优先级索引寄存器的头索引值改为所述第六任务描述符项中的下一个任务索引的值;
[0198]将所述第六任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值;
[0199]将所述空队列索引寄存器中的头索引的值改为第六任务描述符项对应的索引号的值;
[0200]若所述空队列索引寄存器中尾索引的值表示为空,则将所述空队列索引集训期中的尾索引的值改为所述第六任务描述符项对应的索引号的值。
[0201]进一步的,如图24所示,当所述空队列索引寄存器中的头索引值表示为空时,所述装置01还包括:
[0202]第四任务描述符结构体创建模块0114,用于在外部存储器中新建第四任务描述符结构体;
[0203]所述第四任务描述符指针插入模块015具体用于将所述第四任务描述符结构体中的进程描述符指针的值修改为所述第四任务描述符指针的值;
[0204]所述第四进程插入模块017具体用于:将所述第四任务描述符结构体中的下一个任务指针的值修改为所述第四优先级索引寄存器中的外链表指针的值;
[0205]将所述第四优先级索引寄存器中的外链表指针的值修改为所述第四任务描述符结构体的地址。
[0206]再进一步的,如图25所示,若未获取到所述第五任务描述符项,所述装置01还包括:
[0207]第五优先级任务描述符结构体获取模块0115,用于根据第五优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第五优先级任务描述符结构体链表;
[0208]遍历整个所述第五优先级任务描述符结构体链表,找到与所述第五进程对应的第五任务描述符结构体;
[0209]所述第五进程删除模块0116具体用于将所述第五进程从所述第五优先级任务描述符结构体链表中移除。
[0210]再进一步的,如图26所示,当所述第六优先级索引寄存器中的头索引值表示为空时,所述装置01还包括:
[0211]第六任务描述符结构体链表获取模块0117,用于根据所述第六优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第六任务描述符结构体链表;
[0212]所述第六进程移除模块具体用于将所述第六进程从所述第六任务描述符结构体链表中移除。
[0213]本发明的实施例提供一种众核系统的任务管理装置,在众核系统中通过任务管理装置来进行系统任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核系统中通过任务管理装置进行系统任务的调度管理,提高了众核系统中的进程管理效率。
[0214]本发明实施例提供一种任务管理装置02,如图27所示,任务管理装置02包括:
[0215]空队列索引寄存器021、至少两个优先级索引寄存器022以及任务描述符缓存块023 ;
[0216]其中,空队列索引寄存器021、至少两个优先级索引寄存器022包括头索引和尾索引;任务描述符缓存块023包括至少两个任务描述项0231,任务描述符项包括进程描述符指针02311和下一个任务索引02312。
[0217]进一步的,如图28所示,任务管理装置02还包括片外存储器024 ;片外存储器024中包括至少两个任务描述结构体0241,任务描述结构体包括进程描述符指针02411和下一个任务索引02412。
[0218]再进一步的,片外存储器024为独立的存储设备,或为操作系统在内存中划出的一块独立存储区域。
[0219]本发明的实施例提供一种众核系统的任务管理装置,在众核系统中通过任务管理装置来进行系统任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核系统中通过任务管理装置进行系统任务的调度管理,提高了众核系统中的进程管理效率。
[0220]本发明实施例提供一种众核系统03,如图29所示,众核系统03包括:
[0221]如本发明实施例的任务管理装置01,或如本发明实施例的任务管理装置02 ;
[0222]片上网络031和至少两个处理器核032,任务管理装置01或02通过片上网络031与至少两个处理器核032连接。
[0223]本发明的实施例提供一种众核系统,在众核系统中通过任务管理装置来进行系统任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核系统中通过任务管理装置进行系统任务的调度管理,提高了众核系统中的进程管理效率。
[0224]在本申请所提供的几个实施例中,应该理解到,所揭露的方法,装置可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0225]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0226]上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0227]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【权利要求】
1.一种众核系统的任务管理方法,其特征在于,包括: 根据第一任务队列索引寄存器中头索引的值获取对应的第一任务描述符项,所述第一任务描述符项对应第一索引号,所述第一索引号与所述头索引的值相对应,所述头索引表示所述第一任务队列起始的第一进程的所述第一任务描述符项对应的所述第一索引号;根据所述第一任务描述符项中的第一进程描述符指针获取所述第一进程对应的第一进程描述符,所述第一进程描述符指针指向所述第一进程描述符所在的内存地址; 根据所述第一任务描述符项中的下一个任务索引的值获取对应的第二进程描述符项,根据所述第二任务描述符项中的第二进程描述符指针获取所述第二进程对应的第二进程描述符,直到获取所述第一任务队列索引寄存器中尾索引的值对应的第三进程描述符为止,所述第二任务描述符项对应第二索引号,所述第二索引号与所述第一任务描述符项中的下一个任务索引的值相对应,所述尾索引表示所述第一任务队列末尾的所述第三进程的第三任务描述符项对应的第三索引号。
2.根据权利要求1所述方法,其特征在于,若需要将第四进程插入到所述第四进程对应的任务队列中,所述方法还包括: 获取所述第四进程的第四进程描述符指针和第四进程优先级; 获取空队列索引寄存器中的头索引值对应的第四任务描述符项,将所述第四任务描述符项中的进程描述符指针的值修改为所述第四进程描述符指针的值,所述空队列索引寄存器用以记录处于空闲状态的任务队列; 将所述空队列索引寄存器的头索引值改为所述第四任务描述符项中的下一个任务索引的值; 将所述第四任务描述符项中的下一个任务索引的值改为与第四进程优先级对应的第四优先级队列索引寄存器中的头索引的值; 将所述第四优先级队列索引寄存器中的头索引的值改为所述第四任务描述符项对应的索引号。
3.根据权利要求1所述方法,其特征在于,若需要将第五进程从所述第五进程对应的任务队列中删除,所述方法还包括: 获取所述第五进程的第五进程描述符指针和第五进程优先级; 从与第五进程优先级对应的第五优先级队列索引寄存器中的头索引的值对应的任务描述符项遍历整个所述第五优先级队列,获取与所述第五进程对应的第五任务描述符项;将所述第五进程从所述第五优先级队列索引寄存器中移除。
4.根据权利要求3所述方法,其特征在于,所述将所述第五进程从所述第五优先级队列索引寄存器中移除包括: 若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号相对应,则将所述第五优先级队列索引寄存器中的头索引值或尾索引值修改为与所述第五进程对应的所述第五任务描述符项中的下一个任务索引的值; 若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号不对应,则将所述第五任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值,并将所述空队列索引寄存器中的头索引的值改为所述第五任务描述符项对应的索引号,其中,若所述空队列索引寄存器的尾索引的值表示为空时,则将所述空队列索引寄存器的尾索引的值改为所述第五任务描述符项对应的索引号。
5.根据权利要求1所述方法,其特征在于,当处理器需要运行第六进程时,所述方法还包括: 在所有优先级索引寄存器中获取优先级最高的第六优先级索引寄存器且所述第六优先级索引寄存器中的头索引值不表示为空; 获取所述第六优先级索引寄存器的头索引的值对应的第六任务描述符项; 将所述第六优先级索引寄存器的头索引值改为所述第六任务描述符项中的下一个任务索引的值; 将所述第六任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值; 将所述空队列索引寄存器中的头索引的值改为第六任务描述符项对应的索引号的值; 若所述空队列索引寄存器中尾索引的值表示为空,则将所述空队列索引集训期中的尾索引的值改为所述第六任务描述符项对应的索引号的值。
6.根据权利要求2所述方法,其特征在于,当所述空队列索引寄存器中的头索引值表示为空时,所述方法还包括: 在外部存储器中新建第四任务描述符结构体; 将所述第四任务描述符结构体中的进程描述符指针的值修改为所述第四任务描述符指针的值; 将所述第四任务描述符结构体中的下一个任务指针的值修改为所述第四优先级索引寄存器中的外链表指针的值; 将所述第四优先级索引寄存器中的外链表指针的值修改为所述第四任务描述符结构体的地址。
7.根据权利要求3所述方法,其特征在于,若未获取到所述第五任务描述符项,所述方法还包括: 根据第五优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第五优先级任务描述符结构体链表; 遍历整个所述第五优先级任务描述符结构体链表,找到与所述第五进程对应的第五任务描述符结构体; 将所述第五进程从所述第五优先级任务描述符结构体链表中移除。
8.根据权利要求5所述方法,其特征在于,当所述第六优先级索引寄存器中的头索引值表示为空时,所述方法还包括: 根据所述第六优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第六任务描述符结构体链表; 将所述第六进程从所述第六任务描述符结构体链表中移除。
9.一种任务管理装置,其特征在于,所述装置包括: 第一描述符项获取单元,用于根据第一任务队列索引寄存器中头索引的值获取对应的第一任务描述符项,所述第一任务描述符项对应第一索引号,所述第一索引号与所述头索引的值相对应,所述头索引表示所述第一任务队列起始的第一进程的所述第一任务描述符项对应的所述第一索引号; 第一进程描述符获取单元,用于根据所述第一任务描述符项中的第一进程描述符指针获取所述第一进程对应的第一进程描述符,所述第一进程描述符指针指向所述第一进程描述符所在的内存地址; 第三进程描述符获取单元,用于根据所述第一任务描述符项中的下一个任务索引的值获取对应的第二进程描述符项,根据所述第二任务描述符项中的第二进程描述符指针获取所述第二进程对应的第二进程描述符,直到获取所述第一任务队列索引寄存器中尾索引的值对应的第三进程描述符为止,所述第二任务描述符项对应第二索引号,所述第二索引号与所述第一任务描述符项中的下一个任务索引的值相对应,所述尾索引表示所述第一任务队列末尾的所述第三进程的第三任务描述符项对应的第三索引号。
10.根据权利要求9所述装置,其特征在于,若需要将第四进程插入到所述第四进程对应的任务队列中,所述装置还包括: 第四进程描述符指针和优先级获取模块,用于获取所述第四进程的第四进程描述符指针和第四进程优先级; 第四进程描述符指针插入模块,用于获取空队列索引寄存器中的头索引值对应的第四任务描述符项,将所述第四任务描述符项中的进程描述符指针的值修改为所述第四进程描述符指针的值,所述空队列索引寄存器用以记录处于空闲状态的任务队列; 第一空队列修改模块,用于将所述空队列索引寄存器的头索引值改为所述第四任务描述符项中的下一个任务索引的值; 第四进程插入模块,用于将所述第四任务描述符项中的下一个任务索引的值改为与第四进程优先级对应的第四优先级队列索引寄存器中的头索引的值; 将所述第四优先级队列索引寄存器中的头索引的值改为所述第四任务描述符项对应的索引号。
11.根据权利要求9所述装置,其特征在于,若需要将第五进程从所述第五进程对应的任务队列中删除,所述装置还包括: 第五进程描述符指针和优先级获取模块,用于获取所述第五进程的第五进程描述符指针和第五进程优先级; 第五任务描述符项获取模块,用于从与第五进程优先级对应的第五优先级队列索引寄存器中的头索引的值对应的任务描述符项遍历整个所述第五优先级队列,获取与所述第五进程对应的第五任务描述符项; 第五进程删除模块,用于将所述第五进程从所述第五优先级队列索引寄存器中移除。
12.根据权利要求11所述装置,其特征在于,所述第五进程删除模块具体用于: 若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号相对应,则将所述第五优先级队列索引寄存器中的头索引值或尾索引值修改为与所述第五进程对应的所述第五任务描述符项中的下一个任务索引的值; 若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号不对应,则将所述第五任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值,并将所述空队列索引寄存器中的头索引的值改为所述第五任务描述符项对应的索引号,其中,若所述空队列索引寄存器的尾索引的值表示为空时,则将所述空队列索引寄存器的尾索引的值改为所述第五任务描述符项对应的索引号。
13.根据权利要求9所述装置,其特征在于,当处理器需要运行第六进程时,所述装置还包括: 最高优先级寄存器获取模块,用于在所有优先级索引寄存器中获取优先级最高的第六优先级索引寄存器且所述第六优先级索引寄存器中的头索引值不表示为空; 第六任务描述符项获取模块,用于获取所述第六优先级索引寄存器的头索引的值对应的第六任务描述符项; 第六进程移除模块,用于将所述第六优先级索引寄存器的头索引值改为所述第六任务描述符项中的下一个任务索引的值; 将所述第六任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值; 将所述空队列索引寄存器中的头索引的值改为第六任务描述符项对应的索引号的值; 若所述空队列索引寄存器中尾索引的值表示为空,则将所述空队列索引集训期中的尾索引的值改为所述第六任务描述符项对应的索引号的值。
14.根据权利要求10所述装置,其特征在于,当所述空队列索引寄存器中的头索引值表示为空时,所述装置还包括: 第四任务描述符结构体创建模块,用于在外部存储器中新建第四任务描述符结构体;所述第四任务描述符指针插入模块具体用于将所述第四任务描述符结构体中的进程描述符指针的值修改为所述第四任务描述符指针的值; 所述第四进程插入模块具体用于:将所述第四任务描述符结构体中的下一个任务指针的值修改为所述第四优先级索引寄存器中的外链表指针的值; 将所述第四优先级索引寄存器中的外链表指针的值修改为所述第四任务描述符结构体的地址。
15.根据权利要求11所述装置,其特征在于,若未获取到所述第五任务描述符项,所述装置还包括: 第五优先级任务描述符结构体获取模块,用于根据第五优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第五优先级任务描述符结构体链表; 遍历整个所述第五优先级任务描述符结构体链表,找到与所述第五进程对应的第五任务描述符结构体; 所述第五进程删除模块具体用于将所述第五进程从所述第五优先级任务描述符结构体链表中移除。
16.根据权利要求13所述装置,其特征在于,当所述第六优先级索引寄存器中的头索引值表示为空时,所述装置还包括: 第六任务描述符结构体链表获取模块,用于根据所述第六优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第六任务描述符结构体链表; 所述第六进程移除模块具体用于将所述第六进程从所述第六任务描述符结构体链表中移除。
【文档编号】G06F9/48GK104239134SQ201310248251
【公开日】2014年12月24日 申请日期:2013年6月21日 优先权日:2013年6月21日
【发明者】张轮凯, 范东睿, 张 浩, 叶笑春 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1