CN104239134B - 一种众核***的任务管理方法和装置 - Google Patents
一种众核***的任务管理方法和装置 Download PDFInfo
- Publication number
- CN104239134B CN104239134B CN201310248251.7A CN201310248251A CN104239134B CN 104239134 B CN104239134 B CN 104239134B CN 201310248251 A CN201310248251 A CN 201310248251A CN 104239134 B CN104239134 B CN 104239134B
- Authority
- CN
- China
- Prior art keywords
- task
- value
- priority
- index
- descriptor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/486—Scheduler internals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种众核***的任务管理方法和装置,涉及计算机领域,能够在众核***中通过任务管理装置进行***任务的调度管理,提高了众核***进程管理效率。其方法为:当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除。本发明的实施例用于通过任务管理装置进行***任务的调度管理。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种众核***的任务管理方法和装置。
背景技术
在未来的处理器制造工艺中,集成在单芯片上的处理器核数会越来越多,这种集成很多个处理器核的处理器一般被称为众核处理器(Many Core),若在众核处理器环境下的操作***的任务调度仍采用单纯的操作***软件任务调度方法,则任务调度本身的效率瓶颈会成为整个***的瓶颈;如果完全采用硬件调度方法,则会带来很大的硬件***复杂度,进而增加了硬件设计和验证的难度,并且可能导致该***同现有的***完全不兼容的问题。
在现有技术中,以Linux***为例,在单核的处理器环境下,***任务是由runqueue(运行队列)结构进行管理的,每个CPU含有两个runqueue结构,即activerunqueue(活动运行队列)和expired runqueue(过期运行队列),每个runqueue结构中含有一个140项优先级的就绪任务队列,处于就绪状态的任务将被***到active runqueue对应的优先级的队列中,每个任务有一个时间片来决定其可以执行的时间长短。当一个任务的执行时间超过时间片长度,这个任务就会被挂起并移动到expired runqueue里对应的优先级队列中,在移动的过程中其时间片长度以及优先级会被重新计算。如果目前activerunqueue中的某个优先级队列为空,则将active runqueue和expired runqueue中对应的优先级队列调换位置,即expired runqueue中对应的优先级队列中的任务就被移动到active runqueue中。每当需要任务调度时,Linux***就会调用scheduler()函数遍历对应cpu的active runqueue,并获取其处于最高优先级的就绪任务进行运行。
在众核处理器中,各个处理器都拥有自己的runqueue。当一个任务被创建的时候,它就会被***在某一个处理器的runqueue上。这样会造成各个处理器之间的任务不平衡,因此有必要每隔一段时间就对所有处理器进行一次负载均衡(load balance),以使得各个处理器之间的任务负载保持平衡。
因此,发明人发现在现有技术中,众核处理器在实现上述的任务调度过程中,至少存在如下问题:
负载均衡的算法很复杂,并且其执行时间会随着处理器数量的增加而增加,在未来的众核处理器中,runqueue进行负载均衡所需要的时间会降低***的运行效率,并且每当有cpu调用scheduler()函数的时候,***就会给runqueue加锁,从而使得各处理器需要等待runqueue资源。因此,***对runqueue资源的频繁等待同样会降低***进程管理效率。
发明内容
本发明的实施例提供一种众核***的任务管理方法和装置,提高了众核***中的进程管理效率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种众核***的任务管理方法,所述方法包括:
根据第一任务队列索引寄存器中头索引的值获取对应的第一任务描述符项,所述第一任务描述符项对应第一索引号,所述第一索引号与所述头索引的值相对应,所述头索引表示所述第一任务队列起始的第一进程的所述第一任务描述符项对应的所述第一索引号;
根据所述第一任务描述符项中的第一进程描述符指针获取所述第一进程对应的第一进程描述符,所述第一进程描述符指针指向所述第一进程描述符所在的内存地址;
根据所述第一任务描述符项中的下一个任务索引的值获取对应的第二任务描述符项,根据所述第二任务描述符项中的第二进程描述符指针获取所述第二进程对应的第二进程描述符,直到获取所述第一任务队列索引寄存器中尾索引的值对应的第三进程描述符为止,所述第二任务描述符项对应第二索引号,所述第二索引号与所述第一任务描述符项中的下一个任务索引的值相对应,所述尾索引表示所述第一任务队列末尾的所述第三进程的第三任务描述符项对应的第三索引号。
在第一种可能的实现方式中,结合第一方面,若需要将第四进程***到所述第四进程对应的任务队列中,所述方法还包括:
获取所述第四进程的第四进程描述符指针和第四进程优先级;
获取空队列索引寄存器中的头索引值对应的第四任务描述符项,将所述第四任务描述符项中的进程描述符指针的值修改为所述第四进程描述符指针的值,所述空队列索引寄存器用以记录处于空闲状态的任务队列;
将所述空队列索引寄存器的头索引值改为所述第四任务描述符项中的下一个任务索引的值;
将所述第四任务描述符项中的下一个任务索引的值改为与第四进程优先级对应的第四优先级队列索引寄存器中的头索引的值;
将所述第四优先级队列索引寄存器中的头索引的值改为所述第四任务描述符项对应的索引号。
在第二种可能的实现方式中,结合第一方面,若需要将第五进程从所述第五进程对应的任务队列中删除,所述方法还包括:
获取所述第五进程的第五进程描述符指针和第五进程优先级;
从与第五进程优先级对应的第五优先级队列索引寄存器中的头索引的值对应的任务描述符项遍历整个所述第五优先级队列,获取与所述第五进程对应的第五任务描述符项;
将所述第五进程从所述第五优先级队列索引寄存器中移除。
在第三种可能的实现方式中,结合第一方面的第二种可能的实现方式,所述将所述第五进程从所述第五优先级队列索引寄存器中移除包括:
若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号相对应,则将所述第五优先级队列索引寄存器中的头索引值或尾索引值修改为与所述第五进程对应的所述第五任务描述符项中的下一个任务索引的值;
若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号不对应,则将所述第五任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值,并将所述空队列索引寄存器中的头索引的值改为所述第五任务描述符项对应的索引号,其中,若所述空队列索引寄存器的尾索引的值表示为空时,则将所述空队列索引寄存器的尾索引的值改为所述第五任务描述符项对应的索引号。
在第四种可能的实现方式中,结合第一方面,当处理器需要运行第六进程时,所述方法还包括:
在所有优先级索引寄存器中获取优先级最高的第六优先级索引寄存器且所述第六优先级索引寄存器中的头索引值不表示为空;
获取所述第六优先级索引寄存器的头索引的值对应的第六任务描述符项;
将所述第六优先级索引寄存器的头索引值改为所述第六任务描述符项中的下一个任务索引的值;
将所述第六任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值;
将所述空队列索引寄存器中的头索引的值改为第六任务描述符项对应的索引号的值;
若所述空队列索引寄存器中尾索引的值表示为空,则将所述空队列索引集训期中的尾索引的值改为所述第六任务描述符项对应的索引号的值。
在第五种可能的实现方式中,结合第一方面的第一种可能的实现方式,当所述空队列索引寄存器中的头索引值表示为空时,所述方法还包括:
在外部存储器中新建第四任务描述符结构体;
将所述第四任务描述符结构体中的进程描述符指针的值修改为所述第四任务描述符指针的值;
将所述第四任务描述符结构体中的下一个任务指针的值修改为所述第四优先级索引寄存器中的外链表指针的值;
将所述第四优先级索引寄存器中的外链表指针的值修改为所述第四任务描述符结构体的地址。
在第六种可能的实现方式中,结合第一方面的第二种可能的实现方式,若未获取到所述第五任务描述符项,所述方法还包括:
根据第五优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第五优先级任务描述符结构体链表;
遍历整个所述第五优先级任务描述符结构体链表,找到与所述第五进程对应的第五任务描述符结构体;
将所述第五进程从所述第五优先级任务描述符结构体链表中移除。
在第八种可能的实现方式中,结合第一方面的第四种可能的实现方式,当所述第六优先级索引寄存器中的头索引值表示为空时,所述方法还包括:
根据所述第六优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第六任务描述符结构体链表;
将所述第六进程从所述第六任务描述符结构体链表中移除。
第二方面,提供一种任务管理装置,所述装置包括:
第一描述符项获取单元,用于根据第一任务队列索引寄存器中头索引的值获取对应的第一任务描述符项,所述第一任务描述符项对应第一索引号,所述第一索引号与所述头索引的值相对应,所述头索引表示所述第一任务队列起始的第一进程的所述第一任务描述符项对应的所述第一索引号;
第一进程描述符获取单元,用于根据所述第一任务描述符项中的第一进程描述符指针获取所述第一进程对应的第一进程描述符,所述第一进程描述符指针指向所述第一进程描述符所在的内存地址;
第三进程描述符获取单元,用于根据所述第一任务描述符项中的下一个任务索引的值获取对应的第二任务描述符项,根据所述第二任务描述符项中的第二进程描述符指针获取所述第二进程对应的第二进程描述符,直到获取所述第一任务队列索引寄存器中尾索引的值对应的第三进程描述符为止,所述第二任务描述符项对应第二索引号,所述第二索引号与所述第一任务描述符项中的下一个任务索引的值相对应,所述尾索引表示所述第一任务队列末尾的所述第三进程的第三任务描述符项对应的第三索引号。
在第一种可能的实现方式中,结合第二方面,若需要将第四进程***到所述第四进程对应的任务队列中,所述装置还包括:
第四进程描述符指针和优先级获取模块,用于获取所述第四进程的第四进程描述符指针和第四进程优先级;
第四进程描述符指针***模块,用于获取空队列索引寄存器中的头索引值对应的第四任务描述符项,将所述第四任务描述符项中的进程描述符指针的值修改为所述第四进程描述符指针的值,所述空队列索引寄存器用以记录处于空闲状态的任务队列;
第一空队列修改模块,用于将所述空队列索引寄存器的头索引值改为所述第四任务描述符项中的下一个任务索引的值;
第四进程***模块,用于将所述第四任务描述符项中的下一个任务索引的值改为与第四进程优先级对应的第四优先级队列索引寄存器中的头索引的值;
将所述第四优先级队列索引寄存器中的头索引的值改为所述第四任务描述符项对应的索引号。
在第二种可能的实现方式中,结合第二方面,若需要将第五进程从所述第五进程对应的任务队列中删除,所述装置还包括:
第五进程描述符指针和优先级获取模块,用于获取所述第五进程的第五进程描述符指针和第五进程优先级;
第五任务描述符项获取模块,用于从与第五进程优先级对应的第五优先级队列索引寄存器中的头索引的值对应的任务描述符项遍历整个所述第五优先级队列,获取与所述第五进程对应的第五任务描述符项;
第五进程删除模块,用于将所述第五进程从所述第五优先级队列索引寄存器中移除。
在第三种可能的实现方式中结合第二方面的第二种实现方式,所述第五进程删除模块具体用于:
若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号相对应,则将所述第五优先级队列索引寄存器中的头索引值或尾索引值修改为与所述第五进程对应的所述第五任务描述符项中的下一个任务索引的值;
若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号不对应,则将所述第五任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值,并将所述空队列索引寄存器中的头索引的值改为所述第五任务描述符项对应的索引号,其中,若所述空队列索引寄存器的尾索引的值表示为空时,则将所述空队列索引寄存器的尾索引的值改为所述第五任务描述符项对应的索引号。
在第四种可能的实现方式中,结合第二方面,当处理器需要运行第六进程时,所述装置还包括:
最高优先级寄存器获取模块,用于在所有优先级索引寄存器中获取优先级最高的第六优先级索引寄存器且所述第六优先级索引寄存器中的头索引值不表示为空;
第六任务描述符项获取模块,用于获取所述第六优先级索引寄存器的头索引的值对应的第六任务描述符项;
第六进程移除模块,用于将所述第六优先级索引寄存器的头索引值改为所述第六任务描述符项中的下一个任务索引的值;
将所述第六任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值;
将所述空队列索引寄存器中的头索引的值改为第六任务描述符项对应的索引号的值;
若所述空队列索引寄存器中尾索引的值表示为空,则将所述空队列索引集训期中的尾索引的值改为所述第六任务描述符项对应的索引号的值。
在第五种可能的实现方式中,结合第二方面的第一种可能的实现方式,当所述空队列索引寄存器中的头索引值表示为空时,所述装置还包括:
第四任务描述符结构体创建模块,用于在外部存储器中新建第四任务描述符结构体;
所述第四任务描述符指针***模块具体用于将所述第四任务描述符结构体中的进程描述符指针的值修改为所述第四任务描述符指针的值;
所述第四进程***模块具体用于:将所述第四任务描述符结构体中的下一个任务指针的值修改为所述第四优先级索引寄存器中的外链表指针的值;
将所述第四优先级索引寄存器中的外链表指针的值修改为所述第四任务描述符结构体的地址。
在第六种可能的实现方式中,结合第二方面的第二种可能的实现方式,若未获取到所述第五任务描述符项,所述装置还包括:
第五优先级任务描述符结构体获取模块,用于根据第五优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第五优先级任务描述符结构体链表;
遍历整个所述第五优先级任务描述符结构体链表,找到与所述第五进程对应的第五任务描述符结构体;
所述第五进程删除模块具体用于将所述第五进程从所述第五优先级任务描述符结构体链表中移除。
在第七种可能的实现方式中,结合第二方面的第四种可能的实现方式,当所述第六优先级索引寄存器中的头索引值表示为空时,所述装置还包括:
第六任务描述符结构体链表获取模块,用于根据所述第六优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第六任务描述符结构体链表;
所述第六进程移除模块具体用于将所述第六进程从所述第六任务描述符结构体链表中移除。
本发明的实施例提供一种众核***的任务管理方法和装置,在众核***中通过任务管理装置来进行***任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核***中通过任务管理装置进行***任务的调度管理,提高了众核***中的进程管理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种众核***的任务管理方法流程示意图一;
图2为本发明实施例提供的一种众核***的任务管理方法流程示意图二;
图3为本发明实施例提供的一种任务管理装置结构示意图一;
图4为本发明实施例提供的一种任务管理装置结构示意图二
图5为本发明实施例提供的一种众核***的任务管理方法流程示意图三;
图6为本发明实施例提供的一种任务管理装置结构示意图三;
图7为本发明实施例提供的一种任务管理装置结构示意图四;
图8为本发明实施例提供的一种众核***的任务管理方法流程示意图四;
图9为本发明实施例提供的一种任务管理装置结构示意图五;
图10为本发明实施例提供的一种任务管理装置结构示意图六;
图11为本发明实施例提供的一种众核***的任务管理方法流程示意图五;
图12为本发明实施例提供的一种任务管理装置结构示意图七;
图13为本发明实施例提供的一种任务管理装置结构示意图八;
图14为本发明实施例提供的一种众核***的任务管理方法流程示意图六;
图15为本发明实施例提供的一种任务管理装置结构示意图九;
图16为本发明实施例提供的一种任务管理装置结构示意图十;
图17为本发明实施例提供的一种众核***的任务管理方法流程示意图七;
图18为本发明实施例提供的一种任务管理装置结构示意图十一;
图19为本发明实施例提供的一种任务管理装置结构示意图十二;
图20为本发明实施例提供的一种任务管理装置结构示意图十三;
图21为本发明实施例提供的一种任务管理装置结构示意图十四;
图22为本发明实施例提供的一种任务管理装置结构示意图十五;
图23为本发明实施例提供的一种任务管理装置结构示意图十六;
图24为本发明实施例提供的一种任务管理装置结构示意图十七;
图25为本发明实施例提供的一种任务管理装置结构示意图十八;
图26为本发明实施例提供的一种任务管理装置结构示意图十九;
图27为本发明实施例提供的一种任务管理装置结构示意图二十;
图28为本发明实施例提供的一种任务管理装置结构示意图二十一
图29为本发明实施例提供的一种众核***的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的应用场景为一个众核***,该众核***中至少包括两个处理器核,本发明为了提高众核***中的进程管理效率,在该众核***中加入了专门的硬件,即任务管理装置,该任务管理装置通过片上网络与该众核***中的各个处理器核相连接,下面对本发明是示例提供的方法进行说明。
本发明实施例提供一种众核***的任务管理方法,如图1所示,在将进程对应的任务描述符项***任务链表时,该包括:
101、根据第一任务队列索引寄存器中头索引的值获取对应的第一任务描述符项,所述第一任务描述符项对应第一索引号,所述第一索引号与所述头索引的值相对应,所述头索引表示所述第一任务队列起始的第一进程的所述第一任务描述符项对应的所述第一索引号。
102、根据所述第一任务描述符项中的第一进程描述符指针获取所述第一进程对应的第一进程描述符,所述第一进程描述符指针指向所述第一进程描述符所在的内存地址。
103、根据所述第一任务描述符项中的下一个任务索引的值获取对应的第二任务描述符项,根据所述第二任务描述符项中的第二进程描述符指针获取所述第二进程对应的第二进程描述符,直到获取所述第一任务队列索引寄存器中尾索引的值对应的第三进程描述符为止,所述第二任务描述符项对应第二索引号,所述第二索引号与所述第一任务描述符项中的下一个任务索引的值相对应,所述尾索引表示所述第一任务队列末尾的所述第三进程的第三任务描述符项对应的第三索引号。
本发明的实施例提供一种众核***的任务管理方法,在众核***中通过任务管理装置来进行***任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核***中通过任务管理装置进行***任务的调度管理,提高了众核***中的进程管理效率。
为了使本领域技术人员能够更清楚地理解本发明实施例提供的技术方案,下面通过具体的实施例,对本发明实施例提供另一种众核***的任务管理方法进行详细说明,当需要将第一进程加入到任务队列中时,如图2所示,方法包括:
201、任务管理装置接收处理器核发送的第一进程描述符指针和第一进程优先级。
具体的,可以通过以下方式实现:
当操作***需要创建第一进程、确定第一进程已经处于就绪状态或者正在运行的第一进程的时间片所规定的时间已到时,操作***就会返回对应第一进程的进程描述符指针以及对应第一进程的进程优先级给当前处理器核;
该处理器核将收到的对应第一进程的进程描述符指针以及对应第一进程的进程优先级发送给任务管理装置。
示例性的,假设需要创建第一进程,第一进程的进程描述符指针为第一指针,且第一进程的优先级为0,则操作***将第一指针以及优先级0返回给当前的处理器核,当前的处理器核将第一指针以及优先级0发送给任务管理装置。
202、任务管理装置根据第一进程描述符指针的值和第一进程优先级,将第一进程对应的任务描述符项***到任务链表中。
具体的,可以包括以下步骤:
任务管理装置首先取得空队列索引寄存器的头索引值对应的任务描述符项,并将空队列索引寄存器的头索引值对应的任务描述符项中的进程描述符指针的值修改为任务管理装置收到的第一进程描述符指针的值,然后将空队列索引寄存器对应的头索引值修改为空队列索引寄存器的头索引值对应的任务描述符项中的下一个任务索引值;
再将空队列索引寄存器的头索引值对应的任务描述符项中的下一个任务索引值修改为任务管理装置收到的优先级对应的优先级寄存器中的头索引值,最后将任务管理装置收到的优先级对应的优先级寄存器中的头索引值修改为空队列索引寄存器的头索引值对应的任务描述符项对应的索引号的值。
示例性的,如图3所示,当任务管理装置接收到第一指针和优先级0后,由于此时空队列索引寄存器中的头索引值为6,则将索引号为6的进程描述符项中的进程描述符指针的值修改为第一指针的值,并将空队列索引寄存器的头索引值6修改为7,即修改为索引号为6的任务描述符项中的下一个任务索引值7;
将索引号为6的任务描述符项中的下一个任务索引值7修改为0,即修改为优先级0队列索引寄存器中的头索引值0,而后将优先级0队列索引寄存器中的头索引值0修改为6,即修改为初始时空队列索引寄存器中头索引值对应的任务描述符项的索引号6,修改后如图4所示。
由于当有任务都在任务管理装置中对应一个进程描述符项时,任务管理装置需要较大的开销,因此,优选的,可以加入专门的片外存储器,将少量任务描述符项存储在任务管理装置中,将大部分任务描述符项存储在片外存储器中,其中当任务描述符项存储在片外存储器中,将任务描述符项称为任务描述符结构体,在这种情况下,在步骤202之前,如图5所示,还可以包括:
203、任务管理装置首先判断任务管理装置中是否存在空闲的任务描述符项。
204、若存在空闲的任务描述符项,则执行202。
205、若不存在空闲的任务描述符项,则任务管理装置根据第一进程描述符指针的值和第一进程优先级,将第一进程对应的任务描述符项***到外链表中。
具体的,可以包括以下步骤:
任务管理装置在片外存储器中新建任务描述符结构体,并将新建任务描述符结构体中的进程描述符指针的值改为第一进程描述符指针的值,并将新建任务描述符结构体中的下一个任务指针的值改为对应的优先级索引寄存器中的外链表指针的值,再将对应的优先级索引寄存器中的外链表指针的值改为新建任务描述符结构体的地址。
其中,外链表为在任务管理装置之外的片外存储器中的任务链表。
示例性的,如图6所示,当需要创建第一进程时,空队列索引寄存器的头索引值为-1,即表示任务管理装置中是不存在空闲的任务描述符项,此时,任务管理装置在片外存储器中创建一个任务描述符结构体1,将任务描述符结构体1中的任务描述符指针设置为第一指针,将任务描述符结构体1中的下一个任务指针改为p0,即改为优先级0寄存器中的外链表指针的值p0,最后将优先级0寄存器中的外链表指针的值p0改为新建的任务描述符结构体的地址p4,修改完后如图7所示。
在另一种情况下,若操作***删除某一进程,假设为第二进程,则,如图8所示,该众核***的任务管理方法还包括:
801、在操作***删除第二进程后,任务管理装置接收处理器核发送的第二进程描述符指针和第二进程优先级。
具体的,可以通过以下方法实现:
当操作***删除第二进程后,则操作***就会返回对应第二进程的进程描述符指针以及对应第二进程的进程优先级给当前处理器,该处理器核将收到的对应第二进程的进程描述符指针以及对应第二进程的进程优先级发送给任务管理装置。
示例性的,假设操作***删除第二进程后,第二进程的进程描述符指针为第二指针,且第一进程的优先级为1,则操作***将第二指针以及优先级1返回给当前的处理器核,当前的处理器核将第二指针以及优先级1发送给任务管理装置。
802、任务管理装置根据第二进程描述符指针和第二进程优先级,在任务列表中查找待删除的任务描述符项。
具体的,可以通过以下方法实现:
任务管理装置访问第二进程的优先级对应的优先级索引寄存器,并根据第二进程的优先级对应的优先级索引寄存器的头索引值遍历对应的优先级任务队列,以便查找待删除的任务描述符项。
示例性的,如图9所示,若***在删除第二进程后,任务管理装置根据第二进程的优先级对应的优先级索引寄存器的头索引值遍历对应的优先级任务队列,即从索引号0开始查找,直到找到索引号为1的任务描述符项为第二进程对应的任务描述符项。
803、任务管理装置在查找到待删除的任务描述符项后,将待删除的任务描述符项从任务链表中删除。
具体的,可以包括以下步骤:
若第二进程的优先级对应的优先级索引寄存器的头索引值或者尾索引值指向待删除的任务描述符项,则任务管理装置将第二进程的优先级对应的优先级索引寄存器的头索引值或者尾索引值改为待删除的任务描述符项中的下一个任务索引值;
若其他任务描述符项中的下一个任务索引值指向待删除的任务描述符项,则任务管理装置将其他任务描述符项中的下一个任务索引值改为待删除的任务描述符项中的下一个任务索引值;
任务管理装置将待删除的任务描述符项中的下一个任务索引值改为空队列索引寄存器的头索引值,将空队列寄存器的头索引值改为待删除的任务描述符项对应的索引号,或者,将空队列寄存器的尾索引值改为待删除的任务描述符项对应的索引号。
示例性的,如图9所示,索引号为1的任务描述符项为第二进程对应的描述符项,并且在索引号为0的任务描述符项中的下一个任务描述符项为1,即指向了第二进程对应的索引号为1的任务描述符项,则需要将索引号为0的任务描述符项中的下一个任务索引值由1改为2,即改为第二进程对应的任务描述符项中的下一个任务索引值;
最后将索引号为1的任务描述符项中的下一个任务索引值2改为6,即改为空队列索引寄存器的头索引值6,将空队列寄存器的头索引6改为1,即改为第二进程对应的任务描述符项对应的索引号1,修改完后如图10所示。
优选的,当任务管理装置加入专门的片外存储器时,任务管理装置在任务链表中可能查找不到待删除的任务描述符项,此时任务管理装置就要在外链表中查找,此时,如图11所示上述方法还可以包括:
804、任务管理装置根据第二进程描述符指针和第二进程优先级,在外链表中查找待删除的任务描述符结构体。
具体的,可以通过以下方式实现:
任务管理装置根据第二进程的优先级对应的优先级索引寄存器中的外链表指针值访问片外存储器中对应优先级的任务描述结构体链表,查找待删除的任务描述符结构体。
805、任务管理装置在查找到待删除的任务描述符结构体后,将待删除的任务描述符结构体从外链表中删除。
示例性的,如图12所示,在索引号0到2中没有找到第二进程对应的任务描述符项,则根据优先级0寄存器中的外链表指针的值p0在片外存储器中查找第二进程对应的任务描述符结构体
假设在外部存储器中找到了第二进程对应的任务描述符结构体p5,则将p5从外部存储器中删除,删除后如图13所示。
在另一种情况下,若任务管理装置申请新任务,则如图14所示,该众核***的任务管理方法还包括:
1401、任务管理装置接收处理器核发送的新任务请求。
1402、任务管理装置将可用的优先级最高的优先级索引寄存器从任务链表中移除。
具体的,可以通过以下方式实现:
访问优先级最高并且优先级最高并且头索引值不为-1的优先级索引寄存器,并确定优先级索引寄存器对应的任务描述符项,将所述优先级索引寄存器的头索引值改为所述优先级索引寄存器对应的任务描述符项中的下一个任务索引值;
将优先级索引寄存器对应的任务描述符项的下一个任务索引值改为空队列索引寄存器的头索引值,并将空队列索引寄存器的头索引值改为优先级索引寄存器对应的任务描述符项对应的索引号,或者,将空队列索引寄存器的尾索引值改为优先级索引寄存器对应的任务描述符项对应的索引号。
示例性的,如图15所示,当处理器核需要一个新任务运行时,则任务管理装置在优先级寄存器中查找当前优先级最高并且其头索引值不为-1的优先级索引寄存器,优先级最高并且其头索引值不为-1的优先级索引寄存器为优先级2索引寄存器,优先级2索引寄存器指向的描述符项为索引号为4的任务描述符项,则此时将优先级2索引寄存器的头索引值4改为5,即改为索引号为4的任务描述符项中的下一个任务索引值;
而后将索引号为4的任务描述符项中的下一个任务索引值改为6,即改为空队列索引寄存器的头索引值6,最后将空队列寄存器的头索引值6改为4,即改为索引号为4的任务描述符项对应的索引号4,若空队列索引寄存器的尾索引值为-1,则需要将空队列索引寄存器的尾索引值改为4,这里空队列寄存器的尾索引值为N-1,因此不用修改空队列索引寄存器的尾索引值,修改后如图16所示。
优选的,当任务管理装置加入专门的片外存储器时,在步骤1402之前,如图17所示,还可以包括:
1403、任务管理装置判断最高优先级的寄存器是否可用,若最高优先级的寄存器可用,则执行1402,若最高优先级的寄存器不可用且最高优先级的寄存器中的外链表指针不为空,则执行1404。
1404、任务管理装置将新任务对应的任务描述符结构体从外链表中删除。
具体的,可以通过以下方式实现:
根据最高级的优先级索引寄存器中的外链表指针访问对应的优先级任务描述符结构体链表,查找到最高级的优先级索引寄存器中的外链表指针指示的任务描述符结构体,并将指示的任务描述符结构体从外链表中删除。
示例性的,如图18所示,优先级为2的优先级索引寄存器中的头索引值为-1且其外链表指针的值为p1,则根据外链表指针p1在外链表中找到对应的任务描述符结构体链表,并找到需要删除的任务描述符结构体p1,并将任务描述符结构体p1从任务描述符结构体链表中删除,删除后如图19所示。
本发明的实施例提供一种众核***的任务管理方法,在众核***中通过任务管理装置来进行***任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核***中通过任务管理装置进行***任务的调度管理,提高了众核***中的进程管理效率。
本发明实施例提供一种任务管理装置01,如图20所示,任务管理装置01包括:
第一描述符项获取单元011,用于根据第一任务队列索引寄存器中头索引的值获取对应的第一任务描述符项,所述第一任务描述符项对应第一索引号,所述第一索引号与所述头索引的值相对应,所述头索引表示所述第一任务队列起始的第一进程的所述第一任务描述符项对应的所述第一索引号;
第一进程描述符获取单元012,用于根据所述第一任务描述符项中的第一进程描述符指针获取所述第一进程对应的第一进程描述符,所述第一进程描述符指针指向所述第一进程描述符所在的内存地址;
第三进程描述符获取单元013,用于根据所述第一任务描述符项中的下一个任务索引的值获取对应的第二任务描述符项,根据所述第二任务描述符项中的第二进程描述符指针获取所述第二进程对应的第二进程描述符,直到获取所述第一任务队列索引寄存器中尾索引的值对应的第三进程描述符为止,所述第二任务描述符项对应第二索引号,所述第二索引号与所述第一任务描述符项中的下一个任务索引的值相对应,所述尾索引表示所述第一任务队列末尾的所述第三进程的第三任务描述符项对应的第三索引号。
进一步的,如图21所示,若需要将第四进程***到所述第四进程对应的任务队列中,所述装置01还包括:
第四进程描述符指针和优先级获取模块014,用于获取所述第四进程的第四进程描述符指针和第四进程优先级;
第四进程描述符指针***模块015,用于获取空队列索引寄存器中的头索引值对应的第四任务描述符项,将所述第四任务描述符项中的进程描述符指针的值修改为所述第四进程描述符指针的值,所述空队列索引寄存器用以记录处于空闲状态的任务队列;
第一空队列修改模块016,用于将所述空队列索引寄存器的头索引值改为所述第四任务描述符项中的下一个任务索引的值;
第四进程***模块017,用于将所述第四任务描述符项中的下一个任务索引的值改为与第四进程优先级对应的第四优先级队列索引寄存器中的头索引的值;
将所述第四优先级队列索引寄存器中的头索引的值改为所述第四任务描述符项对应的索引号。
再进一步的,如图22所示,若需要将第五进程从所述第五进程对应的任务队列中删除,所述装置01还包括:
第五进程描述符指针和优先级获取模块018,用于获取所述第五进程的第五进程描述符指针和第五进程优先级;
第五任务描述符项获取模块019,用于从与第五进程优先级对应的第五优先级队列索引寄存器中的头索引的值对应的任务描述符项遍历整个所述第五优先级队列,获取与所述第五进程对应的第五任务描述符项;
第五进程删除模块0110,用于将所述第五进程从所述第五优先级队列索引寄存器中移除。
再进一步的,第五进程删除模块0110具体用于:
若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号相对应,则将所述第五优先级队列索引寄存器中的头索引值或尾索引值修改为与所述第五进程对应的所述第五任务描述符项中的下一个任务索引的值;
若所述第五优先级队列索引寄存器中的头索引值或尾索引值与所述第五进程对应的所述第五任务描述符项的索引号不对应,则将所述第五任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值,并将所述空队列索引寄存器中的头索引的值改为所述第五任务描述符项对应的索引号,其中,若所述空队列索引寄存器的尾索引的值表示为空时,则将所述空队列索引寄存器的尾索引的值改为所述第五任务描述符项对应的索引号。
又进一步的,如图23所示,当处理器需要运行第六进程时,所述装置01还包括:
最高优先级寄存器获取模块0111,用于在所有优先级索引寄存器中获取优先级最高的第六优先级索引寄存器且所述第六优先级索引寄存器中的头索引值不表示为空;
第六任务描述符项获取模块0112,用于获取所述第六优先级索引寄存器的头索引的值对应的第六任务描述符项;
第六进程移除模块0113,用于将所述第六优先级索引寄存器的头索引值改为所述第六任务描述符项中的下一个任务索引的值;
将所述第六任务描述符项中的下一个任务索引的值改为所述空队列索引寄存器中的头索引的值;
将所述空队列索引寄存器中的头索引的值改为第六任务描述符项对应的索引号的值;
若所述空队列索引寄存器中尾索引的值表示为空,则将所述空队列索引集训期中的尾索引的值改为所述第六任务描述符项对应的索引号的值。
进一步的,如图24所示,当所述空队列索引寄存器中的头索引值表示为空时,所述装置01还包括:
第四任务描述符结构体创建模块0114,用于在外部存储器中新建第四任务描述符结构体;
所述第四任务描述符指针***模块015具体用于将所述第四任务描述符结构体中的进程描述符指针的值修改为所述第四任务描述符指针的值;
所述第四进程***模块017具体用于:将所述第四任务描述符结构体中的下一个任务指针的值修改为所述第四优先级索引寄存器中的外链表指针的值;
将所述第四优先级索引寄存器中的外链表指针的值修改为所述第四任务描述符结构体的地址。
再进一步的,如图25所示,若未获取到所述第五任务描述符项,所述装置01还包括:
第五优先级任务描述符结构体获取模块0115,用于根据第五优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第五优先级任务描述符结构体链表;
遍历整个所述第五优先级任务描述符结构体链表,找到与所述第五进程对应的第五任务描述符结构体;
所述第五进程删除模块0116具体用于将所述第五进程从所述第五优先级任务描述符结构体链表中移除。
再进一步的,如图26所示,当所述第六优先级索引寄存器中的头索引值表示为空时,所述装置01还包括:
第六任务描述符结构体链表获取模块0117,用于根据所述第六优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第六任务描述符结构体链表;
所述第六进程移除模块具体用于将所述第六进程从所述第六任务描述符结构体链表中移除。
本发明的实施例提供一种众核***的任务管理装置,在众核***中通过任务管理装置来进行***任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核***中通过任务管理装置进行***任务的调度管理,提高了众核***中的进程管理效率。
本发明实施例提供一种任务管理装置02,如图27所示,任务管理装置02包括:
空队列索引寄存器021、至少两个优先级索引寄存器022以及任务描述符缓存块023;
其中,空队列索引寄存器021、至少两个优先级索引寄存器022包括头索引和尾索引;任务描述符缓存块023包括至少两个任务描述项0231,任务描述符项包括进程描述符指针02311和下一个任务索引02312。
进一步的,如图28所示,任务管理装置02还包括片外存储器024;片外存储器024中包括至少两个任务描述结构体0241,任务描述结构体包括进程描述符指针02411和下一个任务索引02412。
再进一步的,片外存储器024为独立的存储设备,或为操作***在内存中划出的一块独立存储区域。
本发明的实施例提供一种众核***的任务管理装置,在众核***中通过任务管理装置来进行***任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核***中通过任务管理装置进行***任务的调度管理,提高了众核***中的进程管理效率。
本发明实施例提供一种众核***03,如图29所示,众核***03包括:
如本发明实施例的任务管理装置01,或如本发明实施例的任务管理装置02;
片上网络031和至少两个处理器核032,任务管理装置01或02通过片上网络031与至少两个处理器核032连接。
本发明的实施例提供一种众核***,在众核***中通过任务管理装置来进行***任务的调度管理,当需要将进程加入到任务链表中,则将该进程的进程描述符指针添加到该进程对应的任务描述符项中,并将该任务描述符项添加到任务链表中;若需要删除进程,则查找到该进程对应的任务描述符项并将该任务描述符项从任务链表中移除;当处理器核需要新任务运行时,则将可用的优先级最高的优先级索引寄存器从该优先级索引寄存器队列中移除;能够在众核***中通过任务管理装置进行***任务的调度管理,提高了众核***中的进程管理效率。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法,装置可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (16)
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所述装置,其特征在于,当所述第六优先级索引寄存器中的头索引值表示为空时,所述装置还包括:
第六任务描述符结构体链表获取模块,用于根据所述第六优先级索引寄存器中的外链表指针的值获取与该外链表指针的值对应的第六任务描述符结构体链表;
所述第六进程移除模块具体用于将所述第六进程从所述第六任务描述符结构体链表中移除。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310248251.7A CN104239134B (zh) | 2013-06-21 | 2013-06-21 | 一种众核***的任务管理方法和装置 |
PCT/CN2014/080275 WO2014202009A1 (zh) | 2013-06-21 | 2014-06-19 | 一种众核***的任务管理方法和装置 |
US14/976,029 US10002023B2 (en) | 2013-06-21 | 2015-12-21 | Method and apparatus for managing one or more tasks of a many-core system using one or more task descriptor entries |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310248251.7A CN104239134B (zh) | 2013-06-21 | 2013-06-21 | 一种众核***的任务管理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104239134A CN104239134A (zh) | 2014-12-24 |
CN104239134B true CN104239134B (zh) | 2018-03-09 |
Family
ID=52103967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310248251.7A Active CN104239134B (zh) | 2013-06-21 | 2013-06-21 | 一种众核***的任务管理方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10002023B2 (zh) |
CN (1) | CN104239134B (zh) |
WO (1) | WO2014202009A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106301466B (zh) * | 2015-05-25 | 2019-05-31 | 深圳市中兴微电子技术有限公司 | 一种多径解调方法和装置 |
KR102464678B1 (ko) * | 2016-03-18 | 2022-11-11 | 한국전자통신연구원 | 매니코어 시스템에서 쓰레드를 스케줄링 하는 방법 및 그 장치 |
US10552205B2 (en) * | 2016-04-02 | 2020-02-04 | Intel Corporation | Work conserving, load balancing, and scheduling |
US10776156B2 (en) * | 2016-09-30 | 2020-09-15 | Intel Corporation | Thread priority mechanism |
CN109067563B (zh) * | 2018-06-28 | 2021-06-18 | 瑞芯微电子股份有限公司 | 一种以太网参数自适应调节方法和*** |
US11360809B2 (en) * | 2018-06-29 | 2022-06-14 | Intel Corporation | Multithreaded processor core with hardware-assisted task scheduling |
CN113268725A (zh) * | 2020-02-14 | 2021-08-17 | 斑马智行网络(香港)有限公司 | 适用于arm平台的内核保护方法、访问方法及装置 |
CN117616279A (zh) | 2021-05-11 | 2024-02-27 | 詹森生物科技公司 | 最小化与嵌合抗原受体(car)t细胞疗法相关的神经毒性的方法 |
CN117806789A (zh) * | 2023-11-01 | 2024-04-02 | 宁德时代(上海)智能科技有限公司 | 多核操作***的任务处理方法、装置及计算设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09269903A (ja) * | 1996-04-02 | 1997-10-14 | Hitachi Ltd | プロセス管理方式 |
CN101346692B (zh) * | 2005-12-29 | 2011-05-04 | 英特尔公司 | 多处理器***中的高性能队列实现 |
US7533237B1 (en) * | 2006-05-11 | 2009-05-12 | Nvidia Corporation | Off-chip memory allocation for a unified shader |
US8542693B2 (en) * | 2007-08-01 | 2013-09-24 | Texas Instruments Incorporated | Managing free packet descriptors in packet-based communications |
CN101387952B (zh) * | 2008-09-24 | 2011-12-21 | 上海大学 | 单芯片多处理器任务调度管理方法 |
CN101504617B (zh) * | 2009-03-23 | 2011-05-11 | 华为技术有限公司 | 一种基于处理器共享内存的数据发送方法及装置 |
CN101673223B (zh) * | 2009-10-22 | 2012-03-21 | 同济大学 | 基于片上多处理器的线程调度实现方法 |
CN101916209B (zh) * | 2010-08-06 | 2012-11-21 | 华东交通大学 | 一种多核处理器集群任务资源分配方法 |
CN102043668B (zh) * | 2010-12-10 | 2013-05-22 | 成电汽车电子产业园(昆山)有限公司 | 一种嵌入式实时操作***中任务多次激活的方法 |
CN102541653B (zh) * | 2010-12-24 | 2013-12-25 | 新奥特(北京)视频技术有限公司 | 一种多任务线程池调度方法和*** |
US20130074088A1 (en) * | 2011-09-19 | 2013-03-21 | Timothy John Purcell | Scheduling and management of compute tasks with different execution priority levels |
CN102331923B (zh) * | 2011-10-13 | 2015-04-22 | 西安电子科技大学 | 一种基于多核多线程处理器的功能宏流水线实现方法 |
-
2013
- 2013-06-21 CN CN201310248251.7A patent/CN104239134B/zh active Active
-
2014
- 2014-06-19 WO PCT/CN2014/080275 patent/WO2014202009A1/zh active Application Filing
-
2015
- 2015-12-21 US US14/976,029 patent/US10002023B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10002023B2 (en) | 2018-06-19 |
US20160103709A1 (en) | 2016-04-14 |
WO2014202009A1 (zh) | 2014-12-24 |
CN104239134A (zh) | 2014-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104239134B (zh) | 一种众核***的任务管理方法和装置 | |
EP3667496B1 (en) | Distributed computing system, data transmission method and device in distributed computing system | |
US7779016B2 (en) | Parallel execution of operations for a partitioned binary radix tree on a parallel computer | |
JP4612710B2 (ja) | トランザクション並行制御方法、データベース管理システム、およびプログラム | |
US8938474B2 (en) | Securing application information in system-wide search engines | |
US20110265098A1 (en) | Message Passing with Queues and Channels | |
CN104102549B (zh) | 一种实现多线程互斥操作的方法、装置和芯片 | |
US7756852B2 (en) | Concurrent execution of groups of database statements | |
US9378246B2 (en) | Systems and methods of accessing distributed data | |
CN107077390A (zh) | 一种任务处理方法以及网卡 | |
EP3470992B1 (en) | Efficient storage and utilization of a hierarchical data set | |
US11429629B1 (en) | Data driven indexing in a spreadsheet based data store | |
US20150127785A1 (en) | Gateway service manager for business object applications | |
US11188594B2 (en) | Wildcard searches using numeric string hash | |
US11514236B1 (en) | Indexing in a spreadsheet based data store using hybrid datatypes | |
CN109992526A (zh) | 一种读写管理方法以及相关装置 | |
CN111858612B (zh) | 基于图数据库的数据加速访问方法、装置及存储介质 | |
JP2013534347A (ja) | 高性能コンピューティングアプリケーションの実行のためのシステムおよび方法 | |
CN102708195B (zh) | 一种表单数据共享方法及装置 | |
CN110413724A (zh) | 一种数据检索方法和装置 | |
CN109753533A (zh) | 一种多源关系型数据库客户端开发方法及装置 | |
CN115617859A (zh) | 基于知识图谱集群的数据查询方法和装置 | |
CN101710341A (zh) | 一种透明、通用的文件缓存*** | |
US7120776B2 (en) | Method and apparatus for efficient runtime memory access in a database | |
CN110688209B (zh) | 一种基于二叉树的大窗口访存流量调度缓冲结构及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |