。當(dāng)操作系統(tǒng)啟動(dòng)內(nèi) 核以及各種系統(tǒng)服務(wù)時(shí),系統(tǒng)知識(shí)庫(kù)的服務(wù)端讀取系統(tǒng)的硬件資源信息以及拓?fù)浣Y(jié)構(gòu)、系 統(tǒng)服務(wù)運(yùn)行位置等信息,存入到系統(tǒng)知識(shí)庫(kù)的數(shù)據(jù)庫(kù)中。服務(wù)端對(duì)外提供系統(tǒng)知識(shí)庫(kù)的查 詢與分析接口,用戶或操作系統(tǒng)通過(guò)調(diào)用這些接口,使用系統(tǒng)知識(shí)庫(kù)中已經(jīng)設(shè)定好的分析 算法或者通過(guò)手動(dòng)編寫需要的特殊算法,對(duì)系統(tǒng)知識(shí)庫(kù)的數(shù)據(jù)庫(kù)信息進(jìn)行查詢與分析,得 到需要的親和性調(diào)度結(jié)果。由于第二線程加載裝置結(jié)合系統(tǒng)知識(shí)庫(kù)選擇進(jìn)程加載目標(biāo)核的 過(guò)程使用了關(guān)系型數(shù)據(jù)庫(kù)以及分析算法,因此分析速度比傳統(tǒng)的遍歷法要快得多。
[0132]S303、所述第二線程加載裝置發(fā)送所述第二線程加載目標(biāo)核Core至所述第一線 程加載裝置,以使得所述第一線程加載裝置在接收到所述第二線程加載目標(biāo)核Core后,填 寫所述第二線程加載目標(biāo)核Core信息,并將所述第一線程加入指定的執(zhí)行隊(duì)列,從而完成 進(jìn)程加載。
[0133] 在所述第二線程加載裝置選擇出了所述第二線程加載目標(biāo)核Core后,發(fā)送所述 第二線程加載目標(biāo)核Core至所述第一線程加載裝置,以使得所述第一線程加載裝置在接 收到所述第二線程加載目標(biāo)核Core后,填寫所述第二線程加載目標(biāo)核Core信息,并將所述 第一線程加入指定的執(zhí)行隊(duì)列,從而完成進(jìn)程加載。
[0134] 本發(fā)明實(shí)施例所提供的一種進(jìn)程加載方法,進(jìn)程包括第一線程和第二線程,所述 第一線程和所述第二線程之間存在通信關(guān)系,通過(guò)第二線程加載裝置獲取所述進(jìn)程加載信 息,所述進(jìn)程加載信息用于指示開始加載所述第二線程,在所述第二線程加載裝置獲取到 所述進(jìn)程加載信息后,獲取當(dāng)前時(shí)刻加載所述進(jìn)程的系統(tǒng)的動(dòng)態(tài)負(fù)載信息,并結(jié)合系統(tǒng)知 識(shí)庫(kù)選擇第二線程加載目標(biāo)核Core,以及所述第二線程加載裝置發(fā)送所述第二線程加載目 標(biāo)核Core至所述第一線程加載裝置,以使得所述第一線程加載裝置在接收到所述第二線 程加載目標(biāo)核Core后,填寫所述第二線程加載目標(biāo)核Core信息,并將所述第一線程加入指 定的執(zhí)行隊(duì)列,從而完成進(jìn)程加載。通過(guò)該方案,在進(jìn)程加載的過(guò)程中,將選擇進(jìn)程加載目 標(biāo)核Core的過(guò)程分離,加快了進(jìn)程的加載時(shí)間,提高了用戶體驗(yàn)感。
[0135] 實(shí)施例四
[0136] 本發(fā)明實(shí)施例提供一種進(jìn)程加載方法,進(jìn)程包括第一線程和第二線程,所述第一 線程和所述第二線程之間存在通信關(guān)系,如圖6所示,該方法包括:
[0137]S401、第二線程加載裝置獲取所述進(jìn)程加載信息,所述進(jìn)程加載信息用于指示開 始加載所述第二線程。
[0138] 本發(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)程加載信息用于指示開始加載所 述第二線程。
[0139]S402、所述第二線程加載裝置讀取親和性配置信息,其中,所述親和性配置信息為 選擇所述第二線程加載目標(biāo)核Core提供親和性運(yùn)算參數(shù)。
[0140] 其中,所述親和性配置信息包括預(yù)編譯信息、編譯器解析、手動(dòng)配置、操作系統(tǒng)反 饋中任意一種或多種的組合。
[0141] 在傳統(tǒng)的操作系統(tǒng)中,實(shí)現(xiàn)親和性調(diào)度的方法是將硬件平臺(tái)的拓?fù)浣Y(jié)構(gòu)、系統(tǒng)服 務(wù)的運(yùn)行位置以及進(jìn)程與其親和性,還成進(jìn)程加載時(shí)系統(tǒng)的負(fù)載情況相結(jié)合,并對(duì)這些數(shù) 據(jù)進(jìn)行分析,得出進(jìn)程加載目標(biāo)核。以Helios操作系統(tǒng)為例,Helios操作系統(tǒng)通過(guò)在編譯 程序過(guò)程中生成進(jìn)程配置文件,在進(jìn)程配置文件中對(duì)進(jìn)程的運(yùn)算平臺(tái)親和性、正親和性、反 親和性等進(jìn)行了親和性信息描述。Helios操作系統(tǒng)進(jìn)行親和性調(diào)度的流程示意圖如圖7所 示,在程序加載時(shí),加載模塊通過(guò)讀取配置文件中的各種親和性信息,對(duì)系統(tǒng)的各個(gè)核進(jìn)行 多級(jí)過(guò)濾,首先通過(guò)運(yùn)算平臺(tái)親和性對(duì)系統(tǒng)中的所有核進(jìn)行過(guò)濾,選擇親和性最高的核,如 果結(jié)果唯一,則選擇此核作為進(jìn)程加載目標(biāo)核;如果結(jié)果不唯一,再通過(guò)應(yīng)用程序與系統(tǒng)服 務(wù)的正親和性進(jìn)行過(guò)濾,選擇親和性最高的核,如果結(jié)果唯一,則選擇此核作為進(jìn)程加載目 標(biāo)核;如果結(jié)果仍不唯一,再通過(guò)應(yīng)用程序與系統(tǒng)服務(wù)的負(fù)親和性進(jìn)行過(guò)濾,選擇親和性最 高的核,如果結(jié)果唯一,則選擇此核作為進(jìn)程加載目標(biāo)核;如果結(jié)果仍不是唯一的,則選擇 結(jié)果中負(fù)載最低的核。通過(guò)這樣的多級(jí)調(diào)度,實(shí)現(xiàn)了進(jìn)程的親和性調(diào)度。
[0142] 然而,這種親和性調(diào)度方法在進(jìn)程加載過(guò)程中也是串行執(zhí)行的,因此也會(huì)降低進(jìn) 程在眾核平臺(tái)上的加載速度。同時(shí),此方法在調(diào)度過(guò)程中并不能使用系統(tǒng)信息庫(kù)等數(shù)據(jù)庫(kù) 方面的支持,在眾核平臺(tái)核的數(shù)量很大的情況下,過(guò)濾速度會(huì)比較慢,降低了進(jìn)程加載的速 度。
[0143] 本發(fā)明實(shí)施例提供的一種進(jìn)程加載方法,將選擇進(jìn)程加載目標(biāo)核Core的過(guò)程分 離,使第二線程加載裝置完成親和性調(diào)度的工作。其中,所述親和性配置信息包括預(yù)編譯信 息、編譯器解析、手動(dòng)配置、操作系統(tǒng)反饋中任意一種或多種的組合。
[0144] 需要說(shuō)明的是,親和性配置信息的來(lái)源主要包括預(yù)編譯信息、編譯器解析、手動(dòng)配 置、操作系統(tǒng)反饋。
[0145] 其中,預(yù)編譯信息是用戶使用編譯器提供的指示親和性的預(yù)編譯指令,對(duì)程序源 代碼的代碼段添加例如I/O密集、并行計(jì)算、循環(huán)操作、線程互斥關(guān)系等親和性信息。這種 親和性信息在程序編譯時(shí)由編譯器解析并寫入配置文件中;
[0146] 編譯器解析是在編譯過(guò)程中,編譯器分析源代碼以及用戶添加的指示親和性的預(yù) 編譯指令,得出應(yīng)用程序的親和性屬性。當(dāng)編譯器解析出程序的親和性信息后,按照配置文 件的格式分類寫入應(yīng)用程序配置文件中;
[0147] 手動(dòng)配置是用戶通過(guò)操作系統(tǒng)提供的相應(yīng)接口設(shè)置進(jìn)程的親和性屬性,如進(jìn)程的 運(yùn)算平臺(tái)、硬件資源需求、I/O需求、程序優(yōu)先級(jí)等。這些信息在設(shè)置后,通過(guò)操作系統(tǒng)的接 口對(duì)進(jìn)程配置文件進(jìn)行改寫,按配置文件格式填入進(jìn)程的相應(yīng)親和性信息;
[0148] 操作系統(tǒng)反饋是操作系統(tǒng)根據(jù)進(jìn)程運(yùn)行過(guò)程中的行為記錄進(jìn)程與系統(tǒng)服務(wù)通信、 對(duì)資源使用情況等親和性信息,比如與服務(wù)通信、共享內(nèi)存、訪問(wèn)硬盤等各種操作。這些信 息同樣通過(guò)操作系統(tǒng)的接口,將進(jìn)程運(yùn)行的歷史信息按照配置文件格式寫入到對(duì)應(yīng)進(jìn)程的 配置文件中。本發(fā)明實(shí)施例就是以程序親和性信息的形式將操作系統(tǒng)反饋記錄在親和性配 置信息中的。
[0149] 親和性配置信息的來(lái)源與其對(duì)應(yīng)的在親和性信息配置文件中的位置關(guān)系如 圖8所示,親和性信息配置文件包括三個(gè)部分:Header、Process affinity以及Thread affinity。Header主要是對(duì)配置文件的基本信息進(jìn)行一些基本說(shuō)明,并且收集應(yīng)用程序的 優(yōu)先級(jí)信息;Process affinity主要對(duì)進(jìn)程級(jí)的親和性信息進(jìn)行收集,包括平臺(tái)需求和硬 件資源數(shù)量需求等;Thread affinity主要對(duì)進(jìn)程以下級(jí)別的親和性信息進(jìn)行收集,包括 I/O需求、Service的需求、Thread之間的互斥與相連關(guān)系等。
[0150] 需要說(shuō)明的是,由于第一線程加載裝置和第二線程加載裝置是并行工作的,第一 線程加載裝置和第二線程加載裝置的工作順序沒有時(shí)間先后的關(guān)系。
[0151] S403、在所述第二線程加載裝置獲取到所述進(jìn)程加載信息后,獲取當(dāng)前時(shí)刻加載 所述進(jìn)程的系統(tǒng)的動(dòng)態(tài)負(fù)載信息,并結(jié)合系統(tǒng)知識(shí)庫(kù)選擇第二線程加載目標(biāo)核Core。
[0152] 其中,所述系統(tǒng)知識(shí)庫(kù)為選擇所述第二線程加載目標(biāo)核Core提供相應(yīng)的運(yùn)算參 數(shù);所述系統(tǒng)知識(shí)庫(kù)包括系統(tǒng)的硬件拓?fù)湫畔?、資源信息和系統(tǒng)服務(wù)運(yùn)行位置信息。
[0153] 在所述第二線程加載裝置獲取到所述進(jìn)程加載信息后,獲取當(dāng)前時(shí)刻加載所述進(jìn) 程的系統(tǒng)的動(dòng)態(tài)負(fù)載信息,其中,當(dāng)前時(shí)刻系統(tǒng)的動(dòng)態(tài)負(fù)載信息可以通過(guò)調(diào)用操作系統(tǒng)的 API來(lái)獲取。
[0154] 需要說(shuō)明的是,知識(shí)庫(kù)是知識(shí)工程中結(jié)構(gòu)化、易操作、易利用、全面有組織的知識(shí) 集群,是針對(duì)某一領(lǐng)域問(wèn)題求解的需要,是采用某種知識(shí)表示方式在計(jì)算機(jī)存儲(chǔ)器中存儲(chǔ)、 組織、管理和使用的互相聯(lián)系的知識(shí)片集合。本發(fā)明實(shí)施例所提到的系統(tǒng)知識(shí)庫(kù)是一種系 統(tǒng)資源信息的存儲(chǔ)和分析服務(wù),包括系統(tǒng)的硬件拓?fù)湫畔?、資源信息和系統(tǒng)服務(wù)運(yùn)行位置 信息。操作系統(tǒng)的其他模塊或用戶能夠通過(guò)查詢與運(yùn)算分析的外部接口調(diào)用這些信息。
[0155] 一個(gè)基本的系統(tǒng)知識(shí)庫(kù)的結(jié)構(gòu)示意圖如圖5所示,其中,系統(tǒng)知識(shí)庫(kù)的服務(wù)端帶 動(dòng)一個(gè)關(guān)系型數(shù)據(jù)庫(kù),該關(guān)系型數(shù)據(jù)庫(kù)用于存儲(chǔ)系統(tǒng)的各種資源信息。當(dāng)操作系統(tǒng)啟動(dòng)內(nèi) 核以及各種系統(tǒng)服務(wù)時(shí),系統(tǒng)知識(shí)庫(kù)的服務(wù)端讀取系統(tǒng)的硬件資源信息以及拓?fù)浣Y(jié)構(gòu)、系 統(tǒng)服務(wù)運(yùn)行位置等信息,存入到系統(tǒng)知識(shí)庫(kù)的數(shù)據(jù)庫(kù)中。服務(wù)端對(duì)外提供系統(tǒng)知識(shí)庫(kù)的查 詢與分析接口,用戶或操作系統(tǒng)通過(guò)調(diào)用這些接口,使用系統(tǒng)知識(shí)庫(kù)中已經(jīng)設(shè)定好的分析 算法或者通過(guò)手動(dòng)編寫需要的特殊算法,對(duì)系統(tǒng)知識(shí)庫(kù)的數(shù)據(jù)庫(kù)信息進(jìn)行查詢與分析,得 到需要的親和性調(diào)度結(jié)果。由于第二線程加載裝置結(jié)合系統(tǒng)知識(shí)庫(kù)選擇進(jìn)程加載目標(biāo)核的 過(guò)程使用了關(guān)系型數(shù)據(jù)庫(kù)以及分析算法,因此分析速度比傳統(tǒng)的遍歷法要快得多。
[0156] 示例性的,當(dāng)?shù)诙€程加載裝置讀取了親和性配置信息和當(dāng)前時(shí)刻系統(tǒng)的動(dòng)態(tài)負(fù) 載信息后,按照輸入?yún)?shù)的不同對(duì)系統(tǒng)知識(shí)庫(kù)進(jìn)行查詢,如表1所示,一個(gè)系統(tǒng)知識(shí)庫(kù)應(yīng)該 支持類似的約束性查詢和分析算法的錄入。
[0157] 表 1
[0158]
【主權(quán)項(xiàng)】
1. 一種進(jìn)程加載方法,其特征在于,進(jìn)程包括第一線程和第二線程,所述第一線程和所 述第二線程之間存在通信關(guān)系,所述方法包括: 第一線程加載裝置獲取所述進(jìn)程加載信息,所述進(jìn)程加載信息用于指示開始加載所述 第一線程; 在所述第一線程加載裝置獲取到所述進(jìn)程加載信息后,確認(rèn)所述第一線程的文件頭部 是否合法; 若所述第一線程的文件頭部合法,所述第一線程加載裝置則執(zhí)行第一線程中的任務(wù); 所述第一線程加載裝置接收第二線程加載裝置發(fā)送的第二線程加載目標(biāo)核Core ;