《一种虚拟资源分配方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种虚拟资源分配方法及装置.pdf(21页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 (43)申请公布日 (21)申请号 201310444885.X(22)申请日 2013.09.22G06F 9/50(2006.01)(71)申请人华为技术有限公司地址 518129 广东省深圳市龙岗区坂田华为总部办公楼申请人中国科学院计算技术研究所(72)发明人唐士斌 唐志敏 宋风龙 叶笑春(74)专利代理机构北京中博世达专利商标代理有限公司 11274代理人申健(54) 发明名称一种虚拟资源分配方法及装置(57) 摘要本发明实施例公开一种虚拟资源分配方法及装置,应用于计算机领域,能够避免进程上下文切换过程中对用户级线程的切换遗漏。该方法包括:在用户级线程挂起时,虚拟资。
2、源分配装置在用户级线程的控制数据块中保存所述用户级线程对应硬件资源;所述虚拟资源分配装置在所述用户级线程对应的轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源。本发明的实施例应用于虚拟资源分配。(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书13页 附图5页(10)申请公布号 CN 104461730 A(43)申请公布日 2015.03.25CN 104461730 A1/2页21.一种虚拟资源分配方法,其特征在于,包括:在用户级线程挂起时,虚拟资源分配装置在用户级线程的控制数据块中保存所述用户级线程对应硬件资源;所述虚拟资源分配装。
3、置在所述用户级线程对应的轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源。2.根据权利要求1所述的虚拟资源分配方法,其特征在于,所述方法还包括:所述虚拟资源分配装置读取所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中;所述虚拟资源分配装置读取所述轻量级进程的控制数据块中保存的所述用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中。3.根据权利要求1或2所述的方法,其特征在于,所述虚拟资源分配装置在用户级线程的控制数据块中保存所述用户级线程对应硬件资源,具体包括:所述虚拟资源分配装置在所述用户级线程的控制数据块中增加第一数据结构;将所。
4、述用户级线程对应硬件资源保存至所述第一数据结构;所述虚拟资源分配装置读取所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中,具体包括:所述虚拟资源分配装置在所述第一数据结构中读取所述用户级线程对应硬件资源,并加载到所述硬件资源对应硬件中。4.根据权利要求1或2所述的方法,其特征在于,所述虚拟资源分配装置在轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源,具体包括:所述虚拟资源分配装置在所述轻量级进程的控制数据块中增加第二数据结构;将所述用户级线程对应硬件资源保存至所述第二数据结构;所述虚拟资源分配装置读取所述轻量级进程的控制数据块中保存的所述。
5、用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中,具体包括:所述虚拟资源分配装置在所述第二数据结构中读取所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述用户级线程挂起时,所述虚拟资源分配装置在本地读取所述用户级线程的硬件资源。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述轻量级进程挂起时,所述虚拟资源分配装置在本地读取所述轻量级进程绑定的所有用户级线程的硬件资源。7.根据权利要求1-6任一项所述的方法,其特征在于,所述硬件资源包括:用户级线程对应的标量时钟、读集合和写集合或向量时钟。8.一。
6、种虚拟资源分配装置,其特征在于,包括:第一保存单元,用于在用户级线程挂起时在用户级线程的控制数据块中保存所述用户级线程对应硬件资源;第二保存单元,用于在所述用户级线程对应的轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源。权 利 要 求 书CN 104461730 A2/2页39.根据权利要求8所述的装置,其特征在于,所述装置还包括:第一加载单元,用于读取所述第一保存单元在所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中;第二加载单元,用于读取所述第二保存单元在所述轻量级进程的控制数据块中保存的所述用户级线程对应的硬件资源,并加载到所述硬件。
7、资源对应的硬件中。10.根据权利要求8或9所述的装置,其特征在于,所述第一保存单元包括:第一增加子单元,用于在所述用户级线程的控制数据块中增加第一数据结构;第一保存子单元,用于将所述用户级线程对应硬件资源保存至所述第一增加子单元增加的所述第一数据结构;所述第一加载单元,具体用于:在所述第一增加子单元增加的所述第一数据结构中读取所述用户级线程对应硬件资源,并加载到相应的硬件中。11.根据权利要求8或9所述的装置,其特征在于,所述第二保存单元包括:第二增加子单元,用于在所述轻量级进程的控制数据块中增加第二数据结构;第二保存子单元,用于将所述用户级线程对应硬件资源保存至所述第二增加子单元增加的所述第。
8、二数据结构;所述第二加载单元,具体用于:在所述第二增加子单元增加的所述第二数据结构中读取所述用户级线程对应硬件资源,并加载到相应的硬件中。12.根据权利要求8所述的装置,其特征在于,所述装置还包括:第一读取单元,用于当所述用户级线程挂起时,所述虚拟资源分配装置在本地读取所述用户级线程的硬件资源。13.根据权利要求8所述的装置,其特征在于,所述装置还包括:第二读取单元,用于当所述轻量级进程挂起时,所述虚拟资源分配装置在本地读取所述轻量级进程绑定的所有用户级线程的硬件资源。14.根据权利要求8-13任一项所述的装置,其特征在于,所述硬件资源包括:用户级线程对应的标量时钟、读集合和写集合或向量时钟。。
9、权 利 要 求 书CN 104461730 A1/13页4一种虚拟资源分配方法及装置技术领域0001 本发明涉及计算机,尤其涉及一种虚拟资源分配方法及装置。背景技术0002 在进程上下文切换时,保存用户级线程的相关硬件状态。该方法被广泛的应用于事务性内存和确定性重放等硬件实现方法中。在上述应用中,需要区分不同用户级线程。例如在确定性重放中,需要检查来自不同用户级线程的访存冲突并将其记录,因此,在用户级线程发生切换时,需要保存并更新与用户线程相关的硬件资源。再例如在事务内存中,一个事务是属于一个用户级线程的,在用户级线程发生切换时,我们需要得知该事件的发生,并且保存该用户级线程事务相关的状态。否。
10、则,无法保证事务的原子性。0003 基于共享存储的多线程模型中的1-on-1模型中,用户级线程与轻量级进程之间是一一对应的关系,现有的方法,在保存用户级线程相关硬件资源的操作,是在进程上下文切换时发生的,在1-on-1的模型中,现有的方法是可行的。0004 但是,在基于共享存储的多线程模型中的M-on-N模型中,用户级线程与轻量级进程之间存在多种对应关系。其中,用户级线程,是通过用户库实现的。轻量级进程,是内核支持的用户级线程,与其它轻量级进程共享地址空间与进程资源。轻量级进程与内核态线程绑定。用户级线程通过与轻量级进程绑定获取处理器资源。内核不知道用户级线程的存在,用户级线程的切换可能发生在。
11、用户空间。而该切换的发生,内核无法得知,因此,在进程上下文切换时保存与用户级线程相关硬件资源的方法不够精确,会漏掉在用户级线程的切换,给事务内存、确定性重放及数据竞争检查等方法带来严重的准确性隐患。发明内容0005 本发明实施例提供一种虚拟资源分配方法及装置,能够避免进程上下文切换过程中对用户级线程的切换遗漏,提高事务内存、确定性重放及数据竞争检查等方法的准确性。0006 第一方面,本发明实施例提供一种虚拟资源分配方法,包括:0007 在用户级线程挂起时,虚拟资源分配装置在用户级线程的控制数据块中保存所述用户级线程对应硬件资源;0008 所述虚拟资源分配装置在所述用户级线程对应的轻量级进程的控。
12、制数据块中保存所述用户级线程对应的硬件资源。0009 结合第一方面,在第一种可能的实现方式中,所述方法还包括:0010 所述虚拟资源分配装置读取所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中;0011 所述虚拟资源分配装置读取所述轻量级进程的控制数据块中保存的所述用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中。0012 结合第一方面和第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述虚拟资源分配装置在用户级线程的控制数据块中保存所述用户级线程对应硬件资说 明 书CN 104461730 A2/13页5源,具体包括:0013。
13、 所述虚拟资源分配装置在所述用户级线程的控制数据块中增加第一数据结构;0014 将所述用户级线程对应硬件资源保存至所述第一数据结构;0015 所述虚拟资源分配装置读取所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中,具体包括:0016 所述虚拟资源分配装置在所述第一数据结构中读取所述用户级线程对应硬件资源,并加载到所述硬件资源对应硬件中。0017 结合第一方面和第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述虚拟资源分配装置在轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源,具体包括:0018 所述虚拟资源分配装置在所述轻量级。
14、进程的控制数据块中增加第二数据结构;0019 将所述用户级线程对应硬件资源保存至所述第二数据结构;0020 所述虚拟资源分配装置读取所述轻量级进程的控制数据块中保存的所述用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中,具体包括:0021 所述虚拟资源分配装置在所述第二数据结构中读取所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中。0022 结合第一方面,在第四种可能的实现方式中,所述方法还包括:0023 当所述用户级线程挂起时,所述虚拟资源分配装置在本地读取所述用户级线程的硬件资源。0024 结合第一方面,在第五种可能的实现方式中,所述方法还包括:0025 当所述轻量级。
15、进程挂起时,所述虚拟资源分配装置在本地读取所述轻量级进程绑定的所有用户级线程的硬件资源。0026 结合第一方面或第一方面任一一种可能的实现方式,在第六种可能的实现方式中,所述硬件资源包括:用户级线程对应的标量时钟、读集合和写集合或向量时钟。0027 第二方面,本发明实施例提供一种虚拟资源分配装置,包括:0028 第一保存单元,用于在用户级线程挂起时在用户级线程的控制数据块中保存所述用户级线程对应硬件资源;0029 第二保存单元,用于在所述用户级线程对应的轻量级进程的控制数据块中保存所述用户级线程对应的硬件资源。0030 结合第二方面,在第一种可能的实现方式中,所述装置还包括:0031 第一加载。
16、单元,用于读取所述第一保存单元在所述用户级线程的控制数据块中保存的所述用户级线程对应硬件资源,并加载到所述硬件资源对应的硬件中;0032 第二加载单元,用于读取所述第二保存单元在所述轻量级进程的控制数据块中保存的所述用户级线程对应的硬件资源,并加载到所述硬件资源对应的硬件中。0033 结合第二方面和第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一保存单元包括:0034 第一增加子单元,用于在所述用户级线程的控制数据块中增加第一数据结构;0035 第一保存子单元,用于将所述用户级线程对应硬件资源保存至所述第一增加子单元增加的所述第一数据结构;说 明 书CN 104461730 。
17、A3/13页60036 所述第一加载单元,具体用于:0037 在所述第一增加子单元增加的所述第一数据结构中读取所述用户级线程对应硬件资源,并加载到相应的硬件中。0038 结合第二方面和第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述第二保存单元包括:0039 第二增加子单元,用于在所述轻量级进程的控制数据块中增加第二数据结构;0040 第二保存子单元,用于将所述用户级线程对应硬件资源保存至所述第二增加子单元增加的所述第二数据结构;0041 所述第二加载单元,具体用于:0042 在所述第二增加子单元增加的所述第二数据结构中读取所述用户级线程对应硬件资源,并加载到相应的硬件中。004。
18、3 结合第二方面,在第四种可能的实现方式中,所述装置还包括:0044 第一读取单元,用于当所述用户级线程挂起时,所述虚拟资源分配装置在本地读取所述用户级线程的硬件资源。0045 结合第二方面,在第五种可能的实现方式中,所述装置还包括:0046 第二读取单元,用于当所述轻量级进程挂起时,所述虚拟资源分配装置在本地读取所述轻量级进程绑定的所有用户级线程的硬件资源。0047 结合第二方面或第二方面的任意一种可能的实现方式,所述硬件资源包括:用户级线程对应的标量时钟、读集合和写集合或向量时钟。0048 本发明实施例提供的虚拟资源分配方法及装置,通过在用户空间和内核空间同时为用户级线程虚拟硬件资源,能够。
19、准确识别用户级线程,并准确的为用户级线程虚拟硬件资源,能够避免进程上下文切换过程中对用户级线程的切换遗漏,提高事务内存、确定性重放及数据竞争检查等方法的准确性。附图说明0049 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。0050 图1为本发明的实施例提供的一种虚拟资源分配方法的流程图示意图;0051 图2为为本发明的又一实施例提供的一种虚拟资源分配方法的流程图示意图;0052 图3为本发明实施例提供的一种虚拟资源分配装置的结构示意图;0053 图4为本发明又一实施例提供的一种虚拟资源分配装置的结构示意图;0054 图5为本发。
20、明另一实施例提供的一种虚拟资源分配装置的结构示意图;0055 图6为本发明再一实施例提供的一种虚拟资源分配装置的结构示意图。具体实施方式0056 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。0057 图1为本发明的实施例提供的一种虚拟资源分配方法的流程图示意图。本发明实施例适用于操作系统中为用户级线程虚拟硬件资源,该方法通常由虚拟资源分配装置执说 明 书CN 104461730 A4/13页7行,该虚拟资源分配装置一般为计算机或计算机中的功能单元或模块。具体参考图1,可以包括以下步骤:0058。
21、 步骤10、在用户级线程挂起时,虚拟资源分配装置在用户级线程的控制数据块中保存用户级线程对应硬件资源。0059 步骤20、虚拟资源分配装置在用户级线程对应的轻量级进程的控制数据块中保存用户级线程对应的硬件资源。0060 以上步骤的序号并不代表各步骤之间时序的先后顺序,只是为了在实现上交代清楚各步骤的不同,例如步骤10也可以先于步骤20执行或与步骤20同时执行。0061 在M-on-N的多线程实现模型中,用户级线程的切换可能发生在用户空间,因此,除了需要在内核空间为用户级线程虚拟硬件资源还需要在用户空间为用户级线程虚拟硬件资源。当然本方案也适用于1-on-1的多线程实现模型,在1-on-1的多线。
22、程实现模型中,由于用户级线程都是与轻量级进程绑定的,而轻量级进程是内核调度的基本单元,因此,只需要内核空间为用户级线程虚拟硬件资源。0062 步骤10中,在用户级线程的控制数据块中保存用户级线程对应硬件资源是指,是指在用户空间保存用户级线程对应硬件资源,硬件资源可以包括:CPU(Central Processing Unit,中央处理器)、I/O(Input/Output,输入/输出)、文件、标量时钟、向量时钟、读集合、写集合、内存及指令数等资源。步骤20中,在轻量级进程的控制数据块中保存用户级线程对应的硬件资源,是指在内核空间保存用户级线程对应硬件资源。0063 用户级线程挂起分为两种情况:。
23、0064 第一种情况:在用户空间中,用户级线程挂起。0065 将用户级线程对应的硬件资源保存在用户级线程的控制数据块中,即步骤10。0066 第二种情况:在内核空间中随着与用户级线程绑定的轻量级进程的挂起,用户级线程挂起。0067 因为轻量级的进程挂起发生在内核态,内核不知道用户级线程的具体信息。但是,轻量级进程挂起以后,用户级线程也会挂起,并且用户级线程与轻量级进程的绑定关系不会变化,因此,我们将该用户级线程对应的硬件资源保存在轻量级进程的控制数据块中,即步骤20。0068 本方案,用户级线程挂起时,通过既在用户级线程的控制数据块中保存用户级线程对应硬件资源,也在轻量级进程的控制数据块中保存。
24、用户级线程对应的硬件资源,即同时在用户空间和内核空间同时为用户级线程虚拟硬件资源,可以准确识别用户级线程,并准确的为用户级线程虚拟硬件资源,提高了事务内存、数据竞争检查和确定性重放等方法的准确性。0069 当用户级线程重新调度时,需要恢复该用户级线程对应的硬件资源,参考图2,图2为本发明的又一实施例提供的一种虚拟资源分配方法的流程图示意图,本方案可以包括以下步骤:0070 步骤30、虚拟资源分配装置读取用户级线程的控制数据块中保存的用户级线程对应硬件资源,并加载到硬件资源对应的硬件中。0071 步骤40、虚拟资源分配装置读取轻量级进程的控制数据块中保存的用户级线程对应的硬件资源,并加载到硬件资。
25、源对应的硬件中。说 明 书CN 104461730 A5/13页80072 恢复该用户级线程对应的硬件资源,分为两种情况:0073 第一种情况,在用户空间对用户级线程重新调度。0074 具体包括步骤30中,读取用户级线程的控制数据块中保存的用户级线程对应硬件资源,并加载到硬件资源对应的硬件中。0075 第二种情况,在内核空间对轻量级进程重新调度,此时与之绑定的用户级线程也会恢复调度执行。0076 具体包括步骤40中,读取轻量级进程的控制数据块中保存的用户级线程对应的硬件资源,并加载到硬件资源对应的硬件中。0077 本方案,在用户级线程重新调度时,通过既在在用户级线程的控制数据块中恢复用户级线程。
26、对应硬件资源,也在在轻量级进程的控制数据块中恢复用户级线程对应的硬件资源,即同时在在用户空间和内核空间同时恢复用户级线程对应的硬件资源,可以准确识别用户级线程,从而准确的为用户级线程恢复对应的硬件资源。0078 在上述方案基础上,虚拟资源分配装置在用户级线程的控制数据块中保存用户级线程对应硬件资源,可以包括以下步骤:0079 步骤101、虚拟资源分配装置在用户级线程的控制数据块中增加第一数据结构;0080 步骤102、将用户级线程对应硬件资源保存至第一数据结构。0081 其中,用户级线程的控制数据块中一般包括以下资源:0082 (1)线程号(Thread ID)0083 (2)寄存器状态(指令。
27、指针PC与堆栈指针SP)0084 (3)堆栈(Stack)0085 (4)信号屏蔽位(Signal Mask)0086 (5)优先级(Priority)0087 (6)用户级线程私有存储(Thread-local Storage)。0088 在用户级线程的控制数据块中增加第一数据结构,用于保存与用户级线程相关的硬件资源,即(7)第一新增数据结构,该第一新增数据结构,可以根据不同的应用分别对应不同的硬件资源。例如在事务内存应用中,对应读集合和写集合;在数据竞争检查应用中,对应向量时钟;在确定性重放应用中,对应标量时钟。0089 虚拟资源分配装置将用户级线程对应硬件资源保存至第一数据结构中,以在用。
28、户空间保存用户级线程对应硬件资源。0090 本方案通过第一数据结构,在用户空间保存用户级线程对应硬件资源。0091 在上述方案基础上,虚拟资源分配装置在轻量级进程的控制数据块中保存用户级线程对应的硬件资源,可以包括以下步骤:0092 步骤201、虚拟资源分配装置在轻量级进程的控制数据块中增加第二数据结构;0093 步骤202、将所述用户级线程对应硬件资源保存至第二数据结构。0094 其中,轻量级进程的控制数据块中一般包括以下资源:0095 (1)轻量级进程号(LWP ID)0096 (2)寄存器状态(指令指针PC与堆栈指针SP)0097 (3)信号屏蔽掩码Signal Mask0098 (4)。
29、可选的信号堆栈与不同堆栈的开关掩码(Alternate signal stack and masks 说 明 书CN 104461730 A6/13页9for 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 priori。
30、ty)0103 (9)第二数据结构(New Feature hardware resource)0104 其中,在轻量级进程的控制数据块中增加(9)第二数据结构,用于保存与用户级线程相关的硬件资源,根据不同的应用该第二新增数据结构对应不同的硬件资源。例如在事务内存应用中,对应读集合和写集合;在数据竞争检查应用中,对应向量时钟;在确定性重放应用中,对应标量时钟。0105 虚拟资源分配装置将用户级线程对应硬件资源保存至第二数据结构中,以在内核空间保存用户级线程对应硬件资源。0106 本方案通过第二数据结构,在内核空间保存用户级线程对应硬件资源。0107 进一步可选的,在步骤10之前,该方案还包括:。
31、0108 当用户级线程挂起时,虚拟资源分配装置在本地读取用户级线程的硬件资源。0109 可选的,当用户级线程的挂起是由于轻量级进程挂起引起时,用户级线程挂起之后在步骤201之前还包括:虚拟资源分配装置在本地读取轻量级进程绑定的所有用户级线程的硬件资源。0110 相应地,当用户级线程恢复调度执行时,在用户空间,虚拟资源分配装置读取用户级线程的控制数据块中保存的用户级线程对应硬件资源,并加载到硬件资源对应的硬件中,可以包括:虚拟资源分配装置在第一数据结构中读取用户级线程对应硬件资源,并加载到硬件资源对应的硬件中。0111 在内核空间,虚拟资源分配装置读取轻量级进程的控制数据块中保存的用户级线程对应。
32、的硬件资源,并加载到硬件资源对应的硬件中,可以包括:虚拟资源分配装置在第二数据结构中读取用户级线程对应硬件资源,并加载到硬件资源对应的硬件中。0112 本方案,通过从第一数据结构中读取用户级线程对应硬件资源,以实现在用户空间恢复用户级线程对应硬件资源,通过在第二数据结构中读取用户级线程对应硬件资源,以实现在内核空间恢复用户级线程对应硬件资源,从而更准确地位用户级线程恢复硬件资源。0113 具体地,在确定性重放应用中,在上述方案基础上,当用户级线程挂起时包括以下步骤:0114 步骤1001、当用户级线程挂起时,虚拟资源分配装置在本地读取用户级线程的标量时钟。0115 可选的,当用户级线程的挂起是。
33、由于轻量级进程挂起引起时,步骤1001:具体为虚拟资源分配装置在本地读取轻量级进程绑定的所有用户级线程的标量时钟。0116 步骤1002、将用户级线程的标量时钟写入第一数据结构。0117 步骤1003、将轻量级进程下与所述轻量级进程绑定的用户级线程的标量时钟写入第二数据结构。0118 步骤1002实现在用户空间保存用户级线程对应硬件资源;步骤步骤1003实现在说 明 书CN 104461730 A7/13页10内核空间保存用户级线程对应硬件资源。在用户空间保存和在内核空间保存没有先后时间顺序。0119 其中,确定性重放中,为维护时间上下顺序关系,需要保存的硬件资源为标量时钟,因此当用户级线程挂。
34、起时,虚拟资源分配装置在本地读取用户级线程的标量时钟。虚拟资源分配装置可以在本地处理器的标量时钟寄存器中读取用户级线程的标量时钟。然后将该值写入第一数据结构,该第一数据结构可以记为Thread_ScalarClock(线程_标量时钟),以实现在用户空间保存用户级线程对应硬件资源。0120 当轻量级进程挂起时,虚拟资源分配装置可以在本地处理器的标量时钟寄存器中读取轻量级进程下所有用户级线程的标量时钟。然后将该值写入第二数据结构,该第二数据结构可以记为LWP_ScalarClock(轻量级进程_标量时钟),以实现在内核空间保存用户级线程对应硬件资源。0121 本方案,通过在本地读取用户级线程的标量。
35、时钟和轻量级进程下所有用户级线程的标量时钟,分别写入第一数据结构和第二数据结构,可以准确地保存用户级线程对应的硬件资源,从而准确地实现事务性重放方法。0122 相应地,在上述方案基础上,当用户级线程重新调度时,虚拟资源分配装置在第一数据结构中读取用户级线程对应硬件资源,并加载到相应的硬件中,可以包括以下步骤:0123 步骤1004、虚拟资源分配装置在第一数据结构中读取用户级线程的标量时钟。0124 步骤1005、将用户级线程的标量时钟加载到标量时钟对应的的硬件中。0125 当轻量级进程重新调度时,虚拟资源分配装置在第二数据结构中读取用户级线程对应硬件资源,并加载到相应的硬件中,可以包括以下步骤。
36、:0126 步骤1006、虚拟资源分配装置在第二数据结构中读取轻量级进程下所有用户级线程的标量时钟。0127 步骤1007、将轻量级进程下与轻量级进程绑定的用户级线程的标量时钟加载到标量时钟对应的硬件中。0128 步骤1004、步骤1005实现在用户空间恢复用户级线程对应硬件资源;步骤1006、步骤1007实现在内核空间恢复用户级线程对应硬件资源。在用户空间恢复和在内核空间恢复没有先后时间顺序。0129 其中,在确定性重放中,当用户级线程重新调度时,虚拟资源分配装置可以在用户级线程的控制数据块中的第一数据结构读取用户级线程的标量时钟值Thread_ScalarClock,然后将该值写入本地处理。
37、器的标量时钟寄存器,即加载到相应的硬件中。以实现在用户空间恢复用户级线程对应的硬件资源。0130 当轻量级进程重新调度时,虚拟资源分配装置可以在轻量级进程的控制数据块中的第二数据结构读取用户级线程的标量时钟值LWP_ScalarClock,然后将该值写入本地处理器的标量时钟寄存器,即加载到相应的硬件中。以实现在内核空间恢复用户级线程对应的硬件资源。0131 本方案,通过从第一数据结构和第二数据结构中,分别读取用户级线程的标量时钟和轻量级进程下所有用户级线程的标量时钟,并加载到相应的硬件,可以准确地恢复用户级线程对应的硬件资源,从而准确地实现确定性重放方法。0132 具体地,在事务内存应用中,在上述方案基础上,当用户级线程挂起时,包括以下说 明 书CN 104461730 A10。