CN117271148A - 硬件互斥锁共享方法、装置和计算机设备 - Google Patents
硬件互斥锁共享方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN117271148A CN117271148A CN202311551882.6A CN202311551882A CN117271148A CN 117271148 A CN117271148 A CN 117271148A CN 202311551882 A CN202311551882 A CN 202311551882A CN 117271148 A CN117271148 A CN 117271148A
- Authority
- CN
- China
- Prior art keywords
- hardware
- shared resource
- resource identifier
- lock
- mutex
- 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.)
- Granted
Links
- 230000007717 exclusion Effects 0.000 title claims abstract description 95
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000004590 computer program Methods 0.000 claims description 39
- 238000012795 verification Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及一种硬件互斥锁共享方法、装置和计算机设备。该方法包括:基于硬件互斥锁申请请求确定第一目标共享资源标识;检测是否存在未上锁的硬件互斥锁,当存在时,获取已上锁的硬件互斥锁对应的参考共享资源标识;将第一目标共享资源标识与参考共享资源标识进行匹配;当不存在与第一目标共享资源标识匹配的参考共享资源标识时,将未上锁的硬件互斥锁分配给硬件互斥锁的申请者,并设置分配的所述未上锁的硬件互斥锁的状态为已上锁,且将申请者标识以及所述第一目标共享资源标识保存至分配的所述硬件互斥锁中;返回硬件互斥锁申请成功的状态给软件。采用本方法能够解决硬件资源开销大,减少对共享资源访问效率的影响。
Description
技术领域
本申请涉及集成电路技术领域,特别是涉及一种硬件互斥锁共享方法、装置和计算机设备。
背景技术
在多核系统中,存在多个核都需要更新的共享资源。为了避免共享资源的访问冲突,一般会在芯片中实现硬件互斥锁,需要更新共享资源的核先获取该共享资源对应的信号量,如果该信号量是空闲的,则该核直接获取到硬件互斥锁,才可以对共享资源进行更新,更新完成后释放硬件互斥锁;如果该硬件互斥锁已经被其他核获取到了,则该核获取失败,需要重新尝试获取,直到其他核更新共享资源完成并释放了硬件互斥锁,该核获取硬件互斥锁成功后才可以更新共享资源。
然而,目前的硬件互斥锁和要保护的共享资源之间一般是一对一或一对多的关系,如果是一对一关系,那么每个共享资源都对应一个硬件互斥锁,所需要占用的硬件资源开销比较大;如果是一对多关系,那么多个共享资源对应一个硬件互斥锁,这会导致共享资源的访问效率下降,因为更新某一个没有被其他核访问的共享资源,可能会被另一个共享资源的访问所阻止。
发明内容
基于此,有必要针对上述技术问题,提供一种能够解决硬件资源开销大,减少对共享资源访问效率的影响的硬件互斥锁共享方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供一种硬件互斥锁共享方法,所述方法包括:
基于硬件互斥锁申请请求确定第一目标共享资源标识;
检测是否存在未上锁的硬件互斥锁,当存在未上锁的硬件互斥锁时,获取已上锁的硬件互斥锁对应的参考共享资源标识;
将所述第一目标共享资源标识与所述参考共享资源标识进行匹配;
当不存在与所述第一目标共享资源标识匹配的所述参考共享资源标识时,将未上锁的硬件互斥锁分配给所述硬件互斥锁的申请者,并设置分配的所述未上锁的硬件互斥锁的状态为已上锁,且将所述申请者标识以及所述第一目标共享资源标识保存至分配的所述硬件互斥锁中;
返回硬件互斥锁申请成功的状态给软件。
在其中一个实施例中,所述基于硬件互斥锁申请确定第一目标共享资源标识,包括:
通过获取软件读取的第一硬件互斥锁地址,确定硬件互斥锁申请请求对应的第一目标共享资源标识,其中所述第一硬件互斥锁地址是所述软件基于第一目标共享资源标识计算得到的;或
获取硬件互斥锁申请寄存器中存储的第一目标共享资源标识,所述第一目标共享资源标识是软件存储至所述硬件互斥锁申请寄存器中的。
在其中一个实施例中,所述基于硬件互斥锁申请确定第一目标共享资源标识之前,包括:
从校验寄存器或所述硬件互斥锁申请寄存器获取第一校验值;
基于预先存储的第一预设值校验所述第一校验值是否合法;
当所述第一校验值合法时,继续执行基于硬件互斥锁申请确定第一目标共享资源标识的步骤;
当所述第一校验值不合法时,返回硬件互斥锁申请失败的状态给软件。
在其中一个实施例中,所述方法还包括:
当不存在未上锁的硬件互斥锁,或当存在与所述第一目标共享资源标识匹配的所述参考共享资源标识时,返回硬件互斥锁申请失败的状态给软件。
在其中一个实施例中,所述方法还包括:
基于硬件互斥锁释放请求确定第二目标共享资源标识;
获取已上锁的硬件互斥锁对应的参考共享资源标识;
将所述第二目标共享资源标识与所述参考共享资源标识进行匹配;
当存在与所述第二目标共享资源标识匹配的所述参考共享资源标识时,将匹配的所述参考共享资源标识对应的申请者标识与所述第二目标共享资源标识对应的申请者标识匹配;
当所述申请者标识匹配成功时,将匹配的所述参考资源标识对应的已上锁的硬件互斥锁的状态修改为未上锁,且删除所述匹配的参考资源标识中的申请者标识以及所述参考共享资源标识;其中,所述硬件互斥锁的释放成功的状态通过软件的读操作反馈至软件。
在其中一个实施例中,所述基于硬件互斥锁释放请求确定第二目标共享资源标识,包括:
通过获取软件写入的第二硬件互斥锁地址,确定硬件互斥锁释放请求对应的第二目标共享资源标识,其中,所述第二硬件互斥锁地址是所述软件基于第二目标共享资源标识计算得到的;或
获取硬件互斥锁释放寄存器中存储的第二目标共享资源标识,所述第二目标共享资源标识是软件存储至所述硬件互斥锁释放寄存器中的。
在其中一个实施例中,所述方法还包括:
从所述第二硬件互斥锁地址或所述硬件互斥锁释放寄存器中读取第二校验值;
基于预先存储的第二预设值校验所述第二校验值是否合法;
当所述第二校验值合法时,继续执行基于硬件互斥锁释放请求确定第二目标共享资源标识的步骤;
当所述第一校验值不合法时,返回硬件互斥锁释放失败的状态给软件。
在其中一个实施例中,所述方法还包括:
当不存在与所述第二目标共享资源标识匹配的所述参考共享资源标识,或当不存在匹配的申请者标识时,返回硬件互斥锁申请失败的状态给软件,并存储所述硬件互斥锁释放请求对应的释放失败的记录。
第二方面,本申请还提供一种硬件互斥锁共享装置,所述装置包括:
第一资源标识确定模块,用于基于硬件互斥锁申请请求确定第一目标共享资源标识;
第一参考资源标识确定模块,用于检测是否存在未上锁的硬件互斥锁,当存在未上锁的硬件互斥锁时,获取已上锁的硬件互斥锁对应的参考共享资源标识;
第一匹配模块,用于将所述第一目标共享资源标识与所述参考共享资源标识进行匹配;
分配模块,用于当不存在与所述第一目标共享资源标识匹配的所述参考共享资源标识时,将未上锁的硬件互斥锁分配给所述硬件互斥锁的申请者标识,并设置分配的所述未上锁的硬件互斥锁的状态为已上锁,且将所述申请者标识以及所述第一目标共享资源标识保存至分配的所述硬件互斥锁中;
第一返回模块,用于返回硬件互斥锁申请成功的状态给软件。
第三方面,本申请还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
第四方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
第五方面,本申请还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的方法的步骤。
上述硬件互斥锁共享方法、装置、计算机设备、存储介质和计算机程序产品,硬件互斥锁与共享资源之间没有固定的映射关系,当接收到硬件互斥锁申请请求时,确定其对应的第一目标共享资源标识,并判断已上锁的硬件互斥锁的参考共享资源标识是否与该第一目标共享资源标识匹配,若是不匹配,则表明该共享资源未被操作,从而为该硬件互斥锁申请分配硬件互斥锁,并设置硬件互斥锁的状态为已上锁,且将申请者标识以及所述第一目标共享资源标识保存至分配的所述硬件互斥锁中,这样实现硬件互斥锁与共享资源的动态的分配,当软件需要更新共享资源时,动态地从所有硬件互斥锁中申请一个空闲硬件互斥锁使用,只要整个系统中同时被占用的硬件互斥锁不超过硬件互斥锁总数,那么软件都可以直接申请到硬件互斥锁,不会影响共享资源访问效率。而共享资源数量也不需要受限于硬件互斥锁总数,解决硬件资源开销大的问题。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中硬件互斥锁共享方法的应用环境图;
图2为一个实施例中硬件互斥锁共享方法的流程示意图;
图3为一个实施例中硬件互斥锁释放步骤的流程示意图;
图4为一个实施例中硬件互斥锁共享方法的时序图;
图5为一个实施例中硬件互斥锁共享装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的硬件互斥锁共享方法,可以应用于如图1所示的应用环境中。多核系统中包括多个核、硬件互斥锁模块以及共享资源,其中多个核、硬件互斥锁模块以及共享资源通过总线联系,该硬件互斥锁模块是一个总线从设备。硬件互斥锁模块包括多个硬件互斥锁以及比较分配单元。其中每个硬件互斥锁是一组寄存器实现,每个寄存器分为3个域段,其中包括共享资源标识、申请者标识以及硬件互斥锁状态标记,其中硬件互斥锁状态标记包括上锁状态和未上锁状态。其中申请者标识可以包括内核以及内核上运行的软件进程,即申请者标识可以包含CPU ID和进程ID,这样不仅可以记录是哪个核申请的信号量,也可以记录是核上运行的哪个软件进程申请的信号量。共享资源标识则是软件在开发阶段对共享资源进行编号后生成的。本实施例中,硬件互斥锁模块可以实时地根据软件请求分配对应的硬件互斥锁给申请者以及确定对应的共享资源。
在一个示例性的实施例中,如图2所示,提供了一种硬件互斥锁共享方法,以该方法应用于图1中的硬件互斥锁模块为例进行说明,包括以下步骤202至步骤210。其中:
S202:基于硬件互斥锁申请请求确定第一目标共享资源标识。
其中,硬件互斥锁申请请求是由软件进程发送的,在软件操作的处理过程中,需要对共享资源进行更新,为此生成硬件互斥锁申请请求,其中该硬件互斥锁申请请求携带有申请者标识和第一目标共享资源标识,其中申请者标识可以包括软件对应的核的标识或者软件对应的核的标识以及软件进程的标识。第一目标共享资源标识是软件要更新的共享资源的标识,其是在软件开发阶段预先生成的。
S204:检测是否存在未上锁的硬件互斥锁,当存在未上锁的硬件互斥锁时,获取已上锁的硬件互斥锁对应的参考共享资源标识。
其中硬件互斥锁是通过寄存器实现的,该寄存器中存储有硬件互斥锁的状态信息,基于寄存器中硬件互斥锁的状态信息确定硬件互斥锁是否上锁。
其中由于硬件资源有限,因此该硬件互斥锁的数量是有限的,也即寄存器是有限的。在每次申请硬件互斥锁时,需要确定是否存在未上锁的硬件互斥锁,只有存在时,才会允许硬件互斥锁的申请,否则直接拒绝本次硬件互斥锁的申请。在其中一个可选的实施例中,硬件互斥锁模块可以设置有一标识,用于表征是否存在未使用的硬件互斥锁,例如存在一个计数模块,当存在硬件互斥锁申请请求,且硬件互斥锁申请成功时,则该计数模块加一,当存在硬件互斥锁释放请求,且硬件互斥锁释放成功时,则该计数模块减一,因此可以基于该计数模块的值是否为初始值来判断是否存在未上锁的硬件互斥锁。
其中,获取已上锁的硬件互斥锁对应的参考共享资源标识可以是顺序处理,即依次对获取已上锁的硬件互斥锁对应的参考共享资源标识,具体地,当判断出存在未上锁的硬件互斥锁时,则按照硬件互斥锁的顺序,依次获取到当前硬件互斥锁,且基于状态标识确定该硬件互斥锁为上锁状态时,获取到其的参考资源标识。
S206:将第一目标共享资源标识与参考共享资源标识进行匹配。
而由于硬件互斥锁与共享资源并不存在固定的映射关系,因此在申请硬件互斥锁对共享资源进行处理之前,需要判断共享资源是否正在被其他的核操作,也即检测已上锁的硬件互斥锁是否与第一共享资源匹配。为此,获取到已上锁的硬件互斥锁,可选地,依次对硬件互斥锁模块的硬件互斥锁进行判断,即基于寄存器中存储的状态信息判断当前的硬件互斥锁是上锁状态,则获取上锁状态的硬件互斥锁的参考共享资源标识,并将第一目标共享资源标识与参考共享资源标识进行匹配。
S208:当不存在与第一目标共享资源标识匹配的参考共享资源标识时,将未上锁的硬件互斥锁分配给硬件互斥锁的申请者,并设置分配的未上锁的硬件互斥锁的状态为已上锁,且将申请者标识以及第一目标共享资源标识保存至分配的硬件互斥锁中。
其中,当不存在与第一目标共享资源标识匹配的参考共享资源标识时,也就是说第一目标共享资源当前未被其他核操作,因此软件可以申请硬件互斥锁成功,即获取到未上锁的硬件互斥锁分配给硬件互斥锁的申请者,其中分配的方式是,设置分配的未上锁的硬件互斥锁的状态为已上锁,且将申请者标识以及第一目标共享资源标识保存至分配的硬件互斥锁中,以完成硬件互斥锁的申请。
S210:返回硬件互斥锁申请成功的状态给软件。
在申请成功后,将申请成功的状态返回给软件,从而软件可以基于该硬件互斥锁对第一目标共享资源进行更新。
在其中一个可选的实施例中,当不存在未上锁的硬件互斥锁,或当存在与第一目标共享资源标识匹配的参考共享资源标识时,返回硬件互斥锁申请失败的状态给软件。
其中,若不存在未上锁的硬件互斥锁,也即所有的硬件互斥锁都已经被使用,或者是存在与第一目标共享资源标识匹配的参考共享资源标识,即第一目标共享资源正在被其他的核访问时,则返回硬件互斥锁申请失败状态给软件,软件需要重复申请,直到其他核访问完第一目标共享资源后释放掉对应的硬件互斥锁后,该软件获取到未上锁的硬件互斥锁,并将申请者标识和第一目标共享资源标识添加到该硬件互斥锁中。
上述硬件互斥锁共享方法,硬件互斥锁与共享资源之间没有固定的映射关系,当接收到硬件互斥锁申请请求时,确定其对应的第一目标共享资源标识,并判断已上锁的硬件互斥锁的参考共享资源标识是否与该第一目标共享资源标识匹配,若是不匹配,则表明该共享资源未被操作,从而为该硬件互斥锁申请分配硬件互斥锁,并设置硬件互斥锁的状态为已上锁,且将申请者标识以及第一目标共享资源标识保存至分配的硬件互斥锁中,这样实现硬件互斥锁与共享资源的动态的分配,当软件需要更新共享资源时,动态地从所有硬件互斥锁中申请一个空闲硬件互斥锁使用,只要整个系统中同时被占用的硬件互斥锁不超过硬件互斥锁总数,那么软件都可以直接申请到硬件互斥锁,不会影响共享资源访问效率。而共享资源数量也不需要受限于硬件互斥锁总数,解决硬件资源开销大的问题。
在其中一个实施例中,基于硬件互斥锁申请确定第一目标共享资源标识,包括:通过获取软件读取的第一硬件互斥锁地址,确定硬件互斥锁申请请求对应的第一目标共享资源标识,其中第一硬件互斥锁地址是软件基于第一目标共享资源标识计算得到的;或获取硬件互斥锁申请寄存器中存储的第一目标共享资源标识,第一目标共享资源标识是软件存储至硬件互斥锁申请寄存器中的。
其中,本实施例中硬件互斥锁模块获取到第一目标共享资源标识的方法可以是至少包括两种,具体包括基于硬件互斥锁模块基地址的实现方式以及基于硬件互斥锁申请寄存器的实现方式。
其中基于硬件互斥锁模块基地址的实现方式可以包括:软件将第一目标共享资源标识转换为硬件互斥锁模块基地址。其中转换的规则可以为任意的规则,仅以以下例子进行说明:
硬件互斥锁地址=硬件互斥锁模块基地址+ ( 第一目标共享资源标识<<2 );
如果CPU系统地址支持字节访问,转换规则也可以是:
硬件互斥锁地址=硬件互斥锁模块基地址 + 第一目标共享资源标识。
然后软件读取硬件互斥锁地址,从而硬件互斥锁模块则可以通过该硬件互斥锁地址反向计算得到第一目标共享资源标识。
基于硬件互斥锁申请寄存器的实现方式可以包括:软件将第一目标共享资源标识写入到硬件互斥锁申请寄存器,硬件互斥锁模块从硬件互斥锁申请寄存器中读取到第一目标共享资源标识。
上述实施例中,通过不同的方式实现硬件互斥锁模块对第一目标共享资源标识的获取。
在其中一个实施例中,基于硬件互斥锁申请确定第一目标共享资源标识之前,包括:从校验寄存器或硬件互斥锁申请寄存器获取第一校验值;基于预先存储的第一预设值校验第一校验值是否合法;当第一校验值合法时,继续执行基于硬件互斥锁申请确定第一目标共享资源标识的步骤;当第一校验值不合法时,返回硬件互斥锁申请失败的状态给软件。
其中在本实施例中为了防止硬件互斥锁被误申请导致无法正常释放,通过校验值的方式实现对硬件互斥锁的保护,在其他的实施例中也可以采用超时计数器的方式,在此不做具体限定。
其中通过校验值的方式实现对硬件互斥锁的保护的方式即申请过程满足一定的校验机制时才会分配硬件互斥锁,具体的校验机制可以有不同的实现方法,方式之一为申请硬件互斥锁之前先向一个寄存器写第一校验值,硬件互斥锁模块将该第一校验值与第一预设值进行比较,如果一致则允许申请,否则不允许申请。其中该寄存器可以是单独的校验寄存器,若是第一目标共享资源标识是存储在硬件互斥锁申请寄存器的,则该寄存器还可以为硬件互斥锁申请寄存器。
其中超时计数器的方式可以是为硬件互斥锁添加超时计数器,在硬件互斥锁被申请时开始计时,如果计时超过设定的时间后硬件互斥锁还没有被释放,则强制释放硬件互斥锁并上报错误状态。
上述实施例中,在硬件互斥锁申请的过程中,为了防止硬件互斥锁被误申请,通过校验的方式来进行保护。
在其中一个实施例中,参见图3所示,图3为一个实施例中硬件互斥锁释放步骤的流程图,在该实施例中,该硬件互斥锁释放步骤包括:
S302:基于硬件互斥锁释放请求确定第二目标共享资源标识。
其中硬件互斥锁释放请求是由软件进程发送的,在软件操作的处理过程中,在对共享资源访问完成后,需要释放硬件互斥锁,以便于其他核对该共享资源的访问,为此生成硬件互斥锁释放请求,其中该硬件互斥锁释放请求携带有申请者标识和第二目标共享资源标识,其中申请者标识可以包括软件对应的核的标识或者软件对应的核的标识以及软件进程的标识。第二目标共享资源标识是软件要更新的共享资源的标识,其是在软件开发阶段预先生成的。
S304:获取已上锁的硬件互斥锁对应的参考共享资源标识。
其中硬件互斥锁是通过寄存器实现的,该寄存器中存储有硬件互斥锁的状态信息,基于寄存器中硬件互斥锁的状态信息确定硬件互斥锁是否上锁。
获取已上锁的硬件互斥锁对应的参考共享资源标识可以是顺序处理,即依次对获取已上锁的硬件互斥锁对应的参考共享资源标识,具体地,按照硬件互斥锁的顺序,依次获取到当前硬件互斥锁,且基于状态标识确定该硬件互斥锁为上锁状态时,获取到其的参考资源标识。
S306:将第二目标共享资源标识与参考共享资源标识进行匹配。
S308:当存在与第二目标共享资源标识匹配的参考共享资源标识时,将匹配的参考共享资源标识对应的申请者标识与第二目标共享资源标识对应的申请者标识匹配,其中,硬件互斥锁释放成功的状态通过软件的读操作反馈至软件。
S310:当申请者标识匹配成功时,将匹配的参考资源标识对应的已上锁的硬件互斥锁的状态修改为未上锁,且删除匹配的参考资源标识中的申请者标识以及参考共享资源标识。
其中,当存在与第二目标共享资源标识匹配的参考共享资源标识时,也就是说第二目标共享资源正在被处理,还需要判断正在被处理的第二目标共享资源的核与申请释放硬件互斥锁的核是否相同,若是相同,则释放该硬件互斥锁,即将对应的硬件互斥锁置为未上锁状态。
在释放成功后,软件发起一次读操作获取释放状态,且不影响其他软件对第二目标共享资源的访问。
在其中一个可选的实施例中,当不存在与第二目标共享资源标识匹配的参考共享资源标识,或当不存在匹配的申请者标识时,返回硬件互斥锁申请失败的状态给软件,并存储硬件互斥锁释放请求对应的释放失败的记录。
其中,若不存在与第二目标共享资源标识匹配的参考共享资源标识,即第二目标共享资源未被访问时,若不存在匹配的申请者标识,即正在操作的第二目标共享资源的申请者与硬件互斥锁释放请求的申请者不相同时,则返回硬件互斥锁释放失败状态给软件,此外还可以记录硬件互斥锁释放错误的状态,以便于之后查询。
上述实施例中,硬件互斥锁与共享资源之间没有固定的映射关系,而共享资源数量也不需要受限于硬件互斥锁总数,解决硬件资源开销大的问题,在硬件互斥锁使用完成后,则可以释放硬件互斥锁。
在其中一个实施例中,基于硬件互斥锁释放请求确定第二目标共享资源标识,包括:通过获取软件写入的第二硬件互斥锁地址,确定硬件互斥锁释放请求对应的第二目标共享资源标识,其中,第二硬件互斥锁地址是软件基于第二目标共享资源标识计算得到的;或获取硬件互斥锁释放寄存器中存储的第二目标共享资源标识,第二目标共享资源标识是软件存储至硬件互斥锁释放寄存器中的。
其中,本实施例中硬件互斥锁模块获取到第二目标共享资源标识的方法可以是至少包括两种,具体包括基于硬件互斥锁模块基地址的实现方式以及基于硬件互斥锁释放寄存器的实现方式。
其中基于硬件互斥锁模块基地址的实现方式可以包括:软件将第二目标共享资源标识转换为硬件互斥锁模块基地址。其中转换的规则可以为任意的规则,仅以以下例子进行说明:
硬件互斥锁地址=硬件互斥锁模块基地址+ ( 第二目标共享资源标识<<2 )。
如果CPU系统地址支持字节访问,转换规则也可以是:
硬件互斥锁地址=硬件互斥锁模块基地址 + 第二目标共享资源标识。
然后软件读取硬件互斥锁地址,从而硬件互斥锁模块则可以通过该硬件互斥锁地址反向计算得到第二目标共享资源标识。
基于硬件互斥锁释放寄存器的实现方式可以包括:软件将第一目标共享资源标识写入到硬件互斥锁释放寄存器,硬件互斥锁模块从硬件互斥锁释放寄存器中读取到第二目标共享资源标识。
上述实施例中,通过不同的方式实现硬件互斥锁模块对第二目标共享资源标识的获取。
在其中一个实施例中,上述方法还包括:从第二硬件互斥锁地址或硬件互斥锁释放寄存器中读取第二校验值;基于预先存储的第二预设值校验第二校验值是否合法;当第二校验值合法时,继续执行基于硬件互斥锁释放请求确定第二目标共享资源标识的步骤;当第一校验值不合法时,返回硬件互斥锁释放失败的状态给软件。
其中在本实施例中为了防止硬件互斥锁被误释放,通过校验值的方式实现对硬件互斥锁的保护。
其中通过校验值的方式实现对硬件互斥锁的保护的方式即申请过程满足一定的校验机制时才会释放硬件互斥锁,具体的校验机制可以有不同的实现方法,方式之一为申请释放硬件互斥锁之前先向一个寄存器写第二校验值,硬件互斥锁模块将该第二校验值与第二预设值进行比较,如果一致则允许后续的第二目标共享资源标识和申请者标识的比较,否则不允许释放。其中该寄存器可以是单独的校验寄存器,若是第二目标共享资源标识是存储在硬件互斥锁释放寄存器的,则该寄存器还可以为硬件互斥锁释放寄存器。
上述实施例中,在硬件互斥锁释放的过程中,为了防止硬件互斥锁被误释放,通过校验的方式来进行保护。
为了方便理解,结合图4所示,图4为一个实施例中的硬件互斥锁共享方法的时序图,在该实施例中,将所有硬件互斥锁作为资源池,由硬件互斥锁模块实时的根据软件请求分配硬件互斥锁。每个硬件互斥锁由一组寄存器组成,这组寄存器分为3个域段,分别为共享资源编号、硬件互斥锁申请者编号和硬件互斥锁状态标记L/U(L表示lock,即上锁状态;U表示Unlock,即未上锁状态)。其中硬件互斥锁申请者编号可以包含CPU ID和进程ID,这样不仅可以记录是哪个核申请的硬件互斥锁,也可以记录是核上运行的哪个软件进程申请的硬件互斥锁。共享资源编号由软件在开发阶段对共享资源进行编号后生成。
在申请硬件互斥锁时,硬件互斥锁模块获取到共享资源标识,信号量模块将该共享资源标识与所有已上锁硬件互斥锁中保存的共享资源标识进行比较,如果不存在相同的共享资源标识,说明对应的共享资源是空闲的,硬件互斥锁模块按规则分配给该核一个空闲硬件互斥锁(分配规则可以有多种方式,比如随机分配或按序号分配等),并将对应的硬件互斥锁上锁且将申请者标识和共享资源标识保存到该硬件互斥锁中,然后返回硬件互斥锁申请成功状态给软件;如果存在相同的共享资源标识,则说明对应的共享资源正在被其他核访问,返回硬件互斥锁申请失败状态给软件,软件需要重复申请直到其他核访问完共享资源后释放掉对应的硬件互斥锁;如果所有硬件互斥锁都已上锁,此时无法分配空闲硬件互斥锁,返回硬件互斥锁申请失败状态给软件,软件也需要重复申请直到有空闲硬件互斥锁被释放出来。
软件释放硬件互斥锁时,也按上述转换规则将共享资源标识转换为硬件互斥锁锁地址,然后向该地址写一个校验值;硬件互斥锁模块先比较该校验值,如果合法,则通过硬件互斥锁锁地址反向计算出共享资源标识,将该共享资源标识与所有已上锁硬件互斥锁中保存的共享资源标识进行比较,如果找到相同的共享资源标识,再比较该释放操作对应的申请者标识和硬件互斥锁中保存的申请者标识是否一致,如果一致则将对应的硬件互斥锁置为未上锁状态;如果找不到相同的共享资源标识或申请者标识不一致,则记录硬件互斥锁释放错误状态,以备之后查询。如果校验值不合法,则丢弃该次释放操作。
上述为硬件互斥锁申请和释放过程,为了防止硬件互斥锁被误申请导致无法正常释放,可以采取一些硬件互斥锁保护措施,如为硬件互斥锁添加超时计数器,在硬件互斥锁被申请时开始计时,如果计时超过设定的时间后硬件互斥锁还没有被释放,则强制释放硬件互斥锁并上报错误状态。也可以采取申请校验机制,即申请过程满足一定的校验机制时才会分配硬件互斥锁,具体的校验机制可以有不同的实现方法,方式之一为申请硬件互斥锁之前先向一个校验寄存器写校验值,硬件互斥锁申请模块将该校验值与预设值进行比较,如果一致则允许申请,否则不允许申请。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的硬件互斥锁共享方法的硬件互斥锁共享装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个硬件互斥锁共享装置实施例中的具体限定可以参见上文中对于硬件互斥锁共享方法的限定,在此不再赘述。
在一个示例性的实施例中,如图5所示,提供了一种硬件互斥锁共享装置,包括:第一资源标识确定模块501、第一参考资源标识确定模块502、第一匹配模块503、分配模块504和第一返回模块,其中:
第一资源标识确定模块501,用于基于硬件互斥锁申请请求确定第一目标共享资源标识;
第一参考资源标识确定模块502,用于检测是否存在未上锁的硬件互斥锁,当存在未上锁的硬件互斥锁时,获取已上锁的硬件互斥锁对应的参考共享资源标识;
第一匹配模块503,用于将第一目标共享资源标识与参考共享资源标识进行匹配;
分配模块504,用于当不存在与第一目标共享资源标识匹配的参考共享资源标识时,将未上锁的硬件互斥锁分配给硬件互斥锁的申请者标识,并设置分配的未上锁的硬件互斥锁的状态为已上锁,且将申请者标识以及第一目标共享资源标识保存至分配的硬件互斥锁中;
第一返回模块,用于返回硬件互斥锁申请成功的状态给软件。
在其中一个实施例中,第一资源标识确定模块501还用于通过获取软件读取的第一硬件互斥锁地址,确定硬件互斥锁申请请求对应的第一目标共享资源标识,其中第一硬件互斥锁地址是软件基于第一目标共享资源标识计算得到的;或获取硬件互斥锁申请寄存器中存储的第一目标共享资源标识,第一目标共享资源标识是软件存储至硬件互斥锁申请寄存器中的。
在其中一个实施例中,上述装置还包括第一校验模块,用于从校验寄存器或硬件互斥锁申请寄存器获取第一校验值;基于预先存储的第一预设值校验第一校验值是否合法;当第一校验值合法时,继续执行基于硬件互斥锁申请确定第一目标共享资源标识的步骤;当第一校验值不合法时,返回硬件互斥锁申请失败的状态给软件。
在其中一个实施例中,上述第一返回模块还用于当不存在未上锁的硬件互斥锁,或当存在与第一目标共享资源标识匹配的参考共享资源标识时,返回硬件互斥锁申请失败的状态给软件。
在其中一个实施例中,上述装置还包括:
第二资源标识确定模块,用于基于硬件互斥锁释放请求确定第二目标共享资源标识;
第二参考资源标识确定模块,用于获取已上锁的硬件互斥锁对应的参考共享资源标识;
第二匹配模块,用于将第二目标共享资源标识与参考共享资源标识进行匹配;当存在与第二目标共享资源标识匹配的参考共享资源标识时,将匹配的参考共享资源标识对应的申请者标识与第二目标共享资源标识对应的申请者标识匹配;当申请者标识匹配成功时,将匹配的参考资源标识对应的已上锁的硬件互斥锁的状态修改为未上锁,且删除匹配的参考资源标识中的申请者标识以及参考共享资源标识;其中,硬件互斥锁的释放成功的状态通过软件的读操作反馈至软件。
在其中一个实施例中,上述第二资源标识确定模块还用于通过获取软件写入的第二硬件互斥锁地址,确定硬件互斥锁释放请求对应的第二目标共享资源标识,其中,第二硬件互斥锁地址是软件基于第二目标共享资源标识计算得到的;或获取硬件互斥锁释放寄存器中存储的第二目标共享资源标识,第二目标共享资源标识是软件存储至硬件互斥锁释放寄存器中的。
在其中一个实施例中,上述装置还包括第二校验模块,用于从第二硬件互斥锁地址或硬件互斥锁释放寄存器中读取第二校验值;基于预先存储的第二预设值校验第二校验值是否合法;当第二校验值合法时,继续执行基于硬件互斥锁释放请求确定第二目标共享资源标识的步骤;当第一校验值不合法时,返回硬件互斥锁释放失败的状态给软件。
在其中一个实施例中,上述第二返回模块还用于当不存在与第二目标共享资源标识匹配的参考共享资源标识,或当不存在匹配的申请者标识时,返回硬件互斥锁申请失败的状态给软件,并存储硬件互斥锁释放请求对应的释放失败的记录。
上述硬件互斥锁共享装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个示例性的实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图6所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元、硬件互斥锁模块和输入装置。其中,处理器、存储器、硬件互斥锁模块和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被硬件互斥锁模块执行时以实现一种硬件互斥锁共享方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置。显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个示例性的实施例中,提供了一种计算机设备,包括存储器、处理器和硬件互斥锁模块,存储器中存储有计算机程序,该硬件互斥锁模块执行计算机程序时实现以下步骤:基于硬件互斥锁申请请求确定第一目标共享资源标识;检测是否存在未上锁的硬件互斥锁,当存在未上锁的硬件互斥锁时,获取已上锁的硬件互斥锁对应的参考共享资源标识;将第一目标共享资源标识与参考共享资源标识进行匹配;当不存在与第一目标共享资源标识匹配的参考共享资源标识时,将未上锁的硬件互斥锁分配给硬件互斥锁的申请者,并设置分配的未上锁的硬件互斥锁的状态为已上锁,且将申请者标识以及第一目标共享资源标识保存至分配的硬件互斥锁中;返回硬件互斥锁申请成功的状态给软件。
在一个实施例中,硬件互斥锁模块执行计算机程序时所实现的基于硬件互斥锁申请确定第一目标共享资源标识,包括:通过获取软件读取的第一硬件互斥锁地址,确定硬件互斥锁申请请求对应的第一目标共享资源标识,其中第一硬件互斥锁地址是软件基于第一目标共享资源标识计算得到的;或获取硬件互斥锁申请寄存器中存储的第一目标共享资源标识,第一目标共享资源标识是软件存储至硬件互斥锁申请寄存器中的。
在一个实施例中,硬件互斥锁模块执行计算机程序时所实现的基于硬件互斥锁申请确定第一目标共享资源标识之前,包括:从校验寄存器或硬件互斥锁申请寄存器获取第一校验值;基于预先存储的第一预设值校验第一校验值是否合法;当第一校验值合法时,继续执行基于硬件互斥锁申请确定第一目标共享资源标识的步骤;当第一校验值不合法时,返回硬件互斥锁申请失败的状态给软件。
在一个实施例中,硬件互斥锁模块执行计算机程序时还实现以下步骤:当不存在未上锁的硬件互斥锁,或当存在与第一目标共享资源标识匹配的参考共享资源标识时,返回硬件互斥锁申请失败的状态给软件。
在一个实施例中,硬件互斥锁模块执行计算机程序时还实现以下步骤:基于硬件互斥锁释放请求确定第二目标共享资源标识;获取已上锁的硬件互斥锁对应的参考共享资源标识;将第二目标共享资源标识与参考共享资源标识进行匹配;当存在与第二目标共享资源标识匹配的参考共享资源标识时,将匹配的参考共享资源标识对应的申请者标识与第二目标共享资源标识对应的申请者标识匹配;当申请者标识匹配成功时,将匹配的参考资源标识对应的已上锁的硬件互斥锁的状态修改为未上锁,且删除匹配的参考资源标识中的申请者标识以及参考共享资源标识;其中,硬件互斥锁的释放成功的状态通过软件的读操作反馈至软件。
在一个实施例中,硬件互斥锁模块执行计算机程序时所实现的基于硬件互斥锁释放请求确定第二目标共享资源标识,包括:通过获取软件写入的第二硬件互斥锁地址,确定硬件互斥锁释放请求对应的第二目标共享资源标识,其中,第二硬件互斥锁地址是软件基于第二目标共享资源标识计算得到的;或获取硬件互斥锁释放寄存器中存储的第二目标共享资源标识,第二目标共享资源标识是软件存储至硬件互斥锁释放寄存器中的。
在一个实施例中,硬件互斥锁模块执行计算机程序时还实现以下步骤:从第二硬件互斥锁地址或硬件互斥锁释放寄存器中读取第二校验值;基于预先存储的第二预设值校验第二校验值是否合法;当第二校验值合法时,继续执行基于硬件互斥锁释放请求确定第二目标共享资源标识的步骤;当第一校验值不合法时,返回硬件互斥锁释放失败的状态给软件。
在一个实施例中,硬件互斥锁模块执行计算机程序时还实现以下步骤:当不存在与第二目标共享资源标识匹配的参考共享资源标识,或当不存在匹配的申请者标识时,返回硬件互斥锁申请失败的状态给软件,并存储硬件互斥锁释放请求对应的释放失败的记录。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被硬件互斥锁模块执行时实现以下步骤:基于硬件互斥锁申请请求确定第一目标共享资源标识;检测是否存在未上锁的硬件互斥锁,当存在未上锁的硬件互斥锁时,获取已上锁的硬件互斥锁对应的参考共享资源标识;将第一目标共享资源标识与参考共享资源标识进行匹配;当不存在与第一目标共享资源标识匹配的参考共享资源标识时,将未上锁的硬件互斥锁分配给硬件互斥锁的申请者,并设置分配的未上锁的硬件互斥锁的状态为已上锁,且将申请者标识以及第一目标共享资源标识保存至分配的硬件互斥锁中;返回硬件互斥锁申请成功的状态给软件。
在一个实施例中,计算机程序被硬件互斥锁模块执行时所实现的基于硬件互斥锁申请确定第一目标共享资源标识,包括:通过获取软件读取的第一硬件互斥锁地址,确定硬件互斥锁申请请求对应的第一目标共享资源标识,其中第一硬件互斥锁地址是软件基于第一目标共享资源标识计算得到的;或获取硬件互斥锁申请寄存器中存储的第一目标共享资源标识,第一目标共享资源标识是软件存储至硬件互斥锁申请寄存器中的。
在一个实施例中,计算机程序被硬件互斥锁模块执行时所实现的基于硬件互斥锁申请确定第一目标共享资源标识之前,包括:从校验寄存器或硬件互斥锁申请寄存器获取第一校验值;基于预先存储的第一预设值校验第一校验值是否合法;当第一校验值合法时,继续执行基于硬件互斥锁申请确定第一目标共享资源标识的步骤;当第一校验值不合法时,返回硬件互斥锁申请失败的状态给软件。
在一个实施例中,计算机程序被硬件互斥锁模块执行时还实现以下步骤:当不存在未上锁的硬件互斥锁,或当存在与第一目标共享资源标识匹配的参考共享资源标识时,返回硬件互斥锁申请失败的状态给软件。
在一个实施例中,计算机程序被硬件互斥锁模块执行时还实现以下步骤:基于硬件互斥锁释放请求确定第二目标共享资源标识;获取已上锁的硬件互斥锁对应的参考共享资源标识;将第二目标共享资源标识与参考共享资源标识进行匹配;当存在与第二目标共享资源标识匹配的参考共享资源标识时,将匹配的参考共享资源标识对应的申请者标识与第二目标共享资源标识对应的申请者标识匹配;当申请者标识匹配成功时,将匹配的参考资源标识对应的已上锁的硬件互斥锁的状态修改为未上锁,且删除匹配的参考资源标识中的申请者标识以及参考共享资源标识;其中,硬件互斥锁的释放成功的状态通过软件的读操作反馈至软件。
在一个实施例中,计算机程序被硬件互斥锁模块执行时所实现的基于硬件互斥锁释放请求确定第二目标共享资源标识,包括:通过获取软件写入的第二硬件互斥锁地址,确定硬件互斥锁释放请求对应的第二目标共享资源标识,其中,第二硬件互斥锁地址是软件基于第二目标共享资源标识计算得到的;或获取硬件互斥锁释放寄存器中存储的第二目标共享资源标识,第二目标共享资源标识是软件存储至硬件互斥锁释放寄存器中的。
在一个实施例中,计算机程序被硬件互斥锁模块执行时还实现以下步骤:从第二硬件互斥锁地址或硬件互斥锁释放寄存器中读取第二校验值;基于预先存储的第二预设值校验第二校验值是否合法;当第二校验值合法时,继续执行基于硬件互斥锁释放请求确定第二目标共享资源标识的步骤;当第一校验值不合法时,返回硬件互斥锁释放失败的状态给软件。
在一个实施例中,计算机程序被硬件互斥锁模块执行时还实现以下步骤:当不存在与第二目标共享资源标识匹配的参考共享资源标识,或当不存在匹配的申请者标识时,返回硬件互斥锁申请失败的状态给软件,并存储硬件互斥锁释放请求对应的释放失败的记录。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被硬件互斥锁模块执行时实现以下步骤:基于硬件互斥锁申请请求确定第一目标共享资源标识;检测是否存在未上锁的硬件互斥锁,当存在未上锁的硬件互斥锁时,获取已上锁的硬件互斥锁对应的参考共享资源标识;将第一目标共享资源标识与参考共享资源标识进行匹配;当不存在与第一目标共享资源标识匹配的参考共享资源标识时,将未上锁的硬件互斥锁分配给硬件互斥锁的申请者,并设置分配的未上锁的硬件互斥锁的状态为已上锁,且将申请者标识以及第一目标共享资源标识保存至分配的硬件互斥锁中;返回硬件互斥锁申请成功的状态给软件。
在一个实施例中,计算机程序被硬件互斥锁模块执行时所实现的基于硬件互斥锁申请确定第一目标共享资源标识,包括:通过获取软件读取的第一硬件互斥锁地址,确定硬件互斥锁申请请求对应的第一目标共享资源标识,其中第一硬件互斥锁地址是软件基于第一目标共享资源标识计算得到的;或获取硬件互斥锁申请寄存器中存储的第一目标共享资源标识,第一目标共享资源标识是软件存储至硬件互斥锁申请寄存器中的。
在一个实施例中,计算机程序被硬件互斥锁模块执行时所实现的基于硬件互斥锁申请确定第一目标共享资源标识之前,包括:从校验寄存器或硬件互斥锁申请寄存器获取第一校验值;基于预先存储的第一预设值校验第一校验值是否合法;当第一校验值合法时,继续执行基于硬件互斥锁申请确定第一目标共享资源标识的步骤;当第一校验值不合法时,返回硬件互斥锁申请失败的状态给软件。
在一个实施例中,计算机程序被硬件互斥锁模块执行时还实现以下步骤:当不存在未上锁的硬件互斥锁,或当存在与第一目标共享资源标识匹配的参考共享资源标识时,返回硬件互斥锁申请失败的状态给软件。
在一个实施例中,计算机程序被硬件互斥锁模块执行时还实现以下步骤:基于硬件互斥锁释放请求确定第二目标共享资源标识;获取已上锁的硬件互斥锁对应的参考共享资源标识;将第二目标共享资源标识与参考共享资源标识进行匹配;当存在与第二目标共享资源标识匹配的参考共享资源标识时,将匹配的参考共享资源标识对应的申请者标识与第二目标共享资源标识对应的申请者标识匹配;当申请者标识匹配成功时,将匹配的参考资源标识对应的已上锁的硬件互斥锁的状态修改为未上锁,且删除匹配的参考资源标识中的申请者标识以及参考共享资源标识;其中,硬件互斥锁的释放成功的状态通过软件的读操作反馈至软件。
在一个实施例中,计算机程序被硬件互斥锁模块执行时所实现的基于硬件互斥锁释放请求确定第二目标共享资源标识,包括:通过获取软件写入的第二硬件互斥锁地址,确定硬件互斥锁释放请求对应的第二目标共享资源标识,其中,第二硬件互斥锁地址是软件基于第二目标共享资源标识计算得到的;或获取硬件互斥锁释放寄存器中存储的第二目标共享资源标识,第二目标共享资源标识是软件存储至硬件互斥锁释放寄存器中的。
在一个实施例中,计算机程序被硬件互斥锁模块执行时还实现以下步骤:从第二硬件互斥锁地址或硬件互斥锁释放寄存器中读取第二校验值;基于预先存储的第二预设值校验第二校验值是否合法;当第二校验值合法时,继续执行基于硬件互斥锁释放请求确定第二目标共享资源标识的步骤;当第一校验值不合法时,返回硬件互斥锁释放失败的状态给软件。
在一个实施例中,计算机程序被硬件互斥锁模块执行时还实现以下步骤:当不存在与第二目标共享资源标识匹配的参考共享资源标识,或当不存在匹配的申请者标识时,返回硬件互斥锁申请失败的状态给软件,并存储硬件互斥锁释放请求对应的释放失败的记录。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric RandomAccess Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccessMemory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种硬件互斥锁共享方法,其特征在于,所述方法包括:
基于硬件互斥锁申请请求确定第一目标共享资源标识;
检测是否存在未上锁的硬件互斥锁,当存在未上锁的硬件互斥锁时,获取已上锁的硬件互斥锁对应的参考共享资源标识;
将所述第一目标共享资源标识与所述参考共享资源标识进行匹配;
当不存在与所述第一目标共享资源标识匹配的所述参考共享资源标识时,将未上锁的硬件互斥锁分配给所述硬件互斥锁的申请者,并设置分配的所述未上锁的硬件互斥锁的状态为已上锁,且将所述申请者标识以及所述第一目标共享资源标识保存至分配的所述硬件互斥锁中;
返回硬件互斥锁申请成功的状态给软件。
2.根据权利要求1所述的方法,其特征在于,所述基于硬件互斥锁申请确定第一目标共享资源标识,包括:
通过获取软件读取的第一硬件互斥锁地址,确定硬件互斥锁申请请求对应的第一目标共享资源标识,其中所述第一硬件互斥锁地址是所述软件基于第一目标共享资源标识计算得到的;或
获取硬件互斥锁申请寄存器中存储的第一目标共享资源标识,所述第一目标共享资源标识是软件存储至所述硬件互斥锁申请寄存器中的。
3.根据权利要求2所述的方法,其特征在于,所述基于硬件互斥锁申请确定第一目标共享资源标识之前,包括:
从校验寄存器或所述硬件互斥锁申请寄存器获取第一校验值;
基于预先存储的第一预设值校验所述第一校验值是否合法;
当所述第一校验值合法时,继续执行基于硬件互斥锁申请确定第一目标共享资源标识的步骤;
当所述第一校验值不合法时,返回硬件互斥锁申请失败的状态给软件。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当不存在未上锁的硬件互斥锁,或当存在与所述第一目标共享资源标识匹配的所述参考共享资源标识时,返回硬件互斥锁申请失败的状态给软件。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述方法还包括:
基于硬件互斥锁释放请求确定第二目标共享资源标识;
获取已上锁的硬件互斥锁对应的参考共享资源标识;
将所述第二目标共享资源标识与所述参考共享资源标识进行匹配;
当存在与所述第二目标共享资源标识匹配的所述参考共享资源标识时,将匹配的所述参考共享资源标识对应的申请者标识与所述第二目标共享资源标识对应的申请者标识匹配;
当所述申请者标识匹配成功时,将匹配的所述参考资源标识对应的已上锁的硬件互斥锁的状态修改为未上锁,且删除所述匹配的参考资源标识中的申请者标识以及所述参考共享资源标识;其中,所述硬件互斥锁的释放成功的状态通过软件的读操作反馈至软件。
6.根据权利要求5所述的方法,其特征在于,所述基于硬件互斥锁释放请求确定第二目标共享资源标识,包括:
通过获取软件写入的第二硬件互斥锁地址,确定硬件互斥锁释放请求对应的第二目标共享资源标识,其中,所述第二硬件互斥锁地址是所述软件基于第二目标共享资源标识计算得到的;或
获取硬件互斥锁释放寄存器中存储的第二目标共享资源标识,所述第二目标共享资源标识是软件存储至所述硬件互斥锁释放寄存器中的。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
从所述第二硬件互斥锁地址或所述硬件互斥锁释放寄存器中读取第二校验值;
基于预先存储的第二预设值校验所述第二校验值是否合法;
当所述第二校验值合法时,继续执行基于硬件互斥锁释放请求确定第二目标共享资源标识的步骤;
当所述第一校验值不合法时,返回硬件互斥锁释放失败的状态给软件。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当不存在与所述第二目标共享资源标识匹配的所述参考共享资源标识,或当不存在匹配的申请者标识时,返回硬件互斥锁申请失败的状态给软件,并存储所述硬件互斥锁释放请求对应的释放失败的记录。
9.一种硬件互斥锁共享装置,其特征在于,所述装置包括:
第一资源标识确定模块,用于基于硬件互斥锁申请请求确定第一目标共享资源标识;
第一参考资源标识确定模块,用于检测是否存在未上锁的硬件互斥锁,当存在未上锁的硬件互斥锁时,获取已上锁的硬件互斥锁对应的参考共享资源标识;
第一匹配模块,用于将所述第一目标共享资源标识与所述参考共享资源标识进行匹配;
分配模块,用于当不存在与所述第一目标共享资源标识匹配的所述参考共享资源标识时,将未上锁的硬件互斥锁分配给所述硬件互斥锁的申请者标识,并设置分配的所述未上锁的硬件互斥锁的状态为已上锁,且将所述申请者标识以及所述第一目标共享资源标识保存至分配的所述硬件互斥锁中;
第一返回模块,用于返回硬件互斥锁申请成功的状态给软件。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311551882.6A CN117271148B (zh) | 2023-11-21 | 2023-11-21 | 硬件互斥锁共享方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311551882.6A CN117271148B (zh) | 2023-11-21 | 2023-11-21 | 硬件互斥锁共享方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117271148A true CN117271148A (zh) | 2023-12-22 |
CN117271148B CN117271148B (zh) | 2024-02-02 |
Family
ID=89210859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311551882.6A Active CN117271148B (zh) | 2023-11-21 | 2023-11-21 | 硬件互斥锁共享方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117271148B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100122253A1 (en) * | 2008-11-09 | 2010-05-13 | Mccart Perry Benjamin | System, method and computer program product for programming a concurrent software application |
CN103377086A (zh) * | 2012-04-27 | 2013-10-30 | 华为技术有限公司 | 用于异步多核系统操作共享资源的方法、装置及系统 |
CN112153114A (zh) * | 2020-08-27 | 2020-12-29 | 苏州浪潮智能科技有限公司 | 一种分时访问共享器件的方法、系统、设备及介质 |
CN114217979A (zh) * | 2021-12-20 | 2022-03-22 | 金蝶软件(中国)有限公司 | 单据处理方法、装置、计算机设备和存储介质 |
CN115878336A (zh) * | 2021-09-29 | 2023-03-31 | 北京罗克维尔斯科技有限公司 | 锁操作中的信息处理方法、装置及计算设备 |
-
2023
- 2023-11-21 CN CN202311551882.6A patent/CN117271148B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100122253A1 (en) * | 2008-11-09 | 2010-05-13 | Mccart Perry Benjamin | System, method and computer program product for programming a concurrent software application |
CN103377086A (zh) * | 2012-04-27 | 2013-10-30 | 华为技术有限公司 | 用于异步多核系统操作共享资源的方法、装置及系统 |
CN112153114A (zh) * | 2020-08-27 | 2020-12-29 | 苏州浪潮智能科技有限公司 | 一种分时访问共享器件的方法、系统、设备及介质 |
CN115878336A (zh) * | 2021-09-29 | 2023-03-31 | 北京罗克维尔斯科技有限公司 | 锁操作中的信息处理方法、装置及计算设备 |
CN114217979A (zh) * | 2021-12-20 | 2022-03-22 | 金蝶软件(中国)有限公司 | 单据处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117271148B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103605577B (zh) | 跨进程的资源共享方法和设备 | |
CN110188110B (zh) | 一种构建分布式锁的方法及装置 | |
CN104346317B (zh) | 共享资源访问方法和装置 | |
US20200175583A1 (en) | Blockchain-based leasing | |
CN115686881A (zh) | 数据处理方法、装置和计算机设备 | |
US11500693B2 (en) | Distributed system for distributed lock management and method for operating the same | |
CN114217979A (zh) | 单据处理方法、装置、计算机设备和存储介质 | |
US20120143838A1 (en) | Hierarchical software locking | |
CN105183799B (zh) | 一种权限管理的方法及客户端 | |
CN117271148B (zh) | 硬件互斥锁共享方法、装置和计算机设备 | |
US10901914B2 (en) | Method for writing multiple copies into storage device, and storage device | |
CN111984379B (zh) | 读写事务控制方法、系统、终端设备及存储介质 | |
US20240111545A1 (en) | Concurrent image measurement and execution | |
CA3157242A1 (en) | Capability management method and computer device | |
CN116303510A (zh) | 资源转移事务处理方法、装置、计算机设备和存储介质 | |
CN116541336A (zh) | 多核芯片、协处理器的软件运行方法 | |
US9418175B2 (en) | Enumeration of a concurrent data structure | |
CN116010093A (zh) | 数据处理方法、装置、计算机设备和可读存储介质 | |
CN114756293A (zh) | 业务处理方法、装置、计算机设备和存储介质 | |
CN108959403A (zh) | 一种分布式事务处理方法及装置 | |
CN112346879B (zh) | 进程管理方法、装置、计算机设备及存储介质 | |
US20050198005A1 (en) | Systems and methods for controlling access to an object | |
CN113961364A (zh) | 一种大规模锁系统实现方法、装置、存储介质和服务器 | |
CN115202884B (zh) | 基于轮询的高性能系统的加解读写锁的方法及应用 | |
CN108932205B (zh) | 一种防御RowHammer攻击的方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |