進(jìn)程控制塊PCB,以及建立虛擬地址映射;所述第一線程的文件頭部,具體 為所述第一線程的二進(jìn)制文件頭部。
[0048] 第四方面,本發(fā)明實(shí)施例提供一種第二線程加載裝置,包括:
[0049] 獲取單元,用于獲取所述進(jìn)程加載信息,所述進(jìn)程加載信息用于指示開(kāi)始加載所 述第二線程;
[0050] 選擇單元,用于在所述獲取單元獲取到所述進(jìn)程加載信息后,獲取當(dāng)前時(shí)刻加載 所述進(jìn)程的系統(tǒng)的動(dòng)態(tài)負(fù)載信息,并結(jié)合系統(tǒng)知識(shí)庫(kù)選擇第二線程加載目標(biāo)核Core ;
[0051] 發(fā)送單元,用于發(fā)送所述第二線程加載目標(biāo)核Core至所述第一線程加載裝置,以 使得所述第一線程加載裝置在接收到所述第二線程加載目標(biāo)核Core后,填寫(xiě)所述第二線 程加載目標(biāo)核Core信息,并將所述第一線程加入指定的執(zhí)行隊(duì)列,從而完成進(jìn)程加載。
[0052] 在第一種可能的實(shí)現(xiàn)方式中,根據(jù)第四方面,所述第二線程加載裝置還包括:
[0053] 讀取單元,用于在所述選擇單元獲取當(dāng)前時(shí)刻加載所述進(jìn)程的系統(tǒng)的動(dòng)態(tài)負(fù)載信 息,并結(jié)合系統(tǒng)知識(shí)庫(kù)選擇第二線程加載目標(biāo)核Core之前,讀取親和性配置信息,其中,所 述親和性配置信息為選擇所述第二線程加載目標(biāo)核Core提供親和性運(yùn)算參數(shù)。
[0054] 在第二種可能的實(shí)現(xiàn)方式中,結(jié)合第四方面或第一種可能的實(shí)現(xiàn)方式,所述親和 性配置信息包括預(yù)編譯信息、編譯器解析、手動(dòng)配置、操作系統(tǒng)反饋中任意一種或多種的組 合。
[0055] 在第三種可能的實(shí)現(xiàn)方式中,結(jié)合第四方面或第一種可能的實(shí)現(xiàn)方式或第二種可 能的實(shí)現(xiàn)方式,所述第二線程加載裝置還包括:
[0056] 檢測(cè)單元,用于在所述選擇單元獲取當(dāng)前時(shí)刻加載所述進(jìn)程的系統(tǒng)的動(dòng)態(tài)負(fù)載信 息,并結(jié)合系統(tǒng)知識(shí)庫(kù)選擇第二線程加載目標(biāo)核Core之后,所述發(fā)送單元發(fā)送所述第二線 程加載目標(biāo)核Core至所述第一線程加載裝置之前,檢測(cè)所述第一線程加載裝置是否完成 了第一線程中的任務(wù)的執(zhí)行;
[0057] 存儲(chǔ)單元,用于若所述第一線程加載裝置未完成所述第一線程中的任務(wù)的執(zhí)行, 則存儲(chǔ)所述第二線程加載目標(biāo)核Core,以等待所述第一線程加載裝置完成所述第一線程中 的任務(wù)的執(zhí)行。
[0058] 在第四種可能的實(shí)現(xiàn)方式中,結(jié)合第四方面或第一種可能的實(shí)現(xiàn)方式至第三種可 能的實(shí)現(xiàn)方式,所述系統(tǒng)知識(shí)庫(kù)為選擇所述第二線程加載目標(biāo)核Core提供相應(yīng)的運(yùn)算參 數(shù);所述系統(tǒng)知識(shí)庫(kù)包括系統(tǒng)的硬件拓?fù)湫畔?、資源信息和系統(tǒng)服務(wù)運(yùn)行位置信息。
[0059] 第五方面,本發(fā)明實(shí)施例提供一種進(jìn)程加載系統(tǒng),包括具有上述任意特征的所述 第一線程加載裝置,以及具有上述任意特征的所述第二線程加載裝置。
[0060] 本發(fā)明實(shí)施例所提供的一種進(jìn)程加載方法、裝置及系統(tǒng),進(jìn)程包括第一線程和第 二線程,所述第一線程和所述第二線程之間存在通信關(guān)系,通過(guò)第一線程加載裝置獲取所 述進(jìn)程加載信息,所述進(jìn)程加載信息用于指示開(kāi)始加載所述第一線程,在所述第一線程加 載裝置獲取到所述進(jìn)程加載信息后,確認(rèn)所述第一線程的文件頭部是否合法,若所述第一 線程的文件頭部合法,所述第一線程加載裝置則執(zhí)行第一線程中的任務(wù),以及所述第一線 程加載裝置接收第二線程加載裝置發(fā)送的第二線程加載目標(biāo)核Core,在所述第一線程加載 裝置接收到所述第二線程加載目標(biāo)核Core后,填寫(xiě)所述第二線程加載目標(biāo)核Core信息,并 將所述第一線程加入指定的執(zhí)行隊(duì)列,從而完成進(jìn)程加載。通過(guò)該方案,在進(jìn)程加載的過(guò)程 中,將選擇進(jìn)程加載目標(biāo)核Core的過(guò)程分離,加快了進(jìn)程的加載時(shí)間,提高了用戶體驗(yàn)感。
【附圖說(shuō)明】
[0061] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0062]圖1為本發(fā)明實(shí)施例一提供的一種進(jìn)程加載方法的流程示意圖;
[0063] 圖2為傳統(tǒng)的Linux操作系統(tǒng)進(jìn)程加載的流程示意圖;
[0064] 圖3為本發(fā)明實(shí)施例二提供的一種進(jìn)程加載方法的流程示意圖;
[0065] 圖4為本發(fā)明實(shí)施例三提供的一種進(jìn)程加載方法的流程示意圖;
[0066] 圖5為本發(fā)明實(shí)施例提供的系統(tǒng)知識(shí)庫(kù)的結(jié)構(gòu)示意圖;
[0067] 圖6為本發(fā)明實(shí)施例四提供的一種進(jìn)程加載方法的流程示意圖;
[0068] 圖7為傳統(tǒng)的Helios操作系統(tǒng)進(jìn)行親和性調(diào)度的流程示意圖;
[0069] 圖8為本發(fā)明實(shí)施例提供的親和性配置信息的來(lái)源與其對(duì)應(yīng)的在親和性信息配 置文件中的位置關(guān)系圖;
[0070] 圖9為本發(fā)明實(shí)施例五提供的一種第一線程加載裝置的結(jié)構(gòu)示意圖一;
[0071] 圖10為本發(fā)明實(shí)施例五提供的一種第一線程加載裝置的結(jié)構(gòu)示意圖二;
[0072] 圖11為本發(fā)明實(shí)施例五提供的一種第一線程加載裝置的結(jié)構(gòu)示意圖三;
[0073] 圖12為本發(fā)明實(shí)施例六提供的一種第二線程加載裝置的結(jié)構(gòu)示意圖一;
[0074] 圖13為本發(fā)明實(shí)施例六提供的一種第二線程加載裝置的結(jié)構(gòu)示意圖二;
[0075] 圖14為本發(fā)明實(shí)施例六提供的一種第二線程加載裝置的結(jié)構(gòu)示意圖三;
[0076] 圖15為本發(fā)明實(shí)施例七提供的一種第一線程加載器的結(jié)構(gòu)示意圖一;
[0077] 圖16為本發(fā)明實(shí)施例七提供的一種第一線程加載器的結(jié)構(gòu)示意圖二;
[0078] 圖17為本發(fā)明實(shí)施例八提供的一種第二線程加載器的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0079] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0080] 另外,本文中術(shù)語(yǔ)"系統(tǒng)"和"網(wǎng)絡(luò)"在本文中常被可互換使用。本文中術(shù)語(yǔ)"和/ 或",僅僅是一種描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,可以 表示:?jiǎn)为?dú)存在A,同時(shí)存在A和B,單獨(dú)存在B這三種情況。另外,本文中字符"/",一般表 示前后關(guān)聯(lián)對(duì)象是一種"或"的關(guān)系。
[0081]實(shí)施例一
[0082]本發(fā)明實(shí)施例提供一種進(jìn)程加載方法,進(jìn)程包括第一線程和第二線程,所述第一 線程和所述第二線程之間存在通信關(guān)系,如圖1所示,該方法包括:
[0083] S101、第一線程加載裝置獲取所述進(jìn)程加載信息,所述進(jìn)程加載信息用于指示開(kāi) 始加載所述第一線程。
[0084] 眾核處理器一般采用具有一定系統(tǒng)差異性,如具有異構(gòu)特性、NUMA特性的系統(tǒng)結(jié) 構(gòu),其中,具有NUMA特性的系統(tǒng)結(jié)構(gòu)具有使眾多服務(wù)器像單一系統(tǒng)一樣工作,同時(shí)保留小 系統(tǒng)便于編程和管理的優(yōu)點(diǎn)。Mesh結(jié)構(gòu)作為具有NUMA特性的一個(gè)典型例子,具有結(jié)構(gòu)簡(jiǎn) 單,易于擴(kuò)展,通信效率高等優(yōu)點(diǎn)。但是,在當(dāng)前操作系統(tǒng)中進(jìn)程加載和選擇進(jìn)程加載目標(biāo) 核的過(guò)程為串行化的在一個(gè)線程內(nèi)完成的過(guò)程。以Linux操作系統(tǒng)為例,現(xiàn)有技術(shù)中進(jìn)程 加載的流程示意圖如圖2所示,首先,系統(tǒng)獲取進(jìn)程建立信息,建立進(jìn)程,進(jìn)而分析二進(jìn)制 文件頭、申請(qǐng)物理頁(yè)并填充參數(shù)、更新進(jìn)程LDT(LocalDescriptorTable,局部描述符表)、 建立邏輯地址映射與參數(shù)表指針、創(chuàng)建并填充PCB并更新上層進(jìn)程參數(shù),從而完成進(jìn)程加 載。其中,對(duì)進(jìn)程加載目標(biāo)核的選擇是在填寫(xiě)PCB過(guò)程中的一個(gè)步驟(如圖2中虛線框所標(biāo) 注的部分),當(dāng)創(chuàng)建并填充PCB的過(guò)程中需要填寫(xiě)進(jìn)程加載目標(biāo)核這個(gè)參數(shù)時(shí),調(diào)度函數(shù)會(huì) 通過(guò)進(jìn)程加載時(shí)的參數(shù)來(lái)選擇進(jìn)程加載目標(biāo)核。
[0085] 當(dāng)然,像Linux操作系統(tǒng)這種傳統(tǒng)的操作系統(tǒng),因?yàn)橄到y(tǒng)運(yùn)行平臺(tái)的核的數(shù)量比 較少,在選擇進(jìn)程加載目標(biāo)核的時(shí)候不會(huì)耗費(fèi)太多的時(shí)間,因此,串行化選擇進(jìn)程加載目標(biāo) 核并不會(huì)對(duì)進(jìn)程加載產(chǎn)生太大的影響。然而在眾核操作系統(tǒng)中,串行化選擇進(jìn)程加載目標(biāo) 核的過(guò)程不再是一個(gè)簡(jiǎn)單的動(dòng)作,需要耗費(fèi)大量的時(shí)間。這樣一來(lái),傳統(tǒng)的操作系統(tǒng)在進(jìn)行 進(jìn)程加載時(shí)所耗費(fèi)的時(shí)間就會(huì)大大增加,影響了進(jìn)程在眾核操作系統(tǒng)中的加載速度。
[0086] 本發(fā)明實(shí)施例所提供的一種進(jìn)程加載方法,進(jìn)程包括第一線程和第二線程,所述 第一線程和所述第二線程之間存在通信關(guān)系,能夠在進(jìn)程加載的過(guò)程中,將選擇進(jìn)程加載 目標(biāo)核Core的過(guò)程分離,加快了進(jìn)程的加載時(shí)間,提高了用戶體驗(yàn)感。首先,用于加載第一 線程的第一線程加載裝置獲取所述進(jìn)程加載信息,所述進(jìn)程加載信息用于指示開(kāi)始加載所 述第一線程。
[0087] S102、在所述第一線程加載裝置獲取到所述進(jìn)程加載信息后,確認(rèn)所述第一線程 的文件頭部是否合法。
[0088] S103、若所述第一線程的文件頭部合法,所述第一線程加載裝置則執(zhí)行第一線程 中的任務(wù)。
[0089] 下面,結(jié)合步驟S102和S103,對(duì)所述第一線程加載裝置如何判斷所述第一線程的 文件頭部是否合法以及如何執(zhí)行第一線程中的任務(wù)的過(guò)程進(jìn)行說(shuō)明。
[0090] 在所述第一線程加載裝置獲取到所述進(jìn)程加載信息后,第一線程加載裝置開(kāi)始進(jìn) 程加載工作,由于進(jìn)程包括第一線程和第二線程,所述第一線程和所述第二線程之間存在 通信關(guān)系,因此,此時(shí)用于加載第一線程的第一線程加載裝置和用于加載第二線程的第二 線程加載裝置并行工作。開(kāi)始進(jìn)程加載工作后,第一線程加載裝置需要確認(rèn)所述第一線程 的文件頭部是否合法,其中,用于加載第二線程的第二線程加載裝置的工作過(guò)程將在下述 實(shí)施例中進(jìn)行詳細(xì)描述,此處不再贅述。
[0091]若所述第一線程的文件頭部合法,則說(shuō)明第一線程加載裝置和第二線程加載裝置 能夠繼續(xù)工作,所述第一線程加載裝置則執(zhí)行第一線程中的任務(wù)。
[0092]其中,所述第一線程加