[发明专利]一种基于任务窃取的并发队列访问控制系统有效
申请号: | 201410386814.3 | 申请日: | 2014-08-07 |
公开(公告)号: | CN104156260B | 公开(公告)日: | 2017-03-15 |
发明(设计)人: | 刘轶;刘驰;宋平 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 北京永创新实专利事务所11121 | 代理人: | 李有浩 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于任务窃取的并发队列访问控制方法及系统,基于任务窃取的并发队列访问控制系统由安全访问模块(1)、并发访问度监控模块(2)、任务调度模块(3)和预测模块(4)组成。本发明方法通过将双端队列的操作与访问控制分开,建立队列并发访问度的监控机制,在任务窃取的过程中,根据队列并发访问度来动态自适应选取队列进行操作,从而将双端队列的并发访问均匀的分担到每个双端队列上,并对每个双端队列的访问采用阻塞方式来保障对双端队列执行操作的线程安全。本发明方法支持不同的任务窃取策略,且对于运行在并行随机访问机上的使用任务窃取的应用,具有更高的吞吐率和加速效果。 | ||
搜索关键词: | 一种 基于 任务 窃取 并发 队列 访问 控制系统 | ||
【主权项】:
一种基于任务窃取的并发队列访问控制系统,在PRAM系统上运行基于任务窃取的并发队列访问控制系统,其特征在于:所述基于任务窃取的并发队列访问控制系统由安全访问模块(1)、并发访问度监控模块(2)、任务调度模块(3)和预测模块(4)组成;任务调度模块(3)首先从PRAM系统中获得所有双端队列DEQUE={deque1,deque2,…,dequei,…,dequen}、所有并发访问度S={s1,s2,…,si,…,sn}和所有线程THREAD={thread1,thread2,…,threadi,…,threadn};其中,deque1表示第一个双端队列,deque2表示第二个双端队列,dequei表示第i个双端队列,dequen表示最后一个双端队列,n表示双端队列的标识号;s1表示第一个双端队列deque1的并发访问度,s2表示第二个双端队列deque2的并发访问度,si表示第i个双端队列dequei的并发访问度,sn表示最后一个双端队列dequen的并发访问度,所述sn中包括有当前被阻塞的线程个数a和双端队列dequen中的任务个数b,则sn=(a,b);所述双端队列DEQUE={deque1,deque2,…,dequei,…,dequen}包括有本地双端队列和外部双端队列;然后:(A)由任务调度模块(3)从DEQUE={deque1,deque2,…,dequei,…,dequen}中选取除dequei以外的第一个待定‑双端队列deque1,并记录下该deque1的并发访问度s1;继而,并发访问度监控模块(2)从deque1提取出deque1对应的s1,由队列预测模块(4)依据并发访问度s1来预测第一个待定‑双端队列deque1是否存在访问密集,访问密集预测关系a表示当前被阻塞的线程个数,b表示双端队列dequen中的任务个数,若则第一个待定‑双端队列deque1被选取,成为第一个选定‑双端队列deque1,执行安全访问模块(1);若则放弃第一个待定‑双端队列deque1,执行(B);(B)由任务调度模块(3)从DEQUE={deque1,deque2,…,dequei,…,dequen}中选取除dequei以外的第二个待定‑双端队列deque2,并记录下该deque2的并发访问度s2;继而,并发访问度监控模块(2)从deque2提取出deque2对应的s2,由队列预测模块(4)依据并发访问度s2来预测第二个待定‑双端队列deque2是否存在访问密集,访问密集预测关系a表示当前被阻塞的线程个数,b表示双端队列dequen中的任务个数,若则第二个待定‑双端队列deque2被选取,成为第二个选定‑双端队列deque2,执行安全访问模块(1);若则放弃第二个待定‑双端队列deque2,执行(C);(C)由任务调度模块(3)从DEQUE={deque1,deque2,…,dequei,…,dequen}中选取除dequei以外的最后一个待定‑双端队列dequen,并记录下该dequen的并发访问度sn;继而,并发访问度监控模块(2)从dequen提取出dequen对应的sn,由队列预测模块(4)依据并发访问度sn来预测最后一个待定‑双端队列dequen是否存在访问密集,访问密集预测关系a表示当前被阻塞的线程个数,b表示双端队列dequen中的任务个数,若则最后一个待定‑双端队列dequen被选取,成为最后一个选定‑双端队列dequen,执行安全访问模块(1);若则放弃最后一个待定‑双端队列dequen;安全访问模块(1)判断第一个选定‑双端队列deque1是否被线程占用,若说明deque1被线程占用,则会等待,直到变化为时止;若说明deque1未被线程占用,则线程threadi获得访问权,对deque1执行获取任务操作;安全访问模块(1)判断第二个选定‑双端队列deque2是否被线程占用,若说明deque2被线程占用,则会等待,直到变化为时止;若说明deque2未被线程占用,则线程threadi获得访问权,对deque2执行获取任务操作;安全访问模块(1)判断最后一个选定‑双端队列dequen是否被线程占用,若说明dequen被线程占用,则会等待,直到变化为时止,线程threadi获得访问权;若说明dequen未被线程占用,则线程threadi获得访问权,对dequen执行获取任务操作;对于外部双端队列的任务窃取包括有下列步骤:步骤101:双端队列并发度的监控当本地线程threadi的双端队列dequei中,没有任何任务时,则由任务调度模块(3)选择任意一个待定‑双端队列dequen;然后由并发访问度监控模块(2)从所述待定‑双端队列dequen中提取出并发访问度sn=(a,b);随后执行步骤102;步骤102:预测能否高效获取对双端队列的访问预测模块(4)依据并发访问度sn来预测所述待定‑双端队列dequen是否存在访问密集,访问密集预测关系a表示当前被阻塞的线程个数,b表示双端队列dequen中的任务个数,若则所述待定‑双端队列dequen被选取,成为选定‑双端队列dequen,执行安全访问模块(1);若则放弃所述待定‑双端队列dequen;步骤103:获取队列的访问权当本地线程threadi需要对所述选定‑双端队列dequen进行获取任务操作时,需要获取dequen的访问权若说明dequen未被线程占用,则线程threadi获得访问权,执行步骤104;若说明dequen被线程占用,则会等待,直到变化为时止,线程threadi获得访问权,随后执行步骤104;步骤104:阻塞的访问队列在本地线程threadi获得访问权后,会标记所述选定‑双端队列dequen被线程threadi占用;直至threadi完成获取任务操作后,才会释放对选定‑双端队列dequen的占用标记;最后,安全访问模块(1)向PRAM系统发出选定‑双端队列dequen未被线程占用的信息;对于本地双端队列的任务窃取包括有下列步骤:步骤201:获取队列的访问权当本地线程threadi的双端队列dequei中存在任务时,判断dequei的访问权若说明dequei未被线程占用,则线程threadi获得访问权,执行步骤202;若说明dequei被线程占用,则会等待,直到变化为时止,线程threadi获得访问权,随后执行步骤202;步骤202:阻塞的访问队列在本地线程threadi获得访问权后,会标记dequei双端队列被线程threadi占用;直至threadi完成获取任务操作后,才会释放对dequei的占用标记;最后,安全访问模块(1)向PRAM系统发出dequei未被线程占用的信息。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410386814.3/,转载请声明来源钻瓜专利网。