[发明专利]一种多核CPU访问资源时自旋锁的实现方法有效
申请号: | 201710376711.2 | 申请日: | 2017-05-25 |
公开(公告)号: | CN107357648B | 公开(公告)日: | 2020-05-15 |
发明(设计)人: | 吕锦柏;崔萍 | 申请(专利权)人: | 吕锦柏 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/52 |
代理公司: | 北京正理专利代理有限公司 11257 | 代理人: | 付生辉 |
地址: | 100043*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 多核 cpu 访问 资源 自旋 实现 方法 | ||
1.一种多核CPU访问资源时自旋锁的实现方法,其特征在于,包括:
待访问的资源具有资源锁,任一CPU在访问资源时,生成供自身使用的自旋锁,资源锁和自旋锁的内存结构均包括用于标识锁定标记的第一内存单元以及用于保存下一个锁地址的第二内存单元;
在该任一CPU访问资源之前,将资源锁的第一内存单元设置为空,第二内存单元设置为资源锁自身,使资源锁自身构成一个自循环链表;
该任一CPU在访问资源时进行加锁和解锁;
其中,所述加锁包括:
S101将该任一CPU的自旋锁的第一单元设为非空,将第二单元设为空;
S103将该任一CPU的自旋锁置于获取资源的当前队列最后,同时获取该自旋锁的前一个锁的标识;
S105判断获取前一个锁的标识是否为资源锁,如果是,转到S107,如果否,转到S112;
S107判断该资源锁的第一内存单元是否已被标记,如果已标记,则轮询等待,直至该资源锁的锁定标记被清除,并转到S109;
S109标记资源锁的第一内存单元,并将资源锁置于队列最后,同时获得资源锁置于队列之后之前队列最后一个锁的标识;
S111将获取的锁标识的第二内存单元设置为资源锁的地址,并转到S113;
S112将获取锁标识的第二内存单元设置为该CPU自旋锁,转到S113;
S113判断该任一CPU的自旋锁的第二内存单元是否已被设置为非空,若否,则继续等待,直到判断为非空,转到S115;
S115返回该任一CPU的自旋锁的第二内存单元内容,其存储队列中下一个锁的标识;
并且该解锁包括:
将S115中加锁过程返回的锁的标识的第一内存单元置空。
2.根据权利要求1所述的实现方法,其特征在于,进一步包括尝试加锁的过程,包括:
S201在该任一CPU获取访问资源前,锁定CPU的资源访问队列,未在队列中的CPU只有在解除队列锁定时才能访问资源;
S203判断该队列中除该任一CPU之外是否只有资源锁并且判定资源锁的第一内存单元是否未被标记,如果是,转到S205,如果否,则解除对队列的锁定,并返回尝试加锁失败;
S205标记资源锁的第一内存单元,并解除对队列的锁定,返回资源锁标识,成功锁定资源,获取资源访问权限。
3.根据权利要求1所述的实现方法,其特征在于,所述实现方法还包括:
该任一CPU访问资源时,其自身的自旋锁在解锁前不被销毁,
其中加锁包括:
S301将该任一CPU的自旋锁的第一内存单元设为非空并将第二内存单元设为空;
S303将该任一CPU的自旋锁置于队列最后,同时获得之前队列中最后一个锁的标识;
S305判断所述之前队列中最后一个锁的标识是否为资源锁,若是,转到S307,若否,转到S312;
S307设置该任一CPU的自旋锁的第一内存单元为资源锁;
S309判断资源锁的第一内存单元是否为空,若是,转到S311,若否,转到S312;
S311返回获取权限成功;
S312返回获取权限失败,
并且解锁包括
S313读出该任一CPU的自旋锁的第一内存单元的锁标识;
S315判断该锁标识是否为空,若否,转到S317,若是,转到S325;
S317判断该锁标识的第一内存单元是否为空,若否,轮询直到为是,若是,转到S319;
S319判断该锁标识是否为该任一CPU的自旋锁自身,若否,转到S321,若是,转到S325;
S321该任一CPU将资源锁的占用标记设为非空;
S323将资源锁置于队列最后,同时取得之前队列最后一个锁的占用标识;
S325判断该之前队列最后一个锁的占用标识是否为空,若是,则轮询直到为否,若否,则转到S327;
S327将该任一CPU的下一个锁的第一内存单元设为空,使得下一个锁的占用标记被清除。
4.如权利要求3所述的实现方法,在S311或S312之后,该实现方法进一步包括确认CPU是否已获得资源访问权限的方法过程:
S401读出该任一CPU的自旋锁的第一内存单元的锁标识;
S403判断该锁标识是否为空,若是,返回获取权限成功;若否,转到S405;
S405判断该锁标识的第一内存单元是否为空,若是,返回获取权限成功;若否,转到S407;
S407返回获取权限失败。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于吕锦柏,未经吕锦柏许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710376711.2/1.html,转载请声明来源钻瓜专利网。