[发明专利]一种众核系统的任务管理方法和装置有效
申请号: | 201310248251.7 | 申请日: | 2013-06-21 |
公开(公告)号: | CN104239134B | 公开(公告)日: | 2018-03-09 |
发明(设计)人: | 张轮凯;范东睿;张浩;叶笑春 | 申请(专利权)人: | 华为技术有限公司;中国科学院计算技术研究所 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 北京中博世达专利商标代理有限公司11274 | 代理人: | 申健 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 系统 任务 管理 方法 装置 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种众核系统的任务管理方法和装置。
背景技术
在未来的处理器制造工艺中,集成在单芯片上的处理器核数会越来越多,这种集成很多个处理器核的处理器一般被称为众核处理器(Many Core),若在众核处理器环境下的操作系统的任务调度仍采用单纯的操作系统软件任务调度方法,则任务调度本身的效率瓶颈会成为整个系统的瓶颈;如果完全采用硬件调度方法,则会带来很大的硬件系统复杂度,进而增加了硬件设计和验证的难度,并且可能导致该系统同现有的系统完全不兼容的问题。
在现有技术中,以Linux系统为例,在单核的处理器环境下,系统任务是由runqueue(运行队列)结构进行管理的,每个CPU含有两个runqueue结构,即active runqueue(活动运行队列)和expired runqueue(过期运行队列),每个runqueue结构中含有一个140项优先级的就绪任务队列,处于就绪状态的任务将被插入到active runqueue对应的优先级的队列中,每个任务有一个时间片来决定其可以执行的时间长短。当一个任务的执行时间超过时间片长度,这个任务就会被挂起并移动到expired runqueue里对应的优先级队列中,在移动的过程中其时间片长度以及优先级会被重新计算。如果目前active runqueue中的某个优先级队列为空,则将active runqueue和expired runqueue中对应的优先级队列调换位置,即expired runqueue中对应的优先级队列中的任务就被移动到active runqueue中。每当需要任务调度时,Linux系统就会调用scheduler()函数遍历对应cpu的active runqueue,并获取其处于最高优先级的就绪任务进行运行。
在众核处理器中,各个处理器都拥有自己的runqueue。当一个任务被创建的时候,它就会被插入在某一个处理器的runqueue上。这样会造成各个处理器之间的任务不平衡,因此有必要每隔一段时间就对所有处理器进行一次负载均衡(load balance),以使得各个处理器之间的任务负载保持平衡。
因此,发明人发现在现有技术中,众核处理器在实现上述的任务调度过程中,至少存在如下问题:
负载均衡的算法很复杂,并且其执行时间会随着处理器数量的增加而增加,在未来的众核处理器中,runqueue进行负载均衡所需要的时间会降低系统的运行效率,并且每当有cpu调用scheduler()函数的时候,系统就会给runqueue加锁,从而使得各处理器需要等待runqueue资源。因此,系统对runqueue资源的频繁等待同样会降低系统进程管理效率。
发明内容
本发明的实施例提供一种众核系统的任务管理方法和装置,提高了众核系统中的进程管理效率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种众核系统的任务管理方法,所述方法包括:
根据第一任务队列索引寄存器中头索引的值获取对应的第一任务描述符项,所述第一任务描述符项对应第一索引号,所述第一索引号与所述头索引的值相对应,所述头索引表示所述第一任务队列起始的第一进程的所述第一任务描述符项对应的所述第一索引号;
根据所述第一任务描述符项中的第一进程描述符指针获取所述第一进程对应的第一进程描述符,所述第一进程描述符指针指向所述第一进程描述符所在的内存地址;
根据所述第一任务描述符项中的下一个任务索引的值获取对应的第二任务描述符项,根据所述第二任务描述符项中的第二进程描述符指针获取所述第二进程对应的第二进程描述符,直到获取所述第一任务队列索引寄存器中尾索引的值对应的第三进程描述符为止,所述第二任务描述符项对应第二索引号,所述第二索引号与所述第一任务描述符项中的下一个任务索引的值相对应,所述尾索引表示所述第一任务队列末尾的所述第三进程的第三任务描述符项对应的第三索引号。
在第一种可能的实现方式中,结合第一方面,若需要将第四进程插入到所述第四进程对应的任务队列中,所述方法还包括:
获取所述第四进程的第四进程描述符指针和第四进程优先级;
获取空队列索引寄存器中的头索引值对应的第四任务描述符项,将所述第四任务描述符项中的进程描述符指针的值修改为所述第四进程描述符指针的值,所述空队列索引寄存器用以记录处于空闲状态的任务队列;
将所述空队列索引寄存器的头索引值改为所述第四任务描述符项中的下一个任务索引的值;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司;中国科学院计算技术研究所,未经华为技术有限公司;中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310248251.7/2.html,转载请声明来源钻瓜专利网。