一种虚拟资源分配方法及装置制造方法

文档序号:6513250阅读:165来源:国知局
一种虚拟资源分配方法及装置制造方法
【专利摘要】本发明实施例公开一种虚拟资源分配方法及装置,应用于计算机领域,能够避免进程上下文切换过程中对用户级线程的切换遗漏。该方法包括:在用户级线程挂起时,虚拟资源分配装置在用户级线程的控制数据块中保存所述用户级线程对应硬件资源;所述虚拟资源分配装置在所述用户级线程对应的轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源。本发明的实施例应用于虚拟资源分配。
【专利说明】一种虚拟资源分配方法及装置

【技术领域】
[0001]本发明涉及计算机,尤其涉及一种虚拟资源分配方法及装置。

【背景技术】
[0002]在进程上下文切换时,保存用户级线程的相关硬件状态。该方法被广泛的应用于事务性内存和确定性重放等硬件实现方法中。在上述应用中,需要区分不同用户级线程。例如在确定性重放中,需要检查来自不同用户级线程的访存冲突并将其记录,因此,在用户级线程发生切换时,需要保存并更新与用户线程相关的硬件资源。再例如在事务内存中,一个事务是属于一个用户级线程的,在用户级线程发生切换时,我们需要得知该事件的发生,并且保存该用户级线程事务相关的状态。否则,无法保证事务的原子性。
[0003]基于共享存储的多线程模型中的1-on-l模型中,用户级线程与轻量级进程之间是一一对应的关系,现有的方法,在保存用户级线程相关硬件资源的操作,是在进程上下文切换时发生的,在1-on-l的模型中,现有的方法是可行的。
[0004]但是,在基于共享存储的多线程模型中的M-on-N模型中,用户级线程与轻量级进程之间存在多种对应关系。其中,用户级线程,是通过用户库实现的。轻量级进程,是内核支持的用户级线程,与其它轻量级进程共享地址空间与进程资源。轻量级进程与内核态线程绑定。用户级线程通过与轻量级进程绑定获取处理器资源。内核不知道用户级线程的存在,用户级线程的切换可能发生在用户空间。而该切换的发生,内核无法得知,因此,在进程上下文切换时保存与用户级线程相关硬件资源的方法不够精确,会漏掉在用户级线程的切换,给事务内存、确定性重放及数据竞争检查等方法带来严重的准确性隐患。


【发明内容】

[0005]本发明实施例提供一种虚拟资源分配方法及装置,能够避免进程上下文切换过程中对用户级线程的切换遗漏,提高事务内存、确定性重放及数据竞争检查等方法的准确性。
[0006]第一方面,本发明实施例提供一种虚拟资源分配方法,包括:
[0007]在用户级线程挂起时,虚拟资源分配装置在用户级线程的控制数据块中保存所述用户级线程对应硬件资源;
[0008]所述虚拟资源分配装置在所述用户级线程对应的轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源。
[0009]结合第一方面,在第一种可能的实现方式中,所述方法还包括:
[0010]所述虚拟资源分配装置读取所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中;
[0011]所述虚拟资源分配装置读取所述轻量级进程的控制数据块中保存的所述用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中。
[0012]结合第一方面和第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述虚拟资源分配装置在用户级线程的控制数据块中保存所述用户级线程对应硬件资源,具体包括:
[0013]所述虚拟资源分配装置在所述用户级线程的控制数据块中增加第一数据结构;
[0014]将所述用户级线程对应硬件资源保存至所述第一数据结构;
[0015]所述虚拟资源分配装置读取所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中,具体包括:
[0016]所述虚拟资源分配装置在所述第一数据结构中读取所述用户级线程对应硬件资源,并加载到所述硬件资源对应硬件中。
[0017]结合第一方面和第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述虚拟资源分配装置在轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源,具体包括:
[0018]所述虚拟资源分配装置在所述轻量级进程的控制数据块中增加第二数据结构;
[0019]将所述用户级线程对应硬件资源保存至所述第二数据结构;
[0020]所述虚拟资源分配装置读取所述轻量级进程的控制数据块中保存的所述用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中,具体包括:
[0021]所述虚拟资源分配装置在所述第二数据结构中读取所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中。
[0022]结合第一方面,在第四种可能的实现方式中,所述方法还包括:
[0023]当所述用户级线程挂起时,所述虚拟资源分配装置在本地读取所述用户级线程的硬件资源。
[0024]结合第一方面,在第五种可能的实现方式中,所述方法还包括:
[0025]当所述轻量级进程挂起时,所述虚拟资源分配装置在本地读取所述轻量级进程绑定的所有用户级线程的硬件资源。
[0026]结合第一方面或第一方面任种可能的实现方式,在第六种可能的实现方式中,所述硬件资源包括:用户级线程对应的标量时钟、读集合和写集合或向量时钟。
[0027]第二方面,本发明实施例提供一种虚拟资源分配装置,包括:
[0028]第一保存单元,用于在用户级线程挂起时在用户级线程的控制数据块中保存所述用户级线程对应硬件资源;
[0029]第二保存单元,用于在所述用户级线程对应的轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源。
[0030]结合第二方面,在第一种可能的实现方式中,所述装置还包括:
[0031]第一加载单元,用于读取所述第一保存单元在所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中;
[0032]第二加载单元,用于读取所述第二保存单元在所述轻量级进程的控制数据块中保存的所述用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中。
[0033]结合第二方面和第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一保存单元包括:
[0034]第一增加子单元,用于在所述用户级线程的控制数据块中增加第一数据结构;
[0035]第一保存子单元,用于将所述用户级线程对应硬件资源保存至所述第一增加子单元增加的所述第一数据结构;
[0036]所述第一加载单元,具体用于:
[0037]在所述第一增加子单元增加的所述第一数据结构中读取所述用户级线程对应硬件资源,并加载到相应的硬件中。
[0038]结合第二方面和第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述第二保存单元包括:
[0039]第二增加子单元,用于在所述轻量级进程的控制数据块中增加第二数据结构;
[0040]第二保存子单元,用于将所述用户级线程对应硬件资源保存至所述第二增加子单元增加的所述第二数据结构;
[0041]所述第二加载单元,具体用于:
[0042]在所述第二增加子单元增加的所述第二数据结构中读取所述用户级线程对应硬件资源,并加载到相应的硬件中。
[0043]结合第二方面,在第四种可能的实现方式中,所述装置还包括:
[0044]第一读取单元,用于当所述用户级线程挂起时,所述虚拟资源分配装置在本地读取所述用户级线程的硬件资源。
[0045]结合第二方面,在第五种可能的实现方式中,所述装置还包括:
[0046]第二读取单元,用于当所述轻量级进程挂起时,所述虚拟资源分配装置在本地读取所述轻量级进程绑定的所有用户级线程的硬件资源。
[0047]结合第二方面或第二方面的任意一种可能的实现方式,所述硬件资源包括:用户级线程对应的标量时钟、读集合和写集合或向量时钟。
[0048]本发明实施例提供的虚拟资源分配方法及装置,通过在用户空间和内核空间同时为用户级线程虚拟硬件资源,能够准确识别用户级线程,并准确的为用户级线程虚拟硬件资源,能够避免进程上下文切换过程中对用户级线程的切换遗漏,提高事务内存、确定性重放及数据竞争检查等方法的准确性。

