一種虛擬資源分配方法及裝置制造方法
【專利摘要】本發(fā)明實施例公開一種虛擬資源分配方法及裝置,應(yīng)用于計算機(jī)領(lǐng)域,能夠避免進(jìn)程上下文切換過程中對用戶級線程的切換遺漏。該方法包括:在用戶級線程掛起時,虛擬資源分配裝置在用戶級線程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)硬件資源;所述虛擬資源分配裝置在所述用戶級線程對應(yīng)的輕量級進(jìn)程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)的硬件資源。本發(fā)明的實施例應(yīng)用于虛擬資源分配。
【專利說明】一種虛擬資源分配方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī),尤其涉及一種虛擬資源分配方法及裝置。
【背景技術(shù)】
[0002]在進(jìn)程上下文切換時,保存用戶級線程的相關(guān)硬件狀態(tài)。該方法被廣泛的應(yīng)用于事務(wù)性內(nèi)存和確定性重放等硬件實現(xiàn)方法中。在上述應(yīng)用中,需要區(qū)分不同用戶級線程。例如在確定性重放中,需要檢查來自不同用戶級線程的訪存沖突并將其記錄,因此,在用戶級線程發(fā)生切換時,需要保存并更新與用戶線程相關(guān)的硬件資源。再例如在事務(wù)內(nèi)存中,一個事務(wù)是屬于一個用戶級線程的,在用戶級線程發(fā)生切換時,我們需要得知該事件的發(fā)生,并且保存該用戶級線程事務(wù)相關(guān)的狀態(tài)。否則,無法保證事務(wù)的原子性。
[0003]基于共享存儲的多線程模型中的1-on-l模型中,用戶級線程與輕量級進(jìn)程之間是一一對應(yīng)的關(guān)系,現(xiàn)有的方法,在保存用戶級線程相關(guān)硬件資源的操作,是在進(jìn)程上下文切換時發(fā)生的,在1-on-l的模型中,現(xiàn)有的方法是可行的。
[0004]但是,在基于共享存儲的多線程模型中的M-on-N模型中,用戶級線程與輕量級進(jìn)程之間存在多種對應(yīng)關(guān)系。其中,用戶級線程,是通過用戶庫實現(xiàn)的。輕量級進(jìn)程,是內(nèi)核支持的用戶級線程,與其它輕量級進(jìn)程共享地址空間與進(jìn)程資源。輕量級進(jìn)程與內(nèi)核態(tài)線程綁定。用戶級線程通過與輕量級進(jìn)程綁定獲取處理器資源。內(nèi)核不知道用戶級線程的存在,用戶級線程的切換可能發(fā)生在用戶空間。而該切換的發(fā)生,內(nèi)核無法得知,因此,在進(jìn)程上下文切換時保存與用戶級線程相關(guān)硬件資源的方法不夠精確,會漏掉在用戶級線程的切換,給事務(wù)內(nèi)存、確定性重放及數(shù)據(jù)競爭檢查等方法帶來嚴(yán)重的準(zhǔn)確性隱患。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供一種虛擬資源分配方法及裝置,能夠避免進(jìn)程上下文切換過程中對用戶級線程的切換遺漏,提高事務(wù)內(nèi)存、確定性重放及數(shù)據(jù)競爭檢查等方法的準(zhǔn)確性。
[0006]第一方面,本發(fā)明實施例提供一種虛擬資源分配方法,包括:
[0007]在用戶級線程掛起時,虛擬資源分配裝置在用戶級線程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)硬件資源;
[0008]所述虛擬資源分配裝置在所述用戶級線程對應(yīng)的輕量級進(jìn)程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)的硬件資源。
[0009]結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,所述方法還包括:
[0010]所述虛擬資源分配裝置讀取所述用戶級線程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)硬件資源,并加載到所述硬件資源對應(yīng)的硬件中;
[0011]所述虛擬資源分配裝置讀取所述輕量級進(jìn)程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)的硬件資源,并加載到所述硬件資源對應(yīng)的硬件中。
[0012]結(jié)合第一方面和第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述虛擬資源分配裝置在用戶級線程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)硬件資源,具體包括:
[0013]所述虛擬資源分配裝置在所述用戶級線程的控制數(shù)據(jù)塊中增加第一數(shù)據(jù)結(jié)構(gòu);
[0014]將所述用戶級線程對應(yīng)硬件資源保存至所述第一數(shù)據(jù)結(jié)構(gòu);
[0015]所述虛擬資源分配裝置讀取所述用戶級線程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)硬件資源,并加載到所述硬件資源對應(yīng)的硬件中,具體包括:
[0016]所述虛擬資源分配裝置在所述第一數(shù)據(jù)結(jié)構(gòu)中讀取所述用戶級線程對應(yīng)硬件資源,并加載到所述硬件資源對應(yīng)硬件中。
[0017]結(jié)合第一方面和第一方面的第一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述虛擬資源分配裝置在輕量級進(jìn)程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)的硬件資源,具體包括:
[0018]所述虛擬資源分配裝置在所述輕量級進(jìn)程的控制數(shù)據(jù)塊中增加第二數(shù)據(jù)結(jié)構(gòu);
[0019]將所述用戶級線程對應(yīng)硬件資源保存至所述第二數(shù)據(jù)結(jié)構(gòu);
[0020]所述虛擬資源分配裝置讀取所述輕量級進(jìn)程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)的硬件資源,并加載到所述硬件資源對應(yīng)的硬件中,具體包括:
[0021]所述虛擬資源分配裝置在所述第二數(shù)據(jù)結(jié)構(gòu)中讀取所述用戶級線程對應(yīng)硬件資源,并加載到所述硬件資源對應(yīng)的硬件中。
[0022]結(jié)合第一方面,在第四種可能的實現(xiàn)方式中,所述方法還包括:
[0023]當(dāng)所述用戶級線程掛起時,所述虛擬資源分配裝置在本地讀取所述用戶級線程的硬件資源。
[0024]結(jié)合第一方面,在第五種可能的實現(xiàn)方式中,所述方法還包括:
[0025]當(dāng)所述輕量級進(jìn)程掛起時,所述虛擬資源分配裝置在本地讀取所述輕量級進(jìn)程綁定的所有用戶級線程的硬件資源。
[0026]結(jié)合第一方面或第一方面任種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,所述硬件資源包括:用戶級線程對應(yīng)的標(biāo)量時鐘、讀集合和寫集合或向量時鐘。
[0027]第二方面,本發(fā)明實施例提供一種虛擬資源分配裝置,包括:
[0028]第一保存單元,用于在用戶級線程掛起時在用戶級線程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)硬件資源;
[0029]第二保存單元,用于在所述用戶級線程對應(yīng)的輕量級進(jìn)程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)的硬件資源。
[0030]結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,所述裝置還包括:
[0031]第一加載單元,用于讀取所述第一保存單元在所述用戶級線程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)硬件資源,并加載到所述硬件資源對應(yīng)的硬件中;
[0032]第二加載單元,用于讀取所述第二保存單元在所述輕量級進(jìn)程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)的硬件資源,并加載到所述硬件資源對應(yīng)的硬件中。
[0033]結(jié)合第二方面和第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述第一保存單元包括:
[0034]第一增加子單元,用于在所述用戶級線程的控制數(shù)據(jù)塊中增加第一數(shù)據(jù)結(jié)構(gòu);
[0035]第一保存子單元,用于將所述用戶級線程對應(yīng)硬件資源保存至所述第一增加子單元增加的所述第一數(shù)據(jù)結(jié)構(gòu);
[0036]所述第一加載單元,具體用于:
[0037]在所述第一增加子單元增加的所述第一數(shù)據(jù)結(jié)構(gòu)中讀取所述用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中。
[0038]結(jié)合第二方面和第一方面的第一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述第二保存單元包括:
[0039]第二增加子單元,用于在所述輕量級進(jìn)程的控制數(shù)據(jù)塊中增加第二數(shù)據(jù)結(jié)構(gòu);
[0040]第二保存子單元,用于將所述用戶級線程對應(yīng)硬件資源保存至所述第二增加子單元增加的所述第二數(shù)據(jù)結(jié)構(gòu);
[0041]所述第二加載單元,具體用于:
[0042]在所述第二增加子單元增加的所述第二數(shù)據(jù)結(jié)構(gòu)中讀取所述用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中。
[0043]結(jié)合第二方面,在第四種可能的實現(xiàn)方式中,所述裝置還包括:
[0044]第一讀取單元,用于當(dāng)所述用戶級線程掛起時,所述虛擬資源分配裝置在本地讀取所述用戶級線程的硬件資源。
[0045]結(jié)合第二方面,在第五種可能的實現(xiàn)方式中,所述裝置還包括:
[0046]第二讀取單元,用于當(dāng)所述輕量級進(jìn)程掛起時,所述虛擬資源分配裝置在本地讀取所述輕量級進(jìn)程綁定的所有用戶級線程的硬件資源。
[0047]結(jié)合第二方面或第二方面的任意一種可能的實現(xiàn)方式,所述硬件資源包括:用戶級線程對應(yīng)的標(biāo)量時鐘、讀集合和寫集合或向量時鐘。
[0048]本發(fā)明實施例提供的虛擬資源分配方法及裝置,通過在用戶空間和內(nèi)核空間同時為用戶級線程虛擬硬件資源,能夠準(zhǔn)確識別用戶級線程,并準(zhǔn)確的為用戶級線程虛擬硬件資源,能夠避免進(jìn)程上下文切換過程中對用戶級線程的切換遺漏,提高事務(wù)內(nèi)存、確定性重放及數(shù)據(jù)競爭檢查等方法的準(zhǔn)確性。
【專利附圖】
【附圖說明】
[0049]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹。
[0050]圖1為本發(fā)明的實施例提供的一種虛擬資源分配方法的流程圖示意圖;
[0051]圖2為為本發(fā)明的又一實施例提供的一種虛擬資源分配方法的流程圖示意圖;
[0052]圖3為本發(fā)明實施例提供的一種虛擬資源分配裝置的結(jié)構(gòu)示意圖;
[0053]圖4為本發(fā)明又一實施例提供的一種虛擬資源分配裝置的結(jié)構(gòu)示意圖;
[0054]圖5為本發(fā)明另一實施例提供的一種虛擬資源分配裝置的結(jié)構(gòu)示意圖;
[0055]圖6為本發(fā)明再一實施例提供的一種虛擬資源分配裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0056]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。
[0057]圖1為本發(fā)明的實施例提供的一種虛擬資源分配方法的流程圖示意圖。本發(fā)明實施例適用于操作系統(tǒng)中為用戶級線程虛擬硬件資源,該方法通常由虛擬資源分配裝置執(zhí)行,該虛擬資源分配裝置一般為計算機(jī)或計算機(jī)中的功能單元或模塊。具體參考圖1,可以包括以下步驟:
[0058]步驟10、在用戶級線程掛起時,虛擬資源分配裝置在用戶級線程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)硬件資源。
[0059]步驟20、虛擬資源分配裝置在用戶級線程對應(yīng)的輕量級進(jìn)程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)的硬件資源。
[0060]以上步驟的序號并不代表各步驟之間時序的先后順序,只是為了在實現(xiàn)上交代清楚各步驟的不同,例如步驟10也可以先于步驟20執(zhí)行或與步驟20同時執(zhí)行。
[0061]在M-on-N的多線程實現(xiàn)模型中,用戶級線程的切換可能發(fā)生在用戶空間,因此,除了需要在內(nèi)核空間為用戶級線程虛擬硬件資源還需要在用戶空間為用戶級線程虛擬硬件資源。當(dāng)然本方案也適用于1-on-l的多線程實現(xiàn)模型,在1-on-l的多線程實現(xiàn)模型中,由于用戶級線程都是與輕量級進(jìn)程綁定的,而輕量級進(jìn)程是內(nèi)核調(diào)度的基本單元,因此,只需要內(nèi)核空間為用戶級線程虛擬硬件資源。
[0062]步驟10中,在用戶級線程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)硬件資源是指,是指在用戶空間保存用戶級線程對應(yīng)硬件資源,硬件資源可以包括:CPU (CentralProcessing Unit,中央處理器)、I/0(Input/0utput,輸入/輸出)、文件、標(biāo)量時鐘、向量時鐘、讀集合、寫集合、內(nèi)存及指令數(shù)等資源。步驟20中,在輕量級進(jìn)程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)的硬件資源,是指在內(nèi)核空間保存用戶級線程對應(yīng)硬件資源。
[0063]用戶級線程掛起分為兩種情況:
[0064]第一種情況:在用戶空間中,用戶級線程掛起。
[0065]將用戶級線程對應(yīng)的硬件資源保存在用戶級線程的控制數(shù)據(jù)塊中,即步驟10。
[0066]第二種情況:在內(nèi)核空間中隨著與用戶級線程綁定的輕量級進(jìn)程的掛起,用戶級線程掛起。
[0067]因為輕量級的進(jìn)程掛起發(fā)生在內(nèi)核態(tài),內(nèi)核不知道用戶級線程的具體信息。但是,輕量級進(jìn)程掛起以后,用戶級線程也會掛起,并且用戶級線程與輕量級進(jìn)程的綁定關(guān)系不會變化,因此,我們將該用戶級線程對應(yīng)的硬件資源保存在輕量級進(jìn)程的控制數(shù)據(jù)塊中,即步驟20。
[0068]本方案,用戶級線程掛起時,通過既在用戶級線程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)硬件資源,也在輕量級進(jìn)程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)的硬件資源,即同時在用戶空間和內(nèi)核空間同時為用戶級線程虛擬硬件資源,可以準(zhǔn)確識別用戶級線程,并準(zhǔn)確的為用戶級線程虛擬硬件資源,提高了事務(wù)內(nèi)存、數(shù)據(jù)競爭檢查和確定性重放等方法的準(zhǔn)確性。
[0069]當(dāng)用戶級線程重新調(diào)度時,需要恢復(fù)該用戶級線程對應(yīng)的硬件資源,參考圖2,圖2為本發(fā)明的又一實施例提供的一種虛擬資源分配方法的流程圖示意圖,本方案可以包括以下步驟:
[0070]步驟30、虛擬資源分配裝置讀取用戶級線程的控制數(shù)據(jù)塊中保存的用戶級線程對應(yīng)硬件資源,并加載到硬件資源對應(yīng)的硬件中。
[0071]步驟40、虛擬資源分配裝置讀取輕量級進(jìn)程的控制數(shù)據(jù)塊中保存的用戶級線程對應(yīng)的硬件資源,并加載到硬件資源對應(yīng)的硬件中。
[0072]恢復(fù)該用戶級線程對應(yīng)的硬件資源,分為兩種情況:
[0073]第一種情況,在用戶空間對用戶級線程重新調(diào)度。
[0074]具體包括步驟30中,讀取用戶級線程的控制數(shù)據(jù)塊中保存的用戶級線程對應(yīng)硬件資源,并加載到硬件資源對應(yīng)的硬件中。
[0075]第二種情況,在內(nèi)核空間對輕量級進(jìn)程重新調(diào)度,此時與之綁定的用戶級線程也會恢復(fù)調(diào)度執(zhí)行。
[0076]具體包括步驟40中,讀取輕量級進(jìn)程的控制數(shù)據(jù)塊中保存的用戶級線程對應(yīng)的硬件資源,并加載到硬件資源對應(yīng)的硬件中。
[0077]本方案,在用戶級線程重新調(diào)度時,通過既在在用戶級線程的控制數(shù)據(jù)塊中恢復(fù)用戶級線程對應(yīng)硬件資源,也在在輕量級進(jìn)程的控制數(shù)據(jù)塊中恢復(fù)用戶級線程對應(yīng)的硬件資源,即同時在在用戶空間和內(nèi)核空間同時恢復(fù)用戶級線程對應(yīng)的硬件資源,可以準(zhǔn)確識別用戶級線程,從而準(zhǔn)確的為用戶級線程恢復(fù)對應(yīng)的硬件資源。
[0078]在上述方案基礎(chǔ)上,虛擬資源分配裝置在用戶級線程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)硬件資源,可以包括以下步驟:
[0079]步驟101、虛擬資源分配裝置在用戶級線程的控制數(shù)據(jù)塊中增加第一數(shù)據(jù)結(jié)構(gòu);
[0080]步驟102、將用戶級線程對應(yīng)硬件資源保存至第一數(shù)據(jù)結(jié)構(gòu)。
[0081]其中,用戶級線程的控制數(shù)據(jù)塊中一般包括以下資源:
[0082](I)線程號(Thread ID)
[0083](2)寄存器狀態(tài)(指令指針PC與堆棧指針SP)
[0084](3)堆棧(Stack)
[0085](4)信號屏蔽位(Signal Mask)
[0086](5)優(yōu)先級(Pr1rity)
[0087](6)用戶級線程私有存儲(Thread-local Storage)。
[0088]在用戶級線程的控制數(shù)據(jù)塊中增加第一數(shù)據(jù)結(jié)構(gòu),用于保存與用戶級線程相關(guān)的硬件資源,即(7)第一新增數(shù)據(jù)結(jié)構(gòu),該第一新增數(shù)據(jù)結(jié)構(gòu),可以根據(jù)不同的應(yīng)用分別對應(yīng)不同的硬件資源。例如在事務(wù)內(nèi)存應(yīng)用中,對應(yīng)讀集合和寫集合;在數(shù)據(jù)競爭檢查應(yīng)用中,對應(yīng)向量時鐘;在確定性重放應(yīng)用中,對應(yīng)標(biāo)量時鐘。
[0089]虛擬資源分配裝置將用戶級線程對應(yīng)硬件資源保存至第一數(shù)據(jù)結(jié)構(gòu)中,以在用戶空間保存用戶級線程對應(yīng)硬件資源。
[0090]本方案通過第一數(shù)據(jù)結(jié)構(gòu),在用戶空間保存用戶級線程對應(yīng)硬件資源。
[0091]在上述方案基礎(chǔ)上,虛擬資源分配裝置在輕量級進(jìn)程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)的硬件資源,可以包括以下步驟:
[0092]步驟201、虛擬資源分配裝置在輕量級進(jìn)程的控制數(shù)據(jù)塊中增加第二數(shù)據(jù)結(jié)構(gòu);
[0093]步驟202、將所述用戶級線程對應(yīng)硬件資源保存至第二數(shù)據(jù)結(jié)構(gòu)。
[0094]其中,輕量級進(jìn)程的控制數(shù)據(jù)塊中一般包括以下資源:
[0095](I)輕量級進(jìn)程號(LWP ID)
[0096](2)寄存器狀態(tài)(指令指針PC與堆棧指針SP)
[0097](3)信號屏蔽掩碼 Signal Mask
[0098](4)可選的信號堆棧與不同堆棧的開關(guān)掩碼(Alternate signal stack and masksfor alternate stack disable and onstack)
[0099](5)用戶虛擬時間報警(User and user+system virtual time alarms)
[0100](6)用戶態(tài)與系統(tǒng)態(tài) CPU 利用率(User time and system CPU usage)
[0101](7)性能狀態(tài)(Profiling state)
[0102](8)調(diào)度優(yōu)先級與分類(Scheduling class and pr1rity)
[0103](9)第二數(shù)據(jù)結(jié)構(gòu)(New Feature hardware resource)
[0104]其中,在輕量級進(jìn)程的控制數(shù)據(jù)塊中增加(9)第二數(shù)據(jù)結(jié)構(gòu),用于保存與用戶級線程相關(guān)的硬件資源,根據(jù)不同的應(yīng)用該第二新增數(shù)據(jù)結(jié)構(gòu)對應(yīng)不同的硬件資源。例如在事務(wù)內(nèi)存應(yīng)用中,對應(yīng)讀集合和寫集合;在數(shù)據(jù)競爭檢查應(yīng)用中,對應(yīng)向量時鐘;在確定性重放應(yīng)用中,對應(yīng)標(biāo)量時鐘。
[0105]虛擬資源分配裝置將用戶級線程對應(yīng)硬件資源保存至第二數(shù)據(jù)結(jié)構(gòu)中,以在內(nèi)核空間保存用戶級線程對應(yīng)硬件資源。
[0106]本方案通過第二數(shù)據(jù)結(jié)構(gòu),在內(nèi)核空間保存用戶級線程對應(yīng)硬件資源。
[0107]進(jìn)一步可選的,在步驟10之前,該方案還包括:
[0108]當(dāng)用戶級線程掛起時,虛擬資源分配裝置在本地讀取用戶級線程的硬件資源。
[0109]可選的,當(dāng)用戶級線程的掛起是由于輕量級進(jìn)程掛起引起時,用戶級線程掛起之后在步驟201之前還包括:虛擬資源分配裝置在本地讀取輕量級進(jìn)程綁定的所有用戶級線程的硬件資源。
[0110]相應(yīng)地,當(dāng)用戶級線程恢復(fù)調(diào)度執(zhí)行時,在用戶空間,虛擬資源分配裝置讀取用戶級線程的控制數(shù)據(jù)塊中保存的用戶級線程對應(yīng)硬件資源,并加載到硬件資源對應(yīng)的硬件中,可以包括:虛擬資源分配裝置在第一數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到硬件資源對應(yīng)的硬件中。
[0111]在內(nèi)核空間,虛擬資源分配裝置讀取輕量級進(jìn)程的控制數(shù)據(jù)塊中保存的用戶級線程對應(yīng)的硬件資源,并加載到硬件資源對應(yīng)的硬件中,可以包括:虛擬資源分配裝置在第二數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到硬件資源對應(yīng)的硬件中。
[0112]本方案,通過從第一數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,以實現(xiàn)在用戶空間恢復(fù)用戶級線程對應(yīng)硬件資源,通過在第二數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,以實現(xiàn)在內(nèi)核空間恢復(fù)用戶級線程對應(yīng)硬件資源,從而更準(zhǔn)確地位用戶級線程恢復(fù)硬件資源。
[0113]具體地,在確定性重放應(yīng)用中,在上述方案基礎(chǔ)上,當(dāng)用戶級線程掛起時包括以下步驟:
[0114]步驟1001、當(dāng)用戶級線程掛起時,虛擬資源分配裝置在本地讀取用戶級線程的標(biāo)量時鐘。
[0115]可選的,當(dāng)用戶級線程的掛起是由于輕量級進(jìn)程掛起引起時,步驟1001:具體為虛擬資源分配裝置在本地讀取輕量級進(jìn)程綁定的所有用戶級線程的標(biāo)量時鐘。
[0116]步驟1002、將用戶級線程的標(biāo)量時鐘寫入第一數(shù)據(jù)結(jié)構(gòu)。
[0117]步驟1003、將輕量級進(jìn)程下與所述輕量級進(jìn)程綁定的用戶級線程的標(biāo)量時鐘寫入第二數(shù)據(jù)結(jié)構(gòu)。
[0118]步驟1002實現(xiàn)在用戶空間保存用戶級線程對應(yīng)硬件資源;步驟步驟1003實現(xiàn)在內(nèi)核空間保存用戶級線程對應(yīng)硬件資源。在用戶空間保存和在內(nèi)核空間保存沒有先后時間順序。
[0119]其中,確定性重放中,為維護(hù)時間上下順序關(guān)系,需要保存的硬件資源為標(biāo)量時鐘,因此當(dāng)用戶級線程掛起時,虛擬資源分配裝置在本地讀取用戶級線程的標(biāo)量時鐘。虛擬資源分配裝置可以在本地處理器的標(biāo)量時鐘寄存器中讀取用戶級線程的標(biāo)量時鐘。然后將該值寫入第一數(shù)據(jù)結(jié)構(gòu),該第一數(shù)據(jù)結(jié)構(gòu)可以記為Thread_ScalarClock(線程_標(biāo)量時鐘),以實現(xiàn)在用戶空間保存用戶級線程對應(yīng)硬件資源。
[0120]當(dāng)輕量級進(jìn)程掛起時,虛擬資源分配裝置可以在本地處理器的標(biāo)量時鐘寄存器中讀取輕量級進(jìn)程下所有用戶級線程的標(biāo)量時鐘。然后將該值寫入第二數(shù)據(jù)結(jié)構(gòu),該第二數(shù)據(jù)結(jié)構(gòu)可以記為LWP_ScalarCl0Ck (輕量級進(jìn)程_標(biāo)量時鐘),以實現(xiàn)在內(nèi)核空間保存用戶級線程對應(yīng)硬件資源。
[0121]本方案,通過在本地讀取用戶級線程的標(biāo)量時鐘和輕量級進(jìn)程下所有用戶級線程的標(biāo)量時鐘,分別寫入第一數(shù)據(jù)結(jié)構(gòu)和第二數(shù)據(jù)結(jié)構(gòu),可以準(zhǔn)確地保存用戶級線程對應(yīng)的硬件資源,從而準(zhǔn)確地實現(xiàn)事務(wù)性重放方法。
[0122]相應(yīng)地,在上述方案基礎(chǔ)上,當(dāng)用戶級線程重新調(diào)度時,虛擬資源分配裝置在第一數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中,可以包括以下步驟:
[0123]步驟1004、虛擬資源分配裝置在第一數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程的標(biāo)量時鐘。
[0124]步驟1005、將用戶級線程的標(biāo)量時鐘加載到標(biāo)量時鐘對應(yīng)的的硬件中。
[0125]當(dāng)輕量級進(jìn)程重新調(diào)度時,虛擬資源分配裝置在第二數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中,可以包括以下步驟:
[0126]步驟1006、虛擬資源分配裝置在第二數(shù)據(jù)結(jié)構(gòu)中讀取輕量級進(jìn)程下所有用戶級線程的標(biāo)量時鐘。
[0127]步驟1007、將輕量級進(jìn)程下與輕量級進(jìn)程綁定的用戶級線程的標(biāo)量時鐘加載到標(biāo)量時鐘對應(yīng)的硬件中。
[0128]步驟1004、步驟1005實現(xiàn)在用戶空間恢復(fù)用戶級線程對應(yīng)硬件資源;步驟1006、步驟1007實現(xiàn)在內(nèi)核空間恢復(fù)用戶級線程對應(yīng)硬件資源。在用戶空間恢復(fù)和在內(nèi)核空間恢復(fù)沒有先后時間順序。
[0129]其中,在確定性重放中,當(dāng)用戶級線程重新調(diào)度時,虛擬資源分配裝置可以在用戶級線程的控制數(shù)據(jù)塊中的第一數(shù)據(jù)結(jié)構(gòu)讀取用戶級線程的標(biāo)量時鐘值ThreacLScalarClock,然后將該值寫入本地處理器的標(biāo)量時鐘寄存器,即加載到相應(yīng)的硬件中。以實現(xiàn)在用戶空間恢復(fù)用戶級線程對應(yīng)的硬件資源。
[0130]當(dāng)輕量級進(jìn)程重新調(diào)度時,虛擬資源分配裝置可以在輕量級進(jìn)程的控制數(shù)據(jù)塊中的第二數(shù)據(jù)結(jié)構(gòu)讀取用戶級線程的標(biāo)量時鐘值LWP_ScalarCl0Ck,然后將該值寫入本地處理器的標(biāo)量時鐘寄存器,即加載到相應(yīng)的硬件中。以實現(xiàn)在內(nèi)核空間恢復(fù)用戶級線程對應(yīng)的硬件資源。
[0131]本方案,通過從第一數(shù)據(jù)結(jié)構(gòu)和第二數(shù)據(jù)結(jié)構(gòu)中,分別讀取用戶級線程的標(biāo)量時鐘和輕量級進(jìn)程下所有用戶級線程的標(biāo)量時鐘,并加載到相應(yīng)的硬件,可以準(zhǔn)確地恢復(fù)用戶級線程對應(yīng)的硬件資源,從而準(zhǔn)確地實現(xiàn)確定性重放方法。
[0132]具體地,在事務(wù)內(nèi)存應(yīng)用中,在上述方案基礎(chǔ)上,當(dāng)用戶級線程掛起時,包括以下步驟:
[0133]步驟2001、當(dāng)用戶級線程掛起時,虛擬資源分配裝置在本地讀取用戶級線程的讀集合和寫集合;
[0134]可選的,當(dāng)用戶級線程的掛起是由于輕量級進(jìn)程掛起引起時,步驟2001:具體為虛擬資源分配裝置在本地讀取輕量級進(jìn)程綁定的所有用戶級線程的讀集合和寫集合。
[0135]步驟2002、將用戶級線程的讀集合和寫集合寫入第一數(shù)據(jù)結(jié)構(gòu)。
[0136]步驟2003、將輕量級進(jìn)程下與輕量級進(jìn)程綁定的用戶級線程的讀集合和寫集合寫入第二數(shù)據(jù)結(jié)構(gòu)。
[0137]步驟2002實現(xiàn)在用戶空間保存用戶級線程對應(yīng)硬件資源;步驟2003實現(xiàn)在內(nèi)核空間保存用戶級線程對應(yīng)硬件資源。在用戶空間保存和在內(nèi)核空間保存沒有先后時間順序。
[0138]其中,事務(wù)內(nèi)存中,為保證一個事務(wù)在存儲層次上是原子執(zhí)行,S卩,沒有來自其它用戶級線程的訪存操作與事務(wù)內(nèi)的訪存操作發(fā)生數(shù)據(jù)交互,需要保存的硬件資源為讀集合和寫集合,因此當(dāng)用戶級線程掛起時,虛擬資源分配裝置在本地讀取用戶級線程的讀集合和寫集合。虛擬資源分配裝置可以在本地處理器的讀寫集合寄存器中讀取用戶級線程的讀集合和寫集合。然后將該值寫入第一數(shù)據(jù)結(jié)構(gòu),該第一數(shù)據(jù)結(jié)構(gòu)中的讀集合和寫集合可以分別記為Rsetl和Wsetl,以實現(xiàn)在用戶空間保存用戶級線程對應(yīng)硬件資源。
[0139]當(dāng)輕量級進(jìn)程掛起時,虛擬資源分配裝置可以在本地處理器的讀寫集合寄存器中讀取輕量級進(jìn)程下所有用戶級線程的讀集合和寫集合。然后將該值寫入第二數(shù)據(jù)結(jié)構(gòu),該第二數(shù)據(jù)結(jié)構(gòu)的讀集合和寫集合可以分別記為Rset2和Wset2,以實現(xiàn)在內(nèi)核空間保存用戶級線程對應(yīng)硬件資源。
[0140]本方案,通過在本地讀取用戶級線程的讀集合和寫集合和輕量級進(jìn)程下所有用戶級線程的讀集合和寫集合,分別寫入第一數(shù)據(jù)結(jié)構(gòu)和第二數(shù)據(jù)結(jié)構(gòu),可以準(zhǔn)確地保存用戶級線程對應(yīng)的硬件資源,從而準(zhǔn)確地實現(xiàn)事務(wù)內(nèi)存方法。
[0141]相應(yīng)地,在上述方案基礎(chǔ)上,當(dāng)用戶級線程重新調(diào)度時,虛擬資源分配裝置在第一數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中,可以包括以下步驟:
[0142]步驟2004、虛擬資源分配裝置在第一數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程的讀集合和寫集合;
[0143]步驟2005、將用戶級線程的讀集合和寫集合加載到相應(yīng)的硬件中。
[0144]當(dāng)輕量級進(jìn)程重新調(diào)度時,虛擬資源分配裝置在第二數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中,可以包括以下步驟:
[0145]步驟2006、虛擬資源分配裝置在第二數(shù)據(jù)結(jié)構(gòu)中讀取輕量級進(jìn)程下所有用戶級線程的讀集合和寫集合;
[0146]步驟2007、將輕量級進(jìn)程下與輕量級進(jìn)程綁定的用戶級線程的讀集合和寫集合加載到相應(yīng)的硬件中。
[0147]步驟2004、步驟2005實現(xiàn)在用戶空間恢復(fù)用戶級線程對應(yīng)硬件資源;步驟2006、步驟2007實現(xiàn)在內(nèi)核空間恢復(fù)用戶級線程對應(yīng)硬件資源。在用戶空間恢復(fù)和在內(nèi)核空間恢復(fù)沒有先后時間順序。
[0148]其中,在事務(wù)內(nèi)存中,當(dāng)用戶級線程重新調(diào)度時,虛擬資源分配裝置可以在用戶級線程的控制數(shù)據(jù)塊中的第一數(shù)據(jù)結(jié)構(gòu)讀取用戶級線程的讀集合和寫集合,即Rsetl和Wsetl,然后將該值寫入本地處理器的讀寫集合寄存器,S卩加載到相應(yīng)的硬件中。以實現(xiàn)在用戶空間恢復(fù)用戶級線程對應(yīng)的硬件資源。
[0149]當(dāng)輕量級進(jìn)程重新調(diào)度時,虛擬資源分配裝置可以在輕量級進(jìn)程的控制數(shù)據(jù)塊中的第二數(shù)據(jù)結(jié)構(gòu)讀取用戶級線程的讀集合和寫集合,即Rset2和Wset2,然后將該值寫入本地處理器的讀寫集合寄存器,即加載到相應(yīng)的硬件中。以實現(xiàn)在內(nèi)核空間恢復(fù)用戶級線程對應(yīng)的硬件資源。
[0150]本方案,通過從第一數(shù)據(jù)結(jié)構(gòu)和第二數(shù)據(jù)結(jié)構(gòu)中,分別取用戶級線程的讀集合與寫集合和輕量級進(jìn)程下所有用戶級線程的讀集合與寫集合,并加載到相應(yīng)的硬件,可以準(zhǔn)確地恢復(fù)用戶級線程對應(yīng)的硬件資源,從而準(zhǔn)確地實現(xiàn)事務(wù)內(nèi)存方法。
[0151]具體地,在數(shù)據(jù)競爭檢查應(yīng)用中,在上述方案基礎(chǔ)上,當(dāng)用戶級線程掛起時,可以包括以下步驟:
[0152]步驟3001、虛擬資源分配裝置在本地讀取用戶級線程的向量時鐘;
[0153]可選的,當(dāng)用戶級線程的掛起是由于輕量級進(jìn)程掛起引起時,步驟3001:具體為虛擬資源分配裝置在本地讀取輕量級進(jìn)程綁定的所有用戶級線程的向量時鐘。
[0154]步驟3002、將用戶級線程的向量時鐘寫入第一數(shù)據(jù)結(jié)構(gòu)。
[0155]步驟3003、將輕量級進(jìn)程下與所述輕量級進(jìn)程綁定的用戶級線程的向量時鐘寫入第二數(shù)據(jù)結(jié)構(gòu)。
[0156]步驟3002實現(xiàn)在用戶空間保存用戶級線程對應(yīng)硬件資源;步驟3003實現(xiàn)在內(nèi)核空間保存用戶級線程對應(yīng)硬件資源。在用戶空間保存和在內(nèi)核空間保存沒有先后時間順序。
[0157]其中,數(shù)據(jù)競爭檢查中,需要保存的硬件資源為向量時鐘,因此當(dāng)用戶級線程掛起時,虛擬資源分配裝置在本地讀取用戶級線程的向量時鐘。虛擬資源分配裝置可以在本地處理器的向量時鐘寄存器中讀取用戶級線程的向量時鐘,然后將該值寫入第一數(shù)據(jù)結(jié)構(gòu),該第一數(shù)據(jù)結(jié)構(gòu)可以記為Thread_VectorClock(線程_向量時鐘),以實現(xiàn)在用戶空間保存用戶級線程對應(yīng)硬件資源。
[0158]當(dāng)輕量級進(jìn)程掛起時,除現(xiàn)有技術(shù)的操作外,虛擬資源分配裝置可以在本地處理器的向量時鐘寄存器中讀取輕量級進(jìn)程下所有用戶級線程的向量時鐘。然后將該值寫入第二數(shù)據(jù)結(jié)構(gòu),該第二數(shù)據(jù)結(jié)構(gòu)可以記為LWP_VectorScalarClock (輕量級進(jìn)程_向量時鐘),以在內(nèi)核空間保存用戶級線程對應(yīng)硬件資源。
[0159]本方案,通過在本地讀取用戶級線程的向量時鐘和輕量級進(jìn)程下所有用戶級線程的向量時鐘,分別寫入第一數(shù)據(jù)結(jié)構(gòu)和第二數(shù)據(jù)結(jié)構(gòu),可以準(zhǔn)確地保存用戶級線程對應(yīng)的硬件資源,從而準(zhǔn)確地實現(xiàn)數(shù)據(jù)競爭檢查方法。
[0160]相應(yīng)地,在上述方案基礎(chǔ)上,當(dāng)用戶級線程重新調(diào)度時,虛擬資源分配裝置在第一數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中,可以包括以下步驟:
[0161]步驟3004、當(dāng)用戶級線程重新調(diào)度時,虛擬資源分配裝置在第一數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程的向量時鐘;
[0162]步驟3005、將用戶級線程的向量時鐘加載到相應(yīng)的硬件中。
[0163]當(dāng)輕量級進(jìn)程重新調(diào)度時,虛擬資源分配裝置在第二數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中,可以包括以下步驟:
[0164]步驟3006、當(dāng)輕量級進(jìn)程重新調(diào)度時,虛擬資源分配裝置在第二數(shù)據(jù)結(jié)構(gòu)中讀取輕量級進(jìn)程下所有用戶級線程的向量時鐘;
[0165]步驟3007、將輕量級進(jìn)程下與所述輕量級進(jìn)程綁定的用戶級線程的向量時鐘加載到相應(yīng)的硬件中。
[0166]步驟3004、步驟3005實現(xiàn)在用戶空間恢復(fù)用戶級線程對應(yīng)硬件資源;步驟3006、步驟3007實現(xiàn)在內(nèi)核空間恢復(fù)用戶級線程對應(yīng)硬件資源。在用戶空間恢復(fù)和在內(nèi)核空間恢復(fù)沒有先后時間順序。
[0167]其中,在數(shù)據(jù)競爭檢查中,當(dāng)用戶級線程重新調(diào)度時,除現(xiàn)有技術(shù)的操作,虛擬資源分配裝置可以在用戶級線程的控制數(shù)據(jù)塊中的第一數(shù)據(jù)結(jié)構(gòu)讀取用戶級線程的向量時鐘值ThreacLVectorClock,然后將該值寫入本地處理器的向量時鐘寄存器,即加載到相應(yīng)的硬件中。以實現(xiàn)在用戶空間恢復(fù)用戶級線程對應(yīng)的硬件資源。
[0168]當(dāng)輕量級進(jìn)程重新調(diào)度時,除現(xiàn)有技術(shù)的操作,虛擬資源分配裝置可以在輕量級進(jìn)程的控制數(shù)據(jù)塊中的第二數(shù)據(jù)結(jié)構(gòu)讀取用戶級線程的向量時鐘值LWP_VeCt0rCl0Ck,然后將該值寫入本地處理器的向量時鐘寄存器,即加載到相應(yīng)的硬件中。以實現(xiàn)在內(nèi)核空間恢復(fù)用戶級線程對應(yīng)的硬件資源。
[0169]本方案,通過從第一數(shù)據(jù)結(jié)構(gòu)和第二數(shù)據(jù)結(jié)構(gòu)中,分別讀取用戶級線程的向量時鐘和輕量級進(jìn)程下所有用戶級線程的向量時鐘,并加載到相應(yīng)的硬件,可以準(zhǔn)確地恢復(fù)用戶級線程對應(yīng)的硬件資源,從而準(zhǔn)確地實現(xiàn)數(shù)據(jù)競爭方法。
[0170]圖3為本發(fā)明實施例提供的一種虛擬資源分配裝置的結(jié)構(gòu)示意圖,該虛擬資源分配裝置用于實現(xiàn)上述實施例的虛擬資源分配方法,參考圖3,該虛擬資源分配裝置包括:第一保存單元11和第二保存單元21。
[0171]其中,第一保存單元11,用于在用戶級線程掛起時在用戶級線程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)硬件資源。
[0172]第二保存單元21,用于在所述用戶級線程對應(yīng)的輕量級進(jìn)程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)的硬件資源。
[0173]在上述方案基礎(chǔ)上,該裝置還可以優(yōu)選包括:第一加載單元31和第二加載單元41。參考圖4所示,圖4為本發(fā)明又一實施例提供的一種虛擬資源分配裝置的結(jié)構(gòu)示意圖。
[0174]其中,第一加載單元31,用于讀取第一保存單元11在用戶級線程的控制數(shù)據(jù)塊中保存的用戶級線程對應(yīng)硬件資源,并加載到所述硬件資源對應(yīng)的硬件中。
[0175]第二加載單元41,用于讀取第二保存單元21在輕量級進(jìn)程的控制數(shù)據(jù)塊中保存的用戶級線程對應(yīng)的硬件資源,并加載到所述硬件資源對應(yīng)的硬件中。
[0176]進(jìn)一步地,第一保存單元11可以包括:第一增加子單元111和第一保存子單元112。
[0177]其中,第一增加子單元111,用于在用戶級線程的控制數(shù)據(jù)塊中增加第一數(shù)據(jù)結(jié)構(gòu);
[0178]第一保存子單元112,用于將用戶級線程對應(yīng)硬件資源保存至第一增加子單元111增加的第一數(shù)據(jù)結(jié)構(gòu);
[0179]具體地,第一加載單元31,具體用于:
[0180]在第一增加子單元111增加的第一數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中。
[0181]第二保存單元21可以包括:第二增加子單元211和第二保存子單元212。
[0182]第二增加子單元211,用于在輕量級進(jìn)程的控制數(shù)據(jù)塊中增加第二數(shù)據(jù)結(jié)構(gòu);
[0183]第二保存子單元212,用于將用戶級線程對應(yīng)硬件資源保存至第二增加子單元211增加的第二數(shù)據(jù)結(jié)構(gòu)。
[0184]第二加載單元41,具體用于:
[0185]在第二增加子單元211增加的第二數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中。
[0186]本方案,用戶級線程掛起時,通過第一保存單元既在用戶級線程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)硬件資源,通過第二保存單元也在輕量級進(jìn)程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)的硬件資源,即同時在用戶空間和內(nèi)核空間同時為用戶級線程虛擬硬件資源,可以準(zhǔn)確識別用戶級線程,并準(zhǔn)確的為用戶級線程虛擬硬件資源,提高了事務(wù)內(nèi)存、數(shù)據(jù)競爭檢查和確定性重放等方法的準(zhǔn)確性。
[0187]進(jìn)一步可選的,參照圖5所示,圖5為本發(fā)明另一實施例提供的一種虛擬資源分配裝置的結(jié)構(gòu)示意圖。虛擬資源分配裝置還包括:
[0188]第一讀取單元51a,用于當(dāng)用戶級線程掛起時,在本地讀取用戶級線程的硬件資源。
[0189]第二讀取單元51b,用于當(dāng)輕量級進(jìn)程掛起時,在本地讀取輕量級進(jìn)程綁定的所有用戶級線程的硬件資源。
[0190]可選的,硬件資源包括:用戶級線程對應(yīng)的標(biāo)量時鐘、讀集合和寫集合或向量時鐘。
[0191]圖6為本發(fā)明再一實施例提供的一種虛擬資源分配裝置的結(jié)構(gòu)示意圖。該虛擬資源分配裝置用于實現(xiàn)上述方法實施例提供的虛擬資源分配裝置方法,當(dāng)然該虛擬資源分配裝置可以為計算機(jī)或計算機(jī)上的功能實體,包括至少一個處理器61、存儲器62、及總線63,總線63用于實現(xiàn)處理器61、存儲器62之間的連接及通信,存儲器62用于存儲處理器61執(zhí)行的程序代碼及數(shù)據(jù),
[0192]該總線63可以是工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Industry Standard Architecture,簡稱為ISA)總線、外部設(shè)備互連(Peripheral Component,簡稱為PCI)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Extended Industry Standard Architecture,簡稱為 EISA)總線等,此處并不限定。該總線63可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖6中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。其中:
[0193]存儲器62用于存儲數(shù)據(jù)或可執(zhí)行程序代碼,其中程序代碼包括計算機(jī)操作指令,具體可以為:操作系統(tǒng)、應(yīng)用程序等。存儲器62可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。
[0194]處理器61可能是一個中央處理器(Central Processing Unit,簡稱為CPU),或者是特定集成電路(Applicat1n Specific Integrated Circuit,簡稱為ASIC),或者是被配置成實施本發(fā)明實施例的一個或多個集成電路。
[0195]處理器61用于通過執(zhí)行存儲器62中的程序代碼實現(xiàn)上述實施例中的虛擬資源分配方法,具體包括:
[0196]在用戶級線程掛起時,在用戶級線程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)硬件資源;
[0197]在用戶級線程對應(yīng)的輕量級進(jìn)程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)的硬件資源。
[0198]本方案,用戶級線程掛起時,通過既在用戶級線程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)硬件資源,也在輕量級進(jìn)程的控制數(shù)據(jù)塊中保存用戶級線程對應(yīng)的硬件資源,即同時在用戶空間和內(nèi)核空間同時為用戶級線程虛擬硬件資源,可以準(zhǔn)確識別用戶級線程,并準(zhǔn)確的為用戶級線程虛擬硬件資源,提高了事務(wù)內(nèi)存、數(shù)據(jù)競爭檢查和確定性重放等方法的準(zhǔn)確性。
[0199]在上述方案基礎(chǔ)上,處理器61還用于:
[0200]讀取所述用戶級線程的控制數(shù)據(jù)塊中保存的用戶級線程對應(yīng)硬件資源,并加載到硬件資源對應(yīng)的硬件中;
[0201]讀取輕量級進(jìn)程的控制數(shù)據(jù)塊中保存的用戶級線程對應(yīng)的硬件資源,并加載到硬件資源對應(yīng)的硬件中。
[0202]本方案,在用戶級線程重新調(diào)度時,通過既在在用戶級線程的控制數(shù)據(jù)塊中恢復(fù)用戶級線程對應(yīng)硬件資源,也在在輕量級進(jìn)程的控制數(shù)據(jù)塊中恢復(fù)用戶級線程對應(yīng)的硬件資源,即同時在在用戶空間和內(nèi)核空間同時恢復(fù)用戶級線程對應(yīng)的硬件資源,可以準(zhǔn)確識別用戶級線程,從而準(zhǔn)確的為用戶級線程恢復(fù)對應(yīng)的硬件資源。
[0203]進(jìn)一步可選的,處理器61具體用于:
[0204]在用戶級線程的控制數(shù)據(jù)塊中增加第一數(shù)據(jù)結(jié)構(gòu);
[0205]將用戶級線程對應(yīng)硬件資源保存至第一數(shù)據(jù)結(jié)構(gòu);
[0206]在第一數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到硬件資源對應(yīng)硬件中。
[0207]進(jìn)一步可選的,處理器61具體用于:
[0208]在輕量級進(jìn)程的控制數(shù)據(jù)塊中增加第二數(shù)據(jù)結(jié)構(gòu);
[0209]將用戶級線程對應(yīng)硬件資源保存至第二數(shù)據(jù)結(jié)構(gòu);
[0210]在第二數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,并加載到硬件資源對應(yīng)的硬件中。
[0211]本方案,通過從第一數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,以實現(xiàn)在用戶空間恢復(fù)用戶級線程對應(yīng)硬件資源,通過在第二數(shù)據(jù)結(jié)構(gòu)中讀取用戶級線程對應(yīng)硬件資源,以實現(xiàn)在內(nèi)核空間恢復(fù)用戶級線程對應(yīng)硬件資源,從而更準(zhǔn)確地位用戶級線程恢復(fù)硬件資源。
[0212]進(jìn)一步的處理器61還用于當(dāng)所述用戶級線程掛起時,在本地讀取所述用戶級線程的硬件資源;
[0213]或者,當(dāng)所述輕量級進(jìn)程掛起時,在本地讀取所述輕量級進(jìn)程綁定的所有用戶級線程的硬件資源。
[0214]可選的,硬件資源包括:用戶級線程對應(yīng)的標(biāo)量時鐘、讀集合和寫集合或向量時鐘。
[0215]本方案,通過在本地讀取用戶級線程的向量時鐘和輕量級進(jìn)程下所有用戶級線程的向量時鐘,分別寫入第一數(shù)據(jù)結(jié)構(gòu)和第二數(shù)據(jù)結(jié)構(gòu),可以準(zhǔn)確地保存用戶級線程對應(yīng)的硬件資源,從而準(zhǔn)確地實現(xiàn)數(shù)據(jù)競爭檢查方法。
[0216]通過以上的實施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以用硬件實現(xiàn),或固件實現(xiàn),或它們的組合方式來實現(xiàn)。當(dāng)使用軟件實現(xiàn)時,可以將上述功能存儲在計算機(jī)可讀介質(zhì)中或作為計算機(jī)可讀介質(zhì)上的一個或多個指令或代碼進(jìn)行傳輸。計算機(jī)可讀介質(zhì)包括計算機(jī)存儲介質(zhì)和通信介質(zhì),其中通信介質(zhì)包括便于從一個地方向另一個地方傳送計算機(jī)程序的任何介質(zhì)。存儲介質(zhì)可以是計算機(jī)能夠存取的任何可用介質(zhì)。以此為例但不限于:計算機(jī)可讀介質(zhì)可以包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲、磁盤存儲介質(zhì)或者其他磁存儲設(shè)備、或者能夠用于攜帶或存儲具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并能夠由計算機(jī)存取的任何其他介質(zhì)。此外。任何連接可以適當(dāng)?shù)某蔀橛嬎銠C(jī)可讀介質(zhì)。例如,如果軟件是使用同軸電纜、光纖光纜、雙絞線、數(shù)字用戶線(DSL)或者諸如紅外線、無線電和微波之類的無線技術(shù)從網(wǎng)站、服務(wù)器或者其他遠(yuǎn)程源傳輸?shù)?,那么同軸電纜、光纖光纜、雙絞線、DSL或者諸如紅外線、無線和微波之類的無線技術(shù)包括在所屬介質(zhì)的定影中。如本發(fā)明所使用的,盤(Disk)和碟(disc)包括壓縮光碟(⑶)、激光碟、光碟、數(shù)字通用光碟(DVD)、軟盤和藍(lán)光光碟,其中盤通常磁性的復(fù)制數(shù)據(jù),而碟則用激光來光學(xué)的復(fù)制數(shù)據(jù)。上面的組合也應(yīng)當(dāng)包括在計算機(jī)可讀介質(zhì)的保護(hù)范圍之內(nèi)。
[0217]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種虛擬資源分配方法,其特征在于,包括: 在用戶級線程掛起時,虛擬資源分配裝置在用戶級線程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)硬件資源; 所述虛擬資源分配裝置在所述用戶級線程對應(yīng)的輕量級進(jìn)程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)的硬件資源。
2.根據(jù)權(quán)利要求1所述的虛擬資源分配方法,其特征在于,所述方法還包括: 所述虛擬資源分配裝置讀取所述用戶級線程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)硬件資源,并加載到所述硬件資源對應(yīng)的硬件中; 所述虛擬資源分配裝置讀取所述輕量級進(jìn)程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)的硬件資源,并加載到所述硬件資源對應(yīng)的硬件中。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述虛擬資源分配裝置在用戶級線程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)硬件資源,具體包括: 所述虛擬資源分配裝置在所述用戶級線程的控制數(shù)據(jù)塊中增加第一數(shù)據(jù)結(jié)構(gòu); 將所述用戶級線程對應(yīng)硬件資源保存至所述第一數(shù)據(jù)結(jié)構(gòu); 所述虛擬資源分配裝置讀取所述用戶級線程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)硬件資源,并加載到所述硬件資源對應(yīng)的硬件中,具體包括: 所述虛擬資源分配裝置在所述第一數(shù)據(jù)結(jié)構(gòu)中讀取所述用戶級線程對應(yīng)硬件資源,并加載到所述硬件資源對應(yīng)硬件中。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述虛擬資源分配裝置在輕量級進(jìn)程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)的硬件資源,具體包括: 所述虛擬資源分配裝置在所述輕量級進(jìn)程的控制數(shù)據(jù)塊中增加第二數(shù)據(jù)結(jié)構(gòu); 將所述用戶級線程對應(yīng)硬件資源保存至所述第二數(shù)據(jù)結(jié)構(gòu); 所述虛擬資源分配裝置讀取所述輕量級進(jìn)程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)的硬件資源,并加載到所述硬件資源對應(yīng)的硬件中,具體包括: 所述虛擬資源分配裝置在所述第二數(shù)據(jù)結(jié)構(gòu)中讀取所述用戶級線程對應(yīng)硬件資源,并加載到所述硬件資源對應(yīng)的硬件中。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 當(dāng)所述用戶級線程掛起時,所述虛擬資源分配裝置在本地讀取所述用戶級線程的硬件資源。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 當(dāng)所述輕量級進(jìn)程掛起時,所述虛擬資源分配裝置在本地讀取所述輕量級進(jìn)程綁定的所有用戶級線程的硬件資源。
7.根據(jù)權(quán)利要求1-6任一項所述的方法,其特征在于,所述硬件資源包括:用戶級線程對應(yīng)的標(biāo)量時鐘、讀集合和寫集合或向量時鐘。
8.—種虛擬資源分配裝置,其特征在于,包括: 第一保存單元,用于在用戶級線程掛起時在用戶級線程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)硬件資源; 第二保存單元,用于在所述用戶級線程對應(yīng)的輕量級進(jìn)程的控制數(shù)據(jù)塊中保存所述用戶級線程對應(yīng)的硬件資源。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 第一加載單元,用于讀取所述第一保存單元在所述用戶級線程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)硬件資源,并加載到所述硬件資源對應(yīng)的硬件中; 第二加載單元,用于讀取所述第二保存單元在所述輕量級進(jìn)程的控制數(shù)據(jù)塊中保存的所述用戶級線程對應(yīng)的硬件資源,并加載到所述硬件資源對應(yīng)的硬件中。
10.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,所述第一保存單元包括: 第一增加子單元,用于在所述用戶級線程的控制數(shù)據(jù)塊中增加第一數(shù)據(jù)結(jié)構(gòu); 第一保存子單元,用于將所述用戶級線程對應(yīng)硬件資源保存至所述第一增加子單元增加的所述第一數(shù)據(jù)結(jié)構(gòu); 所述第一加載單元,具體用于: 在所述第一增加子單元增加的所述第一數(shù)據(jù)結(jié)構(gòu)中讀取所述用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中。
11.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,所述第二保存單元包括: 第二增加子單元,用于在所述輕量級進(jìn)程的控制數(shù)據(jù)塊中增加第二數(shù)據(jù)結(jié)構(gòu); 第二保存子單元,用于將所述用戶級線程對應(yīng)硬件資源保存至所述第二增加子單元增加的所述第二數(shù)據(jù)結(jié)構(gòu); 所述第二加載單元,具體用于: 在所述第二增加子單元增加的所述第二數(shù)據(jù)結(jié)構(gòu)中讀取所述用戶級線程對應(yīng)硬件資源,并加載到相應(yīng)的硬件中。
12.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 第一讀取單元,用于當(dāng)所述用戶級線程掛起時,所述虛擬資源分配裝置在本地讀取所述用戶級線程的硬件資源。
13.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 第二讀取單元,用于當(dāng)所述輕量級進(jìn)程掛起時,所述虛擬資源分配裝置在本地讀取所述輕量級進(jìn)程綁定的所有用戶級線程的硬件資源。
14.根據(jù)權(quán)利要求8-13任一項所述的裝置,其特征在于,所述硬件資源包括:用戶級線程對應(yīng)的標(biāo)量時鐘、讀集合和寫集合或向量時鐘。
【文檔編號】G06F9/50GK104461730SQ201310444885
【公開日】2015年3月25日 申請日期:2013年9月22日 優(yōu)先權(quán)日:2013年9月22日
【發(fā)明者】唐士斌, 唐志敏, 宋風(fēng)龍, 葉笑春 申請人:華為技術(shù)有限公司, 中國科學(xué)院計算技術(shù)研究所