【专利附图】

【附图说明】
[0049]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
[0050]图1为本发明的实施例提供的一种虚拟资源分配方法的流程图示意图;
[0051]图2为为本发明的又一实施例提供的一种虚拟资源分配方法的流程图示意图;
[0052]图3为本发明实施例提供的一种虚拟资源分配装置的结构示意图;
[0053]图4为本发明又一实施例提供的一种虚拟资源分配装置的结构示意图;
[0054]图5为本发明另一实施例提供的一种虚拟资源分配装置的结构示意图;
[0055]图6为本发明再一实施例提供的一种虚拟资源分配装置的结构示意图。

【具体实施方式】
[0056]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
[0057]图1为本发明的实施例提供的一种虚拟资源分配方法的流程图示意图。本发明实施例适用于操作系统中为用户级线程虚拟硬件资源,该方法通常由虚拟资源分配装置执行,该虚拟资源分配装置一般为计算机或计算机中的功能单元或模块。具体参考图1,可以包括以下步骤:
[0058]步骤10、在用户级线程挂起时,虚拟资源分配装置在用户级线程的控制数据块中保存用户级线程对应硬件资源。
[0059]步骤20、虚拟资源分配装置在用户级线程对应的轻量级进程的控制数据块中保存用户级线程对应的硬件资源。
[0060]以上步骤的序号并不代表各步骤之间时序的先后顺序,只是为了在实现上交代清楚各步骤的不同,例如步骤10也可以先于步骤20执行或与步骤20同时执行。
[0061]在M-on-N的多线程实现模型中,用户级线程的切换可能发生在用户空间,因此,除了需要在内核空间为用户级线程虚拟硬件资源还需要在用户空间为用户级线程虚拟硬件资源。当然本方案也适用于1-on-l的多线程实现模型,在1-on-l的多线程实现模型中,由于用户级线程都是与轻量级进程绑定的,而轻量级进程是内核调度的基本单元,因此,只需要内核空间为用户级线程虚拟硬件资源。
[0062]步骤10中,在用户级线程的控制数据块中保存用户级线程对应硬件资源是指,是指在用户空间保存用户级线程对应硬件资源,硬件资源可以包括:CPU (CentralProcessing Unit,中央处理器)、I/0(Input/0utput,输入/输出)、文件、标量时钟、向量时钟、读集合、写集合、内存及指令数等资源。步骤20中,在轻量级进程的控制数据块中保存用户级线程对应的硬件资源,是指在内核空间保存用户级线程对应硬件资源。
[0063]用户级线程挂起分为两种情况:
[0064]第一种情况:在用户空间中,用户级线程挂起。
[0065]将用户级线程对应的硬件资源保存在用户级线程的控制数据块中,即步骤10。
[0066]第二种情况:在内核空间中随着与用户级线程绑定的轻量级进程的挂起,用户级线程挂起。
[0067]因为轻量级的进程挂起发生在内核态,内核不知道用户级线程的具体信息。但是,轻量级进程挂起以后,用户级线程也会挂起,并且用户级线程与轻量级进程的绑定关系不会变化,因此,我们将该用户级线程对应的硬件资源保存在轻量级进程的控制数据块中,即步骤20。
[0068]本方案,用户级线程挂起时,通过既在用户级线程的控制数据块中保存用户级线程对应硬件资源,也在轻量级进程的控制数据块中保存用户级线程对应的硬件资源,即同时在用户空间和内核空间同时为用户级线程虚拟硬件资源,可以准确识别用户级线程,并准确的为用户级线程虚拟硬件资源,提高了事务内存、数据竞争检查和确定性重放等方法的准确性。
[0069]当用户级线程重新调度时,需要恢复该用户级线程对应的硬件资源,参考图2,图2为本发明的又一实施例提供的一种虚拟资源分配方法的流程图示意图,本方案可以包括以下步骤:
[0070]步骤30、虚拟资源分配装置读取用户级线程的控制数据块中保存的用户级线程对应硬件资源,并加载到硬件资源对应的硬件中。
[0071]步骤40、虚拟资源分配装置读取轻量级进程的控制数据块中保存的用户级线程对应的硬件资源,并加载到硬件资源对应的硬件中。
[0072]恢复该用户级线程对应的硬件资源,分为两种情况:
[0073]第一种情况,在用户空间对用户级线程重新调度。
[0074]具体包括步骤30中,读取用户级线程的控制数据块中保存的用户级线程对应硬件资源,并加载到硬件资源对应的硬件中。
[0075]第二种情况,在内核空间对轻量级进程重新调度,此时与之绑定的用户级线程也会恢复调度执行。
[0076]具体包括步骤40中,读取轻量级进程的控制数据块中保存的用户级线程对应的硬件资源,并加载到硬件资源对应的硬件中。
[0077]本方案,在用户级线程重新调度时,通过既在在用户级线程的控制数据块中恢复用户级线程对应硬件资源,也在在轻量级进程的控制数据块中恢复用户级线程对应的硬件资源,即同时在在用户空间和内核空间同时恢复用户级线程对应的硬件资源,可以准确识别用户级线程,从而准确的为用户级线程恢复对应的硬件资源。
[0078]在上述方案基础上,虚拟资源分配装置在用户级线程的控制数据块中保存用户级线程对应硬件资源,可以包括以下步骤:
[0079]步骤101、虚拟资源分配装置在用户级线程的控制数据块中增加第一数据结构;
[0080]步骤102、将用户级线程对应硬件资源保存至第一数据结构。
[0081]其中,用户级线程的控制数据块中一般包括以下资源:
[0082](I)线程号(Thread ID)
[0083](2)寄存器状态(指令指针PC与堆栈指针SP)
[0084](3)堆栈(Stack)
[0085](4)信号屏蔽位(Signal Mask)
[0086](5)优先级(Pr1rity)
[0087](6)用户级线程私有存储(Thread-local Storage)。
[0088]在用户级线程的控制数据块中增加第一数据结构,用于保存与用户级线程相关的硬件资源,即(7)第一新增数据结构,该第一新增数据结构,可以根据不同的应用分别对应不同的硬件资源。例如在事务内存应用中,对应读集合和写集合;在数据竞争检查应用中,对应向量时钟;在确定性重放应用中,对应标量时钟。
[0089]虚拟资源分配装置将用户级线程对应硬件资源保存至第一数据结构中,以在用户空间保存用户级线程对应硬件资源。
[0090]本方案通过第一数据结构,在用户空间保存用户级线程对应硬件资源。
[0091]在上述方案基础上,虚拟资源分配装置在轻量级进程的控制数据块中保存用户级线程对应的硬件资源,可以包括以下步骤:
[0092]步骤201、虚拟资源分配装置在轻量级进程的控制数据块中增加第二数据结构;
[0093]步骤202、将所述用户级线程对应硬件资源保存至第二数据结构。
[0094]其中,轻量级进程的控制数据块中一般包括以下资源:
[0095](I)轻量级进程号(LWP ID)
[0096](2)寄存器状态(指令指针PC与堆栈指针SP)
[0097](3)信号屏蔽掩码 Signal Mask
[0098](4)可选的信号堆栈与不同堆栈的开关掩码(Alternate signal stack and masksfor alternate stack disable and onstack)
[0099](5)用户虚拟时间报警(User and user+system virtual time alarms)
[0100](6)用户态与系统态 CPU 利用率(User time and system CPU usage)
[0101](7)性能状态(Profiling state)
[0102](8)调度优先级与分类(Scheduling class and pr1rity)
[0103](9)第二数据结构(New Feature hardware resource)
[0104]其中,在轻量级进程的控制数据块中增加(9)第二数据结构,用于保存与用户级线程相关的硬件资源,根据不同的应用该第二新增数据结构对应不同的硬件资源。例如在事务内存应用中,对应读集合和写集合;在数据竞争检查应用中,对应向量时钟;在确定性重放应用中,对应标量时钟。
[0105]虚拟资源分配装置将用户级线程对应硬件资源保存至第二数据结构中,以在内核空间保存用户级线程对应硬件资源。
[0106]本方案通过第二数据结构,在内核空间保存用户级线程对应硬件资源。
[0107]进一步可选的,在步骤10之前,该方案还包括:
[0108]当用户级线程挂起时,虚拟资源分配装置在本地读取用户级线程的硬件资源。
[0109]可选的,当用户级线程的挂起是由于轻量级进程挂起引起时,用户级线程挂起之后在步骤201之前还包括:虚拟资源分配装置在本地读取轻量级进程绑定的所有用户级线程的硬件资源。
[0110]相应地,当用户级线程恢复调度执行时,在用户空间,虚拟资源分配装置读取用户级线程的控制数据块中保存的用户级线程对应硬件资源,并加载到硬件资源对应的硬件中,可以包括:虚拟资源分配装置在第一数据结构中读取用户级线程对应硬件资源,并加载到硬件资源对应的硬件中。
[0111]在内核空间,虚拟资源分配装置读取轻量级进程的控制数据块中保存的用户级线程对应的硬件资源,并加载到硬件资源对应的硬件中,可以包括:虚拟资源分配装置在第二数据结构中读取用户级线程对应硬件资源,并加载到硬件资源对应的硬件中。
[0112]本方案,通过从第一数据结构中读取用户级线程对应硬件资源,以实现在用户空间恢复用户级线程对应硬件资源,通过在第二数据结构中读取用户级线程对应硬件资源,以实现在内核空间恢复用户级线程对应硬件资源,从而更准确地位用户级线程恢复硬件资源。
[0113]具体地,在确定性重放应用中,在上述方案基础上,当用户级线程挂起时包括以下步骤:
[0114]步骤1001、当用户级线程挂起时,虚拟资源分配装置在本地读取用户级线程的标量时钟。
[0115]可选的,当用户级线程的挂起是由于轻量级进程挂起引起时,步骤1001:具体为虚拟资源分配装置在本地读取轻量级进程绑定的所有用户级线程的标量时钟。
[0116]步骤1002、将用户级线程的标量时钟写入第一数据结构。
[0117]步骤1003、将轻量级进程下与所述轻量级进程绑定的用户级线程的标量时钟写入第二数据结构。
[0118]步骤1002实现在用户空间保存用户级线程对应硬件资源;步骤步骤1003实现在内核空间保存用户级线程对应硬件资源。在用户空间保存和在内核空间保存没有先后时间顺序。
[0119]其中,确定性重放中,为维护时间上下顺序关系,需要保存的硬件资源为标量时钟,因此当用户级线程挂起时,虚拟资源分配装置在本地读取用户级线程的标量时钟。虚拟资源分配装置可以在本地处理器的标量时钟寄存器中读取用户级线程的标量时钟。然后将该值写入第一数据结构,该第一数据结构可以记为Thread_ScalarClock(线程_标量时钟),以实现在用户空间保存用户级线程对应硬件资源。
[0120]当轻量级进程挂起时,虚拟资源分配装置可以在本地处理器的标量时钟寄存器中读取轻量级进程下所有用户级线程的标量时钟。然后将该值写入第二数据结构,该第二数据结构可以记为LWP_ScalarCl0Ck (轻量级进程_标量时钟),以实现在内核空间保存用户级线程对应硬件资源。
[0121]本方案,通过在本地读取用户级线程的标量时钟和轻量级进程下所有用户级线程的标量时钟,分别写入第一数据结构和第二数据结构,可以准确地保存用户级线程对应的硬件资源,从而准确地实现事务性重放方法。
[0122]相应地,在上述方案基础上,当用户级线程重新调度时,虚拟资源分配装置在第一数据结构中读取用户级线程对应硬件资源,并加载到相应的硬件中,可以包括以下步骤:
[0123]步骤1004、虚拟资源分配装置在第一数据结构中读取用户级线程的标量时钟。
[0124]步骤1005、将用户级线程的标量时钟加载到标量时钟对应的的硬件中。
[0125]当轻量级进程重新调度时,虚拟资源分配装置在第二数据结构中读取用户级线程对应硬件资源,并加载到相应的硬件中,可以包括以下步骤:
[0126]步骤1006、虚拟资源分配装置在第二数据结构中读取轻量级进程下所有用户级线程的标量时钟。
[0127]步骤1007、将轻量级进程下与轻量级进程绑定的用户级线程的标量时钟加载到标量时钟对应的硬件中。
[0128]步骤1004、步骤1005实现在用户空间恢复用户级线程对应硬件资源;步骤1006、步骤1007实现在内核空间恢复用户级线程对应硬件资源。在用户空间恢复和在内核空间恢复没有先后时间顺序。
[0129]其中,在确定性重放中,当用户级线程重新调度时,虚拟资源分配装置可以在用户级线程的控制数据块中的第一数据结构读取用户级线程的标量时钟值ThreacLScalarClock,然后将该值写入本地处理器的标量时钟寄存器,即加载到相应的硬件中。以实现在用户空间恢复用户级线程对应的硬件资源。
[0130]当轻量级进程重新调度时,虚拟资源分配装置可以在轻量级进程的控制数据块中的第二数据结构读取用户级线程的标量时钟值LWP_ScalarCl0Ck,然后将该值写入本地处理器的标量时钟寄存器,即加载到相应的硬件中。以实现在内核空间恢复用户级线程对应的硬件资源。
[0131]本方案,通过从第一数据结构和第二数据结构中,分别读取用户级线程的标量时钟和轻量级进程下所有用户级线程的标量时钟,并加载到相应的硬件,可以准确地恢复用户级线程对应的硬件资源,从而准确地实现确定性重放方法。
[0132]具体地,在事务内存应用中,在上述方案基础上,当用户级线程挂起时,包括以下步骤:
[0133]步骤2001、当用户级线程挂起时,虚拟资源分配装置在本地读取用户级线程的读集合和写集合;
[0134]可选的,当用户级线程的挂起是由于轻量级进程挂起引起时,步骤2001:具体为虚拟资源分配装置在本地读取轻量级进程绑定的所有用户级线程的读集合和写集合。
[0135]步骤2002、将用户级线程的读集合和写集合写入第一数据结构。
[0136]步骤2003、将轻量级进程下与轻量级进程绑定的用户级线程的读集合和写集合写入第二数据结构。
[0137]步骤2002实现在用户空间保存用户级线程对应硬件资源;步骤2003实现在内核空间保存用户级线程对应硬件资源。在用户空间保存和在内核空间保存没有先后时间顺序。
[0138]其中,事务内存中,为保证一个事务在存储层次上是原子执行,S卩,没有来自其它用户级线程的访存操作与事务内的访存操作发生数据交互,需要保存的硬件资源为读集合和写集合,因此当用户级线程挂起时,虚拟资源分配装置在本地读取用户级线程的读集合和写集合。虚拟资源分配装置可以在本地处理器的读写集合寄存器中读取用户级线程的读集合和写集合。然后将该值写入第一数据结构,该第一数据结构中的读集合和写集合可以分别记为Rsetl和Wsetl,以实现在用户空间保存用户级线程对应硬件资源。
[0139]当轻量级进程挂起时,虚拟资源分配装置可以在本地处理器的读写集合寄存器中读取轻量级进程下所有用户级线程的读集合和写集合。然后将该值写入第二数据结构,该第二数据结构的读集合和写集合可以分别记为Rset2和Wset2,以实现在内核空间保存用户级线程对应硬件资源。
[0140]本方案,通过在本地读取用户级线程的读集合和写集合和轻量级进程下所有用户级线程的读集合和写集合,分别写入第一数据结构和第二数据结构,可以准确地保存用户级线程对应的硬件资源,从而准确地实现事务内存方法。
[0141]相应地,在上述方案基础上,当用户级线程重新调度时,虚拟资源分配装置在第一数据结构中读取用户级线程对应硬件资源,并加载到相应的硬件中,可以包括以下步骤:
[0142]步骤2004、虚拟资源分配装置在第一数据结构中读取用户级线程的读集合和写集合;
[0143]步骤2005、将用户级线程的读集合和写集合加载到相应的硬件中。
[0144]当轻量级进程重新调度时,虚拟资源分配装置在第二数据结构中读取用户级线程对应硬件资源,并加载到相应的硬件中,可以包括以下步骤:
[0145]步骤2006、虚拟资源分配装置在第二数据结构中读取轻量级进程下所有用户级线程的读集合和写集合;
[0146]步骤2007、将轻量级进程下与轻量级进程绑定的用户级线程的读集合和写集合加载到相应的硬件中。
[0147]步骤2004、步骤2005实现在用户空间恢复用户级线程对应硬件资源;步骤2006、步骤2007实现在内核空间恢复用户级线程对应硬件资源。在用户空间恢复和在内核空间恢复没有先后时间顺序。
[0148]其中,在事务内存中,当用户级线程重新调度时,虚拟资源分配装置可以在用户级线程的控制数据块中的第一数据结构读取用户级线程的读集合和写集合,即Rsetl和Wsetl,然后将该值写入本地处理器的读写集合寄存器,S卩加载到相应的硬件中。以实现在用户空间恢复用户级线程对应的硬件资源。
[0149]当轻量级进程重新调度时,虚拟资源分配装置可以在轻量级进程的控制数据块中的第二数据结构读取用户级线程的读集合和写集合,即Rset2和Wset2,然后将该值写入本地处理器的读写集合寄存器,即加载到相应的硬件中。以实现在内核空间恢复用户级线程对应的硬件资源。
[0150]本方案,通过从第一数据结构和第二数据结构中,分别取用户级线程的读集合与写集合和轻量级进程下所有用户级线程的读集合与写集合,并加载到相应的硬件,可以准确地恢复用户级线程对应的硬件资源,从而准确地实现事务内存方法。
[0151]具体地,在数据竞争检查应用中,在上述方案基础上,当用户级线程挂起时,可以包括以下步骤:
[0152]步骤3001、虚拟资源分配装置在本地读取用户级线程的向量时钟;
[0153]可选的,当用户级线程的挂起是由于轻量级进程挂起引起时,步骤3001:具体为虚拟资源分配装置在本地读取轻量级进程绑定的所有用户级线程的向量时钟。
[0154]步骤3002、将用户级线程的向量时钟写入第一数据结构。
[0155]步骤3003、将轻量级进程下与所述轻量级进程绑定的用户级线程的向量时钟写入第二数据结构。
[0156]步骤3002实现在用户空间保存用户级线程对应硬件资源;步骤3003实现在内核空间保存用户级线程对应硬件资源。在用户空间保存和在内核空间保存没有先后时间顺序。
[0157]其中,数据竞争检查中,需要保存的硬件资源为向量时钟,因此当用户级线程挂起时,虚拟资源分配装置在本地读取用户级线程的向量时钟。虚拟资源分配装置可以在本地处理器的向量时钟寄存器中读取用户级线程的向量时钟,然后将该值写入第一数据结构,该第一数据结构可以记为Thread_VectorClock(线程_向量时钟),以实现在用户空间保存用户级线程对应硬件资源。
[0158]当轻量级进程挂起时,除现有技术的操作外,虚拟资源分配装置可以在本地处理器的向量时钟寄存器中读取轻量级进程下所有用户级线程的向量时钟。然后将该值写入第二数据结构,该第二数据结构可以记为LWP_VectorScalarClock (轻量级进程_向量时钟),以在内核空间保存用户级线程对应硬件资源。
[0159]本方案,通过在本地读取用户级线程的向量时钟和轻量级进程下所有用户级线程的向量时钟,分别写入第一数据结构和第二数据结构,可以准确地保存用户级线程对应的硬件资源,从而准确地实现数据竞争检查方法。
[0160]相应地,在上述方案基础上,当用户级线程重新调度时,虚拟资源分配装置在第一数据结构中读取用户级线程对应硬件资源,并加载到相应的硬件中,可以包括以下步骤:
[0161]步骤3004、当用户级线程重新调度时,虚拟资源分配装置在第一数据结构中读取用户级线程的向量时钟;
[0162]步骤3005、将用户级线程的向量时钟加载到相应的硬件中。
[0163]当轻量级进程重新调度时,虚拟资源分配装置在第二数据结构中读取用户级线程对应硬件资源,并加载到相应的硬件中,可以包括以下步骤:
[0164]步骤3006、当轻量级进程重新调度时,虚拟资源分配装置在第二数据结构中读取轻量级进程下所有用户级线程的向量时钟;
[0165]步骤3007、将轻量级进程下与所述轻量级进程绑定的用户级线程的向量时钟加载到相应的硬件中。
[0166]步骤3004、步骤3005实现在用户空间恢复用户级线程对应硬件资源;步骤3006、步骤3007实现在内核空间恢复用户级线程对应硬件资源。在用户空间恢复和在内核空间恢复没有先后时间顺序。
[0167]其中,在数据竞争检查中,当用户级线程重新调度时,除现有技术的操作,虚拟资源分配装置可以在用户级线程的控制数据块中的第一数据结构读取用户级线程的向量时钟值ThreacLVectorClock,然后将该值写入本地处理器的向量时钟寄存器,即加载到相应的硬件中。以实现在用户空间恢复用户级线程对应的硬件资源。
[0168]当轻量级进程重新调度时,除现有技术的操作,虚拟资源分配装置可以在轻量级进程的控制数据块中的第二数据结构读取用户级线程的向量时钟值LWP_VeCt0rCl0Ck,然后将该值写入本地处理器的向量时钟寄存器,即加载到相应的硬件中。以实现在内核空间恢复用户级线程对应的硬件资源。
[0169]本方案,通过从第一数据结构和第二数据结构中,分别读取用户级线程的向量时钟和轻量级进程下所有用户级线程的向量时钟,并加载到相应的硬件,可以准确地恢复用户级线程对应的硬件资源,从而准确地实现数据竞争方法。
[0170]图3为本发明实施例提供的一种虚拟资源分配装置的结构示意图,该虚拟资源分配装置用于实现上述实施例的虚拟资源分配方法,参考图3,该虚拟资源分配装置包括:第一保存单元11和第二保存单元21。
[0171]其中,第一保存单元11,用于在用户级线程挂起时在用户级线程的控制数据块中保存所述用户级线程对应硬件资源。
[0172]第二保存单元21,用于在所述用户级线程对应的轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源。
[0173]在上述方案基础上,该装置还可以优选包括:第一加载单元31和第二加载单元41。参考图4所示,图4为本发明又一实施例提供的一种虚拟资源分配装置的结构示意图。
[0174]其中,第一加载单元31,用于读取第一保存单元11在用户级线程的控制数据块中保存的用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中。
[0175]第二加载单元41,用于读取第二保存单元21在轻量级进程的控制数据块中保存的用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中。
[0176]进一步地,第一保存单元11可以包括:第一增加子单元111和第一保存子单元112。
[0177]其中,第一增加子单元111,用于在用户级线程的控制数据块中增加第一数据结构;
[0178]第一保存子单元112,用于将用户级线程对应硬件资源保存至第一增加子单元111增加的第一数据结构;
[0179]具体地,第一加载单元31,具体用于:
[0180]在第一增加子单元111增加的第一数据结构中读取用户级线程对应硬件资源,并加载到相应的硬件中。
[0181]第二保存单元21可以包括:第二增加子单元211和第二保存子单元212。
[0182]第二增加子单元211,用于在轻量级进程的控制数据块中增加第二数据结构;
[0183]第二保存子单元212,用于将用户级线程对应硬件资源保存至第二增加子单元211增加的第二数据结构。
[0184]第二加载单元41,具体用于:
[0185]在第二增加子单元211增加的第二数据结构中读取用户级线程对应硬件资源,并加载到相应的硬件中。
[0186]本方案,用户级线程挂起时,通过第一保存单元既在用户级线程的控制数据块中保存用户级线程对应硬件资源,通过第二保存单元也在轻量级进程的控制数据块中保存用户级线程对应的硬件资源,即同时在用户空间和内核空间同时为用户级线程虚拟硬件资源,可以准确识别用户级线程,并准确的为用户级线程虚拟硬件资源,提高了事务内存、数据竞争检查和确定性重放等方法的准确性。
[0187]进一步可选的,参照图5所示,图5为本发明另一实施例提供的一种虚拟资源分配装置的结构示意图。虚拟资源分配装置还包括:
[0188]第一读取单元51a,用于当用户级线程挂起时,在本地读取用户级线程的硬件资源。
[0189]第二读取单元51b,用于当轻量级进程挂起时,在本地读取轻量级进程绑定的所有用户级线程的硬件资源。
[0190]可选的,硬件资源包括:用户级线程对应的标量时钟、读集合和写集合或向量时钟。
[0191]图6为本发明再一实施例提供的一种虚拟资源分配装置的结构示意图。该虚拟资源分配装置用于实现上述方法实施例提供的虚拟资源分配装置方法,当然该虚拟资源分配装置可以为计算机或计算机上的功能实体,包括至少一个处理器61、存储器62、及总线63,总线63用于实现处理器61、存储器62之间的连接及通信,存储器62用于存储处理器61执行的程序代码及数据,
[0192]该总线63可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为 EISA)总线等,此处并不限定。该总线63可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中:
[0193]存储器62用于存储数据或可执行程序代码,其中程序代码包括计算机操作指令,具体可以为:操作系统、应用程序等。存储器62可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0194]处理器61可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Applicat1n Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0195]处理器61用于通过执行存储器62中的程序代码实现上述实施例中的虚拟资源分配方法,具体包括:
[0196]在用户级线程挂起时,在用户级线程的控制数据块中保存用户级线程对应硬件资源;
[0197]在用户级线程对应的轻量级进程的控制数据块中保存用户级线程对应的硬件资源。
[0198]本方案,用户级线程挂起时,通过既在用户级线程的控制数据块中保存用户级线程对应硬件资源,也在轻量级进程的控制数据块中保存用户级线程对应的硬件资源,即同时在用户空间和内核空间同时为用户级线程虚拟硬件资源,可以准确识别用户级线程,并准确的为用户级线程虚拟硬件资源,提高了事务内存、数据竞争检查和确定性重放等方法的准确性。
[0199]在上述方案基础上,处理器61还用于:
[0200]读取所述用户级线程的控制数据块中保存的用户级线程对应硬件资源,并加载到硬件资源对应的硬件中;
[0201]读取轻量级进程的控制数据块中保存的用户级线程对应的硬件资源,并加载到硬件资源对应的硬件中。
[0202]本方案,在用户级线程重新调度时,通过既在在用户级线程的控制数据块中恢复用户级线程对应硬件资源,也在在轻量级进程的控制数据块中恢复用户级线程对应的硬件资源,即同时在在用户空间和内核空间同时恢复用户级线程对应的硬件资源,可以准确识别用户级线程,从而准确的为用户级线程恢复对应的硬件资源。
[0203]进一步可选的,处理器61具体用于:
[0204]在用户级线程的控制数据块中增加第一数据结构;
[0205]将用户级线程对应硬件资源保存至第一数据结构;
[0206]在第一数据结构中读取用户级线程对应硬件资源,并加载到硬件资源对应硬件中。
[0207]进一步可选的,处理器61具体用于:
[0208]在轻量级进程的控制数据块中增加第二数据结构;
[0209]将用户级线程对应硬件资源保存至第二数据结构;
[0210]在第二数据结构中读取用户级线程对应硬件资源,并加载到硬件资源对应的硬件中。
[0211]本方案,通过从第一数据结构中读取用户级线程对应硬件资源,以实现在用户空间恢复用户级线程对应硬件资源,通过在第二数据结构中读取用户级线程对应硬件资源,以实现在内核空间恢复用户级线程对应硬件资源,从而更准确地位用户级线程恢复硬件资源。
[0212]进一步的处理器61还用于当所述用户级线程挂起时,在本地读取所述用户级线程的硬件资源;
[0213]或者,当所述轻量级进程挂起时,在本地读取所述轻量级进程绑定的所有用户级线程的硬件资源。
[0214]可选的,硬件资源包括:用户级线程对应的标量时钟、读集合和写集合或向量时钟。
[0215]本方案,通过在本地读取用户级线程的向量时钟和轻量级进程下所有用户级线程的向量时钟,分别写入第一数据结构和第二数据结构,可以准确地保存用户级线程对应的硬件资源,从而准确地实现数据竞争检查方法。
[0216]通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外。任何连接可以适当的成为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(DSL)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在所属介质的定影中。如本发明所使用的,盘(Disk)和碟(disc)包括压缩光碟(⑶)、激光碟、光碟、数字通用光碟(DVD)、软盘和蓝光光碟,其中盘通常磁性的复制数据,而碟则用激光来光学的复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。
[0217]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
【权利要求】
1.一种虚拟资源分配方法,其特征在于,包括: 在用户级线程挂起时,虚拟资源分配装置在用户级线程的控制数据块中保存所述用户级线程对应硬件资源; 所述虚拟资源分配装置在所述用户级线程对应的轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源。
2.根据权利要求1所述的虚拟资源分配方法,其特征在于,所述方法还包括: 所述虚拟资源分配装置读取所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中; 所述虚拟资源分配装置读取所述轻量级进程的控制数据块中保存的所述用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中。
3.根据权利要求1或2所述的方法,其特征在于,所述虚拟资源分配装置在用户级线程的控制数据块中保存所述用户级线程对应硬件资源,具体包括: 所述虚拟资源分配装置在所述用户级线程的控制数据块中增加第一数据结构; 将所述用户级线程对应硬件资源保存至所述第一数据结构; 所述虚拟资源分配装置读取所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中,具体包括: 所述虚拟资源分配装置在所述第一数据结构中读取所述用户级线程对应硬件资源,并加载到所述硬件资源对应硬件中。
4.根据权利要求1或2所述的方法,其特征在于,所述虚拟资源分配装置在轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源,具体包括: 所述虚拟资源分配装置在所述轻量级进程的控制数据块中增加第二数据结构; 将所述用户级线程对应硬件资源保存至所述第二数据结构; 所述虚拟资源分配装置读取所述轻量级进程的控制数据块中保存的所述用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中,具体包括: 所述虚拟资源分配装置在所述第二数据结构中读取所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括: 当所述用户级线程挂起时,所述虚拟资源分配装置在本地读取所述用户级线程的硬件资源。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括: 当所述轻量级进程挂起时,所述虚拟资源分配装置在本地读取所述轻量级进程绑定的所有用户级线程的硬件资源。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述硬件资源包括:用户级线程对应的标量时钟、读集合和写集合或向量时钟。
8.—种虚拟资源分配装置,其特征在于,包括: 第一保存单元,用于在用户级线程挂起时在用户级线程的控制数据块中保存所述用户级线程对应硬件资源; 第二保存单元,用于在所述用户级线程对应的轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括: 第一加载单元,用于读取所述第一保存单元在所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中; 第二加载单元,用于读取所述第二保存单元在所述轻量级进程的控制数据块中保存的所述用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中。
10.根据权利要求8或9所述的装置,其特征在于,所述第一保存单元包括: 第一增加子单元,用于在所述用户级线程的控制数据块中增加第一数据结构; 第一保存子单元,用于将所述用户级线程对应硬件资源保存至所述第一增加子单元增加的所述第一数据结构; 所述第一加载单元,具体用于: 在所述第一增加子单元增加的所述第一数据结构中读取所述用户级线程对应硬件资源,并加载到相应的硬件中。
11.根据权利要求8或9所述的装置,其特征在于,所述第二保存单元包括: 第二增加子单元,用于在所述轻量级进程的控制数据块中增加第二数据结构; 第二保存子单元,用于将所述用户级线程对应硬件资源保存至所述第二增加子单元增加的所述第二数据结构; 所述第二加载单元,具体用于: 在所述第二增加子单元增加的所述第二数据结构中读取所述用户级线程对应硬件资源,并加载到相应的硬件中。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括: 第一读取单元,用于当所述用户级线程挂起时,所述虚拟资源分配装置在本地读取所述用户级线程的硬件资源。
13.根据权利要求8所述的装置,其特征在于,所述装置还包括: 第二读取单元,用于当所述轻量级进程挂起时,所述虚拟资源分配装置在本地读取所述轻量级进程绑定的所有用户级线程的硬件资源。
14.根据权利要求8-13任一项所述的装置,其特征在于,所述硬件资源包括:用户级线程对应的标量时钟、读集合和写集合或向量时钟。
【文档编号】G06F9/50GK104461730SQ201310444885
【公开日】2015年3月25日 申请日期:2013年9月22日 优先权日:2013年9月22日
【发明者】唐士斌, 唐志敏, 宋风龙, 叶笑春 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1