欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種任務(wù)處理的方法和虛擬機(jī)的制作方法

文檔序號:6384272閱讀:187來源:國知局
專利名稱:一種任務(wù)處理的方法和虛擬機(jī)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種任務(wù)處理的方法和虛擬機(jī)。
背景技術(shù)
在計(jì)算機(jī)技術(shù)領(lǐng)域中,虛擬技術(shù)是一種通過組合或分割現(xiàn)有的計(jì)算機(jī)資源,使得這些資源表現(xiàn)為一個或多個操作環(huán)境,從而提供優(yōu)于原有資源配置的訪問方式的技術(shù)?,F(xiàn)有技術(shù)中通過軟件的方式將多個X86系統(tǒng)聚合成一個虛擬的對稱多處理機(jī)。使用一個虛擬機(jī)監(jiān)視器或者虛擬機(jī)仿真器實(shí)現(xiàn)單個結(jié)點(diǎn)的物理資源的虛擬化,提供統(tǒng)一的運(yùn)行環(huán)境。虛擬機(jī)對內(nèi)存的管理是通過軟件的方式實(shí)現(xiàn)的,將所有物理資源中的內(nèi)存在邏輯上視為一個整體的內(nèi)存,內(nèi)存是按照虛擬頁面劃分的。當(dāng)虛擬機(jī)在執(zhí)行任務(wù)時,會隨機(jī)選取等待隊(duì)列中的任務(wù),然后按照任務(wù)涉及的相關(guān)數(shù)據(jù)所需的內(nèi)存空間,在邏輯內(nèi)存中為任務(wù)按順序的分配內(nèi)存地址,是一種按需分配內(nèi)存的機(jī)制。在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題由于虛擬機(jī)系統(tǒng)是按照頁面來劃分是否存在數(shù)據(jù)沖突的,當(dāng)兩個不同的任務(wù)所涉及的數(shù)據(jù)被分配在同一個虛擬頁面之后,兩個任務(wù)同時訪問該虛擬頁面中的兩個不同地址,虛擬機(jī)會認(rèn)為兩個任務(wù)訪問的是同一個數(shù)據(jù),因此會認(rèn)為兩個任務(wù)發(fā)生了數(shù)據(jù)共享沖突,會中端兩個任務(wù)的執(zhí)行過程,而事實(shí)上并未發(fā)生真正的共享沖突,即產(chǎn)生了假共享現(xiàn)象,影響任務(wù)的執(zhí)行。

發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種任務(wù)處理的方法和虛擬機(jī)。所述技術(shù)方案如下第一方面,本發(fā)明實(shí)施例提供的一種任務(wù)處理的方法,包括當(dāng)接收到虛擬指令層下發(fā)的創(chuàng)建任務(wù)的指令時,為所述任務(wù)選取一個用于執(zhí)行所述任務(wù)的空閑資源,其中所述指令中至少包括所述任務(wù)運(yùn)行時的起始地址,所述任務(wù)涉及的全局變量的地址信息和同步變量的地址信息;根據(jù)所述全局變量的地址信息獲取與所述全局變量地址信息對應(yīng)的全局變量狀態(tài)息;根據(jù)全局變量狀態(tài)信息為全局變量創(chuàng)建本地全局變量快照;根據(jù)所述本地全局變量快照在選取的所述空閑資源中預(yù)先分配的私有內(nèi)存空間中執(zhí)行所述任務(wù);當(dāng)所述任務(wù)執(zhí)行完畢后,獲取所述全局變量對應(yīng)的新的全局變量快照,根據(jù)所述本地全局變量快照以及所述新的全局變量快照獲取已更新的全局變量;判斷同步任務(wù)等待隊(duì)列中的待執(zhí)行任務(wù)的同步變量是否包括了現(xiàn)在已更新的全局變量,如果有,把這個任務(wù)放入執(zhí)行任務(wù)等待隊(duì)列;其中所述同步任務(wù)等待隊(duì)列中的任務(wù)是等待同步變量觸發(fā)的任務(wù)所在的隊(duì)列,當(dāng)同步任務(wù)等待隊(duì)列中的任務(wù)的同步變量觸發(fā)后,將任務(wù)放入所述執(zhí)行任務(wù)等待隊(duì)列中排隊(duì)等待調(diào)度;所述執(zhí)行任務(wù)等待隊(duì)列中的任務(wù)是等待調(diào)度執(zhí)行的任務(wù)所在的隊(duì)列。在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述判斷同步任務(wù)等待隊(duì)列中的待執(zhí)行任務(wù)的同步變量是否包括了現(xiàn)在已更新的全局變量,如果有,把這個任務(wù)放入執(zhí)行任務(wù)等待隊(duì)列,包括在執(zhí)行任務(wù)等待隊(duì)列中選取一個第一特定任務(wù)由第一空閑資源來運(yùn)行,其中,所述第一特定任務(wù)涉及的全局變量的地址信息與當(dāng)前執(zhí)行的所有任務(wù)所涉及的全局變量的地址信息不沖突;或,在執(zhí)行任務(wù)等待隊(duì)列中選取一個第二特定任務(wù)由第二空閑資源來運(yùn)行,其中,所述第二特定任務(wù)涉及的全局變量的地址信息與第二空閑資源已執(zhí)行完畢的任務(wù)所涉及的全局變量的地址信息盡可能多的相同或相近,以增加數(shù)據(jù)親和性。在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述全局變量狀態(tài)信息包括所述全局變量的內(nèi)存地址,創(chuàng)建時間以及版本標(biāo)記,所述根據(jù)全局變量狀態(tài)信息為全局變量創(chuàng)建全局變量快照包括根據(jù)所述全局變量狀態(tài)信息,將所述全局變量狀態(tài)信息進(jìn)行復(fù)制,生成所述全局變量的全局變量快照;相應(yīng)的,所述根據(jù)所述本地全局變量快照以及所述新的全局變量快照獲取已更新的全局變量包括判斷所述本地全局變量快照中的版本標(biāo)記與所述新的全局變量快照的版本標(biāo)記是否相同,如果相同則表示所述全局變量未被其他任務(wù)更新;如果不相同則表示所述全局變量已被其他任務(wù)更新。根據(jù)第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述本地全局變量快照以及所述新的全局變量快照獲取已更新的全局變量之后,所述方法還包括當(dāng)全局變量未被其他任務(wù)更新時,在執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述本地全局變量快照,并更新全局變量的內(nèi)存地址為執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述全局變量快照的內(nèi)存地址,將所述本地全局變量快照更新為所述本地全局變量快照。結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式中任一項(xiàng)的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述全局變量快照在選取的所述空閑資源中預(yù)先分配的私有內(nèi)存空間中執(zhí)行所述任務(wù)之后,所述方法還包括執(zhí)行所述任務(wù)發(fā)生缺頁錯誤時,則查詢所述全局變量快照的內(nèi)存地址實(shí)際的狀態(tài);當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在其他資源的公用內(nèi)存空間中,將所述全局變量快照的內(nèi)存地址對應(yīng)的實(shí)際內(nèi)容拷貝到本地;當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在本地的公用內(nèi)存空間中,則在本地的公用內(nèi)存空間中進(jìn)行獲取。第二方面,本發(fā)明實(shí)施例提供的一種任務(wù)處理的虛擬機(jī),包括調(diào)度器節(jié)點(diǎn),分布式共享內(nèi)存管理節(jié)點(diǎn),任務(wù)執(zhí)行容器節(jié)點(diǎn);所述調(diào)度器節(jié)點(diǎn)包括
選取模塊,用于當(dāng)接收到虛擬指令層下發(fā)的創(chuàng)建任務(wù)的指令時,為所述任務(wù)選取一個用于執(zhí)行所述任務(wù)的空閑資源,其中所述指令中至少包括所述任務(wù)運(yùn)行時的起始地址,所述任務(wù)涉及的全局變量的地址信息和同步變量的地址信息;第一獲取模塊,用于當(dāng)所述任務(wù)執(zhí)行完畢后,獲取所述全局變量對應(yīng)的新的全局變量快照,根據(jù)所述本地全局變量快照以及所述新的全局變量快照獲取已更新的全局變量;判斷模塊,用于判斷同步任務(wù)等待隊(duì)列中的待執(zhí)行任務(wù)的同步變量是否包括了現(xiàn)在已更新的全局變量,如果有,把這個任務(wù)放入執(zhí)行任務(wù)等待隊(duì)列;其中所述同步任務(wù)等待隊(duì)列中的任務(wù)是等待同步變量觸發(fā)的任務(wù)所在的隊(duì)列,當(dāng)同步任務(wù)等待隊(duì)列中的任務(wù)的同步變量觸發(fā)后,將任務(wù)放入所述執(zhí)行任務(wù)等待隊(duì)列中排隊(duì)等待調(diào)度;所述執(zhí)行任務(wù)等待隊(duì)列中的任務(wù)是等待調(diào)度執(zhí)行的任務(wù)所在的隊(duì)列;所述分布式共享內(nèi)存管理節(jié)點(diǎn)包括第二獲取模塊,用于根據(jù)所述全局變量的地址信息獲取與所述全局變量地址信息對應(yīng)的全局變量狀態(tài)信息;創(chuàng)建模塊,用于根據(jù)全局變量狀態(tài)信息為全局變量創(chuàng)建本地全局變量快照;所述任務(wù)執(zhí)行容器節(jié)點(diǎn)包括執(zhí)行模塊,用于根據(jù)所述本地全局變量快照在選取的所述空閑資源中預(yù)先分配的私有內(nèi)存空間中執(zhí)行所述任務(wù)。在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述判斷模塊,包括第一處理單元,用于在執(zhí)行任務(wù)等待隊(duì)列中選取一個第一特定任務(wù)由第一空閑資源來運(yùn)行,其中,所述第一特定任務(wù)涉及的全局變量與當(dāng)前執(zhí)行的所有任務(wù)所涉及的全局變量不沖突;第二處理單元,用于在執(zhí)行任務(wù)等待隊(duì)列中選取一個第二特定任務(wù)由第二空閑資源來運(yùn)行,其中,所述第二特定任務(wù)涉及的全局變量與第二空閑資源已執(zhí)行完畢的任務(wù)所涉及的全局變量盡可能多的相同或相近,以增加數(shù)據(jù)親和性。在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述全局變量狀態(tài)信息包括所述全局變量的內(nèi)存地址,創(chuàng)建時間以及版本標(biāo)記,所述創(chuàng)建模塊包括根據(jù)所述全局變量狀態(tài)信息,將所述全局變量狀態(tài)信息進(jìn)行復(fù)制,生成所述全局變量的全局變量快照;相應(yīng)的,所述第一獲取模塊具體用于判斷所述本地全局變量快照中的版本標(biāo)記與所述新的全局變量快照的版本標(biāo)記是否相同,如果相同則表示所述全局變量未被其他任務(wù)更新;如果不相同則表示所述全局變量已被其他任務(wù)更新。根據(jù)第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述調(diào)度器節(jié)點(diǎn)還包括更新模塊,用于當(dāng)全局變量未被其他任務(wù)更新時,在執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述本地全局變量快照,并更新全局變量的內(nèi)存地址為執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述全局變量快照的內(nèi)存地址,將所述本地全局變量快照更新為所述本地全局變量快照。
結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式中任一項(xiàng)的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述任務(wù)執(zhí)行容器節(jié)點(diǎn)還包括查詢模塊,用于執(zhí)行所述任務(wù)發(fā)生缺頁錯誤時,則查詢所述全局變量快照的內(nèi)存地址實(shí)際的狀態(tài);拷貝模塊,用于當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在其他資源的公用內(nèi)存空間中,將所述全局變量快照的內(nèi)存地址對應(yīng)的實(shí)際內(nèi)容拷貝到本地;第三獲取模塊,用于當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在本地的公用內(nèi)存空間中,則在本地的公用內(nèi)存空間中進(jìn)行獲取。本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是通過虛擬機(jī)在調(diào)度及執(zhí)行任務(wù)時對各任務(wù)涉及的全局變量的感知,以及在調(diào)度任務(wù)時對任務(wù)涉及的全局變量合理的分配內(nèi)存,盡可能使各任務(wù)之間所涉及的全局變量的內(nèi)存地址不沖突,減少虛擬機(jī)系統(tǒng)為維護(hù)內(nèi)存一致性所產(chǎn)生的開銷,提高虛擬機(jī)系統(tǒng)的可擴(kuò)展性。


為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實(shí)施例一提供的任務(wù)處理的方法流程圖;圖2是本發(fā)明實(shí)施例一提供的任務(wù)處理的方法中虛擬機(jī)的整體架構(gòu)的結(jié)構(gòu)示意圖;圖3是本發(fā)明實(shí)施例一提供的任務(wù)處理的方法中虛擬機(jī)各節(jié)點(diǎn)的結(jié)構(gòu)示意圖;圖4是本發(fā)明實(shí)施例二提供的任務(wù)處理的方法流程圖;圖5是本發(fā)明實(shí)施例三提供的任務(wù)處理的虛擬機(jī)結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例四提供的計(jì)算機(jī)設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。實(shí)施例一本發(fā)明實(shí)施例提供了一種任務(wù)處理的方法,參見圖1。需要說明的是,本發(fā)明基于應(yīng)用層抽象虛擬化技術(shù)(指令集架構(gòu))在中間件級實(shí)現(xiàn)機(jī)群系統(tǒng)的單一系統(tǒng)映像,提出了一種任務(wù)層次的虛擬指令集,并基于該指令集建立一個單一的系統(tǒng)鏡像。采用基于頁面的分布式共享內(nèi)存模型,并通過對任務(wù)的感知,建立一種松弛的事物內(nèi)存一致性模型,通過對任務(wù)所需的內(nèi)存分布進(jìn)行合理優(yōu)化,減少系統(tǒng)為維護(hù)內(nèi)存一致性所產(chǎn)生的開銷,提高系統(tǒng)的可擴(kuò)展性。本發(fā)明實(shí)施例所進(jìn)行處理任務(wù)的虛擬機(jī)的整體架構(gòu)如圖2所示,具體為數(shù)據(jù)中心虛擬機(jī)(DVM)包括數(shù)據(jù)中心虛擬機(jī)指令集架構(gòu)(DISA)、數(shù)據(jù)中心虛擬機(jī)虛擬運(yùn)行環(huán)境,數(shù)據(jù)中心虛擬機(jī)底層運(yùn)行環(huán)境和上層應(yīng)用。數(shù)據(jù)中心虛擬機(jī)指令集架構(gòu)(DISA)即虛擬指令層,用于數(shù)據(jù)中心虛擬機(jī)架構(gòu)(DVMArchitecture),可用于計(jì)算和控制數(shù)據(jù)中心虛擬機(jī)。它是數(shù)據(jù)中心虛擬機(jī)DVM提供給程序員以及編譯器開發(fā)人員的編程接口。數(shù)據(jù)中心虛擬機(jī)底層運(yùn)行環(huán)境,包括大規(guī)模計(jì)算結(jié)點(diǎn)的硬件平臺、指令集和操作系統(tǒng)內(nèi)核。數(shù)據(jù)中心虛擬機(jī)(DVM)系統(tǒng)各節(jié)點(diǎn)包括分布式共享內(nèi)存管理節(jié)點(diǎn)(DSM),調(diào)度器節(jié)點(diǎn),任務(wù)執(zhí)行容器節(jié)點(diǎn),如圖3所示,具體為分布式共享內(nèi)存管理(DSM home)節(jié)點(diǎn),用于支持以基于任務(wù)的快照機(jī)制實(shí)現(xiàn)的部分事務(wù)內(nèi)存來實(shí)現(xiàn)內(nèi)存一致性的維護(hù),為上層應(yīng)用提供統(tǒng)一的邏輯地址空間。其中,快照是記錄某個時間點(diǎn)以頁面表示的內(nèi)存使用狀態(tài),可以保證數(shù)據(jù)的事務(wù)隔離的一種數(shù)據(jù)結(jié)構(gòu),是共享變量在某一時間點(diǎn)的一份拷貝。事務(wù)內(nèi)存是保證各任務(wù)對內(nèi)存的寫操作具有事務(wù)特性,是借鑒數(shù)據(jù)庫中事物的思想,把對共享變量的讀寫封裝到一個事物中,事務(wù)的執(zhí)行過程中,當(dāng)前任務(wù)所讀的數(shù)據(jù)不會被其他線程寫,寫的數(shù)據(jù)則不會被其他線程讀,在事務(wù)結(jié)束時,對共享變量的修改才為其他事務(wù)所見。為了支持對共享變量的并發(fā)讀寫以及降低數(shù)據(jù)副本一致性開銷,本發(fā)明采用快照來實(shí)現(xiàn)對共享變量的并發(fā)讀寫,并采用延遲更新的方法降低一致性開銷。分布式共享內(nèi)存管理節(jié)點(diǎn)具體實(shí)現(xiàn)包括全局頁元信息(頁面的實(shí)際存儲位置信息等)和拷貝信息的維護(hù)和管理;內(nèi)存地址與頁面的轉(zhuǎn)化;本地頁面信息的管理,頁表信息更新、缺頁處理;頁面信息在結(jié)點(diǎn)間的復(fù)制和傳輸。創(chuàng)建內(nèi)存快照、刪除內(nèi)存快照、內(nèi)存修改提交等與快照相關(guān)的管理工作。調(diào)度器節(jié)點(diǎn),用于完成任務(wù)的管理和數(shù)據(jù)、任務(wù)的同步。任務(wù)管理包括任務(wù)的調(diào)度、任務(wù)的初始化、任務(wù)的執(zhí)行、任務(wù)執(zhí)行結(jié)果處理。數(shù)據(jù)、任務(wù)同步包括使用本地的分布式共享內(nèi)存模塊完成內(nèi)存數(shù)據(jù)的同步和任務(wù)的同步。該節(jié)點(diǎn)包括任務(wù)管理模塊和內(nèi)存模塊。其中,內(nèi)存模塊的功能為內(nèi)存地址與頁面信息的轉(zhuǎn)化,把任務(wù)管理模塊的創(chuàng)建快照的請求,轉(zhuǎn)發(fā)給分布式共享內(nèi)存管理節(jié)點(diǎn)。任務(wù)準(zhǔn)備執(zhí)行時,通知對應(yīng)的任務(wù)執(zhí)行容器節(jié)點(diǎn)的內(nèi)存模塊更新相關(guān)的內(nèi)存頁表項(xiàng)。其中任務(wù)管理模塊的功能主要是負(fù)責(zé)任務(wù)的管理以及數(shù)據(jù)和任務(wù)的同步。調(diào)度器節(jié)點(diǎn)具體的功能包括①任務(wù)調(diào)度通過一定的調(diào)度策略選擇特定的任務(wù)在相應(yīng)的任務(wù)執(zhí)行容器上執(zhí)行。②任務(wù)的執(zhí)行準(zhǔn)備通過調(diào)用本地的內(nèi)存模塊對任務(wù)涉及區(qū)域的內(nèi)存空間創(chuàng)建快照。③任務(wù)派發(fā)。④對任務(wù)執(zhí)行結(jié)果處理如處理提交的內(nèi)存修改;為新建的任務(wù)建立快照。⑤通過內(nèi)存模塊透明地完成全局?jǐn)?shù)據(jù)和任務(wù)的同步,維護(hù)內(nèi)存的一致性。任務(wù)執(zhí)行容器節(jié)點(diǎn),用于完成任務(wù)的執(zhí)行、執(zhí)行結(jié)果的反饋、創(chuàng)建新任務(wù)的反饋等功能。該類節(jié)點(diǎn)包括任務(wù)執(zhí)行模塊和內(nèi)存模塊。任務(wù)執(zhí)行模塊的功能包括啟動本地的內(nèi)存模塊,接收調(diào)度器派發(fā)的任務(wù),為任務(wù)建立本地運(yùn)行的上下文,執(zhí)行任務(wù)。向調(diào)度器反饋執(zhí)行結(jié)果,例如提交可能需要的內(nèi)存修改;或者建立新任務(wù)。內(nèi)存模塊功能為本地頁表信息的管理,包括頁表信息更新、缺頁處理。上層應(yīng)用,用于數(shù)據(jù)中心虛擬機(jī)指令集架構(gòu)編寫的指令序列。方法流程包括101 :當(dāng)接收到虛擬指令層下發(fā)的創(chuàng)建任務(wù)的指令時,為所述任務(wù)選取一個用于執(zhí)行所述任務(wù)的空閑資源,其中所述指令中至少包括所述任務(wù)運(yùn)行時的起始地址,所述任務(wù)涉及的全局變量的地址信息和同步變量的地址信息;102:根據(jù)所述全局變量的地址信息獲取與所述全局變量地址信息對應(yīng)的全局變量狀態(tài)信息;103 :根據(jù)全局變量狀態(tài)信息為全局變量創(chuàng)建本地全局變量快照;104:根據(jù)所述本地全局變量快照在選取的所述空閑資源中預(yù)先分配的私有內(nèi)存空間中執(zhí)行所述任務(wù);105:當(dāng)所述任務(wù)執(zhí)行完畢后,獲取所述全局變量對應(yīng)的新的全局變量快照,根據(jù)所述本地全局變量快照以及所述新的全局變量快照獲取已更新的全局變量;106:判斷同步任務(wù)等待隊(duì)列中的待執(zhí)行任務(wù)的同步變量是否包括了現(xiàn)在已更新的全局變量,如果有,把這個任務(wù)放入執(zhí)行任務(wù)等待隊(duì)列;其中所述同步任務(wù)等待隊(duì)列中的任務(wù)是等待同步變量觸發(fā)的任務(wù)所在的隊(duì)列,當(dāng)同步任務(wù)等待隊(duì)列中的任務(wù)的同步變量觸發(fā)后,將任務(wù)放入所述執(zhí)行任務(wù)等待隊(duì)列中排隊(duì)等待調(diào)度;所述執(zhí)行任務(wù)等待隊(duì)列中的任務(wù)是等待調(diào)度執(zhí)行的任務(wù)所在的隊(duì)列。本發(fā)明實(shí)施例通過虛擬機(jī)在調(diào)度及執(zhí)行任務(wù)時對各任務(wù)涉及的全局變量的感知,以及在調(diào)度任務(wù)時對任務(wù)涉及的全局變量合理的分配內(nèi)存,盡可能使得各任務(wù)之間涉及的全局變量的內(nèi)存地址不沖突,減少虛擬機(jī)系統(tǒng)為維護(hù)內(nèi)存一致性所產(chǎn)生的開銷,提高虛擬機(jī)系統(tǒng)的可擴(kuò)展性。實(shí)施例二本發(fā)明實(shí)施例提供了一種任務(wù)處理的方法,參見圖4,需要說明的是,本發(fā)明實(shí)施例是通過調(diào)度器節(jié)點(diǎn)、分布式共享內(nèi)存管理節(jié)點(diǎn)、任務(wù)執(zhí)行容器節(jié)點(diǎn)具體執(zhí)行對任務(wù)處理的整個過程。方法流程包括所述虛擬機(jī)包括調(diào)度器節(jié)點(diǎn),分布式共享內(nèi)存管理節(jié)點(diǎn)以及任務(wù)執(zhí)行容器節(jié)點(diǎn)。401 :當(dāng)接收到虛擬指令層下發(fā)的創(chuàng)建任務(wù)的指令時,為所述任務(wù)選取一個用于執(zhí)行所述任務(wù)的空閑資源,其中所述指令中至少包括所述任務(wù)運(yùn)行時的起始地址,所述任務(wù)涉及的全局變量的地址信息和同步變量的地址信息。具體的,當(dāng)接收到虛擬指令層下發(fā)的創(chuàng)建任務(wù)的指令時,調(diào)度器節(jié)點(diǎn)在空閑的任務(wù)執(zhí)行容器節(jié)點(diǎn)中選擇一個空閑的任務(wù)執(zhí)行容器節(jié)點(diǎn),可以是整個任務(wù)執(zhí)行容器節(jié)點(diǎn)處于空閑狀態(tài),也可以是任務(wù)執(zhí)行容器節(jié)點(diǎn)中的私有內(nèi)存空間中存在空閑內(nèi)存,用于執(zhí)行調(diào)度器節(jié)點(diǎn)分配的任務(wù)。并將任務(wù)分配給任務(wù)執(zhí)行容器節(jié)點(diǎn)。指令中攜帶任務(wù)的相關(guān)信息,至少包括任務(wù)執(zhí)行的起始地址,任務(wù)涉及的全局變量的地址信息和同步變量的地址信息,其中同步變量也是全局變量的一種,用于標(biāo)識該任務(wù)是否需要和其他任務(wù)進(jìn)行同步,當(dāng)需要與其他任務(wù)同步時,則調(diào)度器節(jié)點(diǎn)將該任務(wù)放入同步任務(wù)等待隊(duì)列中等待其他任務(wù)的完成對全局變量進(jìn)行更新完畢,其中所述同步任務(wù)等待隊(duì)列中的任務(wù)是等待同步變量觸發(fā)的任務(wù)所在的隊(duì)列,當(dāng)同步任務(wù)等待隊(duì)列中的任務(wù)的同步變量觸發(fā)后,將任務(wù)放入所述執(zhí)行任務(wù)等待隊(duì)列中排隊(duì)等待調(diào)度;所述執(zhí)行任務(wù)等待隊(duì)列中的任務(wù)是等待調(diào)度執(zhí)行的任務(wù)所在的隊(duì)列。調(diào)度器節(jié)點(diǎn)的任務(wù)管理模塊是整個數(shù)據(jù)中心虛擬機(jī)系統(tǒng)的入口點(diǎn),初始化后建立與各任務(wù)執(zhí)行容器節(jié)點(diǎn)的任務(wù)執(zhí)行模塊之間的連接,從系統(tǒng)的第一個任務(wù)開始,通過一定的調(diào)度策略選擇當(dāng)前處于空閑狀態(tài)的任務(wù)執(zhí)行容器節(jié)點(diǎn)后,并將任務(wù)分配給選擇的任務(wù)執(zhí)行容器節(jié)點(diǎn)。任務(wù)執(zhí)行容器節(jié)點(diǎn)在啟動時,任務(wù)執(zhí)行容器節(jié)點(diǎn)的任務(wù)執(zhí)行模塊首先初始化該節(jié)點(diǎn)的私有內(nèi)存區(qū)域,然后開啟兩類服務(wù)器端,一類的功能是等待與調(diào)度器節(jié)點(diǎn)建立連接 ’另一類的功能是等待與其它任務(wù)執(zhí)行容器節(jié)點(diǎn)建立連接。完成本地內(nèi)存模塊的初始化,將共享的內(nèi)存區(qū)域設(shè)置為不可訪問,當(dāng)發(fā)生不同訪問時,會引發(fā)不同的缺頁錯誤,而激活本地的內(nèi)存模塊。402:根據(jù)所述全局變量的地址信息獲取與所述全局變量地址信息對應(yīng)的全局變量狀態(tài)信息。其中全局變量狀態(tài)信息包括所述全局變量的內(nèi)存地址,創(chuàng)建時間以及版本標(biāo)記。403 :所述根據(jù)全局變量狀態(tài)信息為全局變量創(chuàng)建全局變量快照。創(chuàng)建快照的具體方式為根據(jù)所述全局變量狀態(tài)信息,將所述全局變量狀態(tài)信息進(jìn)行復(fù)制,生成所述全局變量的全局變量快照。
具體實(shí)施方式
為調(diào)度器節(jié)點(diǎn)初始化所述任務(wù)涉及的運(yùn)行數(shù)據(jù),并調(diào)度分布式共享內(nèi)存管理節(jié)點(diǎn)為所述任務(wù)涉及的全局變量創(chuàng)建快照。調(diào)度器節(jié)點(diǎn)的任務(wù)管理模塊調(diào)用本地內(nèi)存模塊實(shí)現(xiàn)任務(wù)涉及的運(yùn)行數(shù)據(jù)的內(nèi)存地址到頁面信息的轉(zhuǎn)化,并通過本地內(nèi)存模塊發(fā)送數(shù)據(jù)包給分布式共享內(nèi)存管理節(jié)點(diǎn),完成任務(wù)涉及的全局變量快照的創(chuàng)建,其中任務(wù)所涉及的運(yùn)行數(shù)據(jù)的為任務(wù)涉及的堆、棧中的初始數(shù)據(jù),所訪問的全局變量的內(nèi)存地址,運(yùn)行指令的起始地址等信息。通過本地內(nèi)存模塊將任務(wù)涉及的全局變量的內(nèi)存地址對應(yīng)的頁面信息發(fā)送至所述分布式共享內(nèi)存管理節(jié)點(diǎn)。 分布式共享內(nèi)存管理節(jié)點(diǎn)為任務(wù)涉及的全局變量創(chuàng)建快照,并保存任務(wù)涉及的全局變量的內(nèi)存地址所在頁面對應(yīng)的原始的頁表信息。分布式共享內(nèi)存管理節(jié)點(diǎn)創(chuàng)建全局變量快照后,調(diào)度器節(jié)點(diǎn)的任務(wù)管理模塊再調(diào)用本地內(nèi)存模塊將快照以數(shù)據(jù)包的形式發(fā)送給之前已經(jīng)選擇好的任務(wù)執(zhí)行容器節(jié)點(diǎn)的內(nèi)存模塊,任務(wù)執(zhí)行容器節(jié)點(diǎn)的內(nèi)存模塊根據(jù)快照更新本地的頁表信息。頁表信息更新完畢后,調(diào)度器節(jié)點(diǎn)的任務(wù)管理模塊通過已建立的連接將任務(wù)涉及的運(yùn)行數(shù)據(jù)以消息形式發(fā)送給對應(yīng)的任務(wù)執(zhí)行容器節(jié)點(diǎn)的任務(wù)執(zhí)行模塊,并一直監(jiān)聽連接上的消息,至此完成一個任務(wù)的分發(fā)。404:根據(jù)所述本地全局變量快照在選取的所述空閑資源中預(yù)先分配的私有內(nèi)存空間中執(zhí)行所述任務(wù)。當(dāng)接收到調(diào)度器節(jié)點(diǎn)通知執(zhí)行所述任務(wù)的消息時,任務(wù)執(zhí)行容器節(jié)點(diǎn)執(zhí)行任務(wù)。在每一個任務(wù)執(zhí)行容器節(jié)點(diǎn)中,都包含預(yù)先分配的私有內(nèi)存空間和公用內(nèi)存空間,其中私有內(nèi)存空間是對外不可見的,為任務(wù)執(zhí)行容器節(jié)點(diǎn)的本地內(nèi)存模塊,用于在任務(wù)執(zhí)行容器節(jié)點(diǎn)被分配任務(wù)后執(zhí)行任務(wù)以及任務(wù)執(zhí)行容器節(jié)點(diǎn)自身需要執(zhí)行的任務(wù)和程序;公用內(nèi)存空間用于虛擬機(jī)系統(tǒng)整體根據(jù)需要進(jìn)行調(diào)用。405:執(zhí)行所述任務(wù)發(fā)生缺頁錯誤時,則查詢所述全局變量快照的內(nèi)存地址實(shí)際的狀態(tài)。任務(wù)執(zhí)行容器節(jié)點(diǎn)的任務(wù)執(zhí)行模塊接收到消息后會執(zhí)行任務(wù)。在執(zhí)行任務(wù)過程中,當(dāng)調(diào)用任務(wù)所涉及到的全局變量快照時,由于該全局變量快照僅保存了全局變量的地址信息,即內(nèi)存地址,因此會導(dǎo)致調(diào)用全局變量時發(fā)現(xiàn)該全局變量可能不在本地任務(wù)執(zhí)行容器節(jié)點(diǎn)的內(nèi)存地址,由此會觸發(fā)不同的頁面錯誤。具體操作過程為任務(wù)執(zhí)行容器節(jié)點(diǎn)向分布式共享內(nèi)存管理節(jié)點(diǎn)發(fā)送查詢信息,并接收分布式共享內(nèi)存管理節(jié)點(diǎn)的反饋信息。406 :當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在其他資源的公用內(nèi)存空間中,將所述全局變量快照的內(nèi)存地址對應(yīng)的實(shí)際內(nèi)容拷貝到本地。執(zhí)行任務(wù)過程中發(fā)生缺頁錯誤時,本地的內(nèi)存模塊通過向分布式共享內(nèi)存管理節(jié)點(diǎn)發(fā)送消息,查詢該全局變量快照對應(yīng)的頁面信息實(shí)際所在的位置,若頁面信息在別的容器內(nèi),本地的內(nèi)存模塊通過任務(wù)執(zhí)行容器節(jié)點(diǎn)之間的連接將頁面信息實(shí)際內(nèi)容拷貝到本地。具體操作過程為當(dāng)反饋信息中所述任務(wù)對應(yīng)的全局變量快照的頁面信息在其他任務(wù)執(zhí)行容器節(jié)點(diǎn)時,則本地的任務(wù)執(zhí)行容器節(jié)點(diǎn)通過任務(wù)執(zhí)行容器節(jié)點(diǎn)之間的連接將全局變量快照對應(yīng)的頁面信息對應(yīng)的實(shí)際內(nèi)容拷貝到本地。407 :當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在本地的公用內(nèi)存空間中,則在本地的公用內(nèi)存空間中進(jìn)行獲取。具體操作過程為當(dāng)反饋信息中任務(wù)對應(yīng)的全局變量快照的頁面信息在本地的任務(wù)執(zhí)行容器節(jié)點(diǎn)時,則在本地的任務(wù)執(zhí)行容器節(jié)點(diǎn)的公用內(nèi)存空間的緩存中進(jìn)行獲取。408:當(dāng)所述任務(wù)執(zhí)行完畢后,獲取所述全局變量對應(yīng)的新的全局變量快照,根據(jù)所述本地全局變量快照以及所述新的全局變量快照獲取已更新的全局變量。調(diào)度器節(jié)點(diǎn)通過獲取任務(wù)執(zhí)行完畢后的本地全局變量快照,以及該本地全局變量快照對應(yīng)的全局變量在分布式共享內(nèi)存管理節(jié)點(diǎn)中保存的新的全局變量快照,其中新的全局變量快照也是該全局變量對應(yīng)的副本,由于可能存在其他任務(wù)執(zhí)行對該全局變量進(jìn)行了更新的情況,因此新的全局變量快照與本地的全局變量快照有可能不相同,這個對比是通過各個全局變量快照中的版本標(biāo)記來進(jìn)行比對后得到的,如果版本標(biāo)記相同,那么說明沒有其他任務(wù)對該全局變量進(jìn)行修改,因此可以對該全局變量進(jìn)行更新;如果版本標(biāo)記不相同,那么說明其他任務(wù)已經(jīng)在該任務(wù)修改本地全局變量快照前對全局變量進(jìn)行了更新,因此此時的全局變量無法更新為本地的全局變量快照,因此在更新全局變量前需要通過新的全局變量快照和本地全局變量快照對比,查詢一下是否可以進(jìn)行更新。因此步驟408可以具體為判斷所述本地全局變量快照中的版本標(biāo)記與所述新的全局變量快照的版本標(biāo)記是否相同,如果相同則表示所述全局變量未被其他任務(wù)更新;如果不相同則表示所述全局變量已被其他任務(wù)更新。進(jìn)一步的,任務(wù)執(zhí)行完畢后根據(jù)執(zhí)行結(jié)果可以發(fā)送不同的消息,調(diào)度器節(jié)點(diǎn)會根據(jù)消息的類型對執(zhí)行完的任務(wù)以及其所涉及的全局變量快照進(jìn)行更新全局變量的操作或拋棄處理。調(diào)度器節(jié)點(diǎn)的任務(wù)管理模塊接收到任務(wù)執(zhí)行容器節(jié)點(diǎn)的任務(wù)執(zhí)行模塊返回的消息后,根據(jù)不同的消息內(nèi)容做不同的處理。消息具體形式有如下幾種正常退出;作廢退出;創(chuàng)建子任務(wù)。
當(dāng)消息類型為正常退出的任務(wù)時當(dāng)所述任務(wù)執(zhí)行完畢且發(fā)送正常退出的消息時,判斷所述全局變量快照在所述任務(wù)執(zhí)行后是否被修改。具體操作過程為當(dāng)任務(wù)執(zhí)行完畢,調(diào)度器節(jié)點(diǎn)接收所述任務(wù)執(zhí)行容器節(jié)點(diǎn)發(fā)送的正常退出的消息。若所述全局變量快照被修改,判斷所述全局變量快照中的全局變量的狀態(tài)信息與該全局變量的當(dāng)前狀態(tài)信息是否相同,如果相同則在執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述全局變量快照,并更新全局變量的內(nèi)存地址為執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述全局變量快照的內(nèi)存地址;如果不相同則執(zhí)行作廢退出所述任務(wù)的步驟。若任務(wù)對應(yīng)的全局變量快照被修改,首先判斷此時該全局變量快照對應(yīng)的原始全局變量是否已經(jīng)被更新過,通過全局變量快照中的狀態(tài)信息與原始全局變量的狀態(tài)信息進(jìn)行對比,如果相同則代表未更新,此時可以進(jìn)行更新操作;如果不相同則代表已經(jīng)有其他任務(wù)對該全局變量進(jìn)行了更新,此時不可進(jìn)行更新操作,需要對執(zhí)行后的任務(wù)進(jìn)行作廢處理,重新進(jìn)入等待隊(duì)列,等待重新執(zhí)行。保證了被更新的全局變量不會被其他同時并行執(zhí)行的任務(wù)再一次進(jìn)行更新,降低了全局變量并發(fā)讀寫時維護(hù)數(shù)據(jù)一致性的系統(tǒng)開銷。對于可以更新的全局變量,調(diào)度器節(jié)點(diǎn)調(diào)度分布式共享內(nèi)存管理節(jié)點(diǎn)更新原始全局變量的頁面信息,并接收分布式共享內(nèi)存管理節(jié)點(diǎn)更新后的全局變量的頁面信息。具體操作過程為調(diào)度器節(jié)點(diǎn)向任務(wù)執(zhí)行容器節(jié)點(diǎn)發(fā)送提交消息,提交消息使得任務(wù)執(zhí)行容器節(jié)點(diǎn)將被修改全局變量快照在任務(wù)執(zhí)行容器節(jié)點(diǎn)中進(jìn)行保存,并通知任務(wù)執(zhí)行容器節(jié)點(diǎn)上報(bào)被修改全局變量快照頁面對應(yīng)的頁面信息。調(diào)度器節(jié)點(diǎn)接收任務(wù)執(zhí)行容器節(jié)點(diǎn)發(fā)送的被修改的全局變量快照的頁面信息,將任務(wù)執(zhí)行容器的標(biāo)識寫入頁面信息中,并將頁面信息以及全局變量快照發(fā)送至分布式共享內(nèi)存管理節(jié)點(diǎn)。分布式共享內(nèi)存管理節(jié)點(diǎn)根據(jù)接收到的頁面信息以及全局變量快照,刪除建立全局變量快照。分布式共享內(nèi)存管理節(jié)點(diǎn)判斷當(dāng)前是否只有一個任務(wù)執(zhí)行容器節(jié)點(diǎn)對全局變量快照進(jìn)行了修改。若只有一個任務(wù)執(zhí)行容器節(jié)點(diǎn)執(zhí)行的任務(wù)對所述任務(wù)對應(yīng)的全局變量快照進(jìn)行了修改,則分布式共享內(nèi)存管理節(jié)點(diǎn)將被修改的全局變量快照所在頁面信息替換原始全局變量的頁面信息,并向調(diào)度器節(jié)點(diǎn)發(fā)送提交成功的消息,提交成功的消息中攜帶被修改的全局變量的頁面信息。若所述全局變量快照未被修改,則刪除所述全局變量快照。具體操作過程為若所述任務(wù)對應(yīng)的全局變量快照未被修改,則所述調(diào)度器節(jié)點(diǎn)調(diào)度所述分布式共享內(nèi)存管理節(jié)點(diǎn)刪除所述任務(wù)對應(yīng)的全局變量快照,并調(diào)度執(zhí)行任務(wù)等待隊(duì)列中等待的任務(wù)。當(dāng)消息類型為創(chuàng)建子任務(wù)時當(dāng)所述任務(wù)執(zhí)行完畢且發(fā)送創(chuàng)建子任務(wù)的消息時,判斷所述子任務(wù)的同步變量地址信息是否為空,其中所述創(chuàng)建子任務(wù)的消息中至少包括所述子任務(wù)的起始地址,所述子任務(wù)的全局變量的地址信息;當(dāng)所述子任務(wù)需要和其他任務(wù)進(jìn)行同步時,所述創(chuàng)建子任務(wù)的消息中還包括同步變量的地址信息。當(dāng)所述任務(wù)執(zhí)行完畢,所述調(diào)度器節(jié)點(diǎn)接收所述任務(wù)執(zhí)行容器節(jié)點(diǎn)發(fā)送的創(chuàng)建子任務(wù)的消息。如果不為空,則所述子任務(wù)的同步變量觀察區(qū)中添加所述子任務(wù)的同步變量的地址信息,并將所述子任務(wù)放入全局同步任務(wù)等待隊(duì)列,等待其他任務(wù)對所述子任務(wù)涉及的同步變量更新完畢后進(jìn)入執(zhí)行所述子任務(wù)的流程。具體操作過程為調(diào)度器節(jié)點(diǎn)在同步變量觀察區(qū)中添加所述子任務(wù)所涉及到的全局變量的內(nèi)存地址范圍,并將子任務(wù)放入全局同步任務(wù)等待隊(duì)列,等待其他子任務(wù)對全局變量更新完畢。若同步變量觀察區(qū)為空,則代表其他子任務(wù)對全局變量更新完畢,此時調(diào)度器節(jié)點(diǎn)將子任務(wù)放入全局任務(wù)等待隊(duì)列,排隊(duì)等待執(zhí)行任務(wù)。當(dāng)輪到執(zhí)行該子任務(wù)時,調(diào)度器節(jié)點(diǎn)為子任務(wù)分配任務(wù)執(zhí)行容器節(jié)點(diǎn),以及創(chuàng)建快照等步驟。如果為空,則為所述子任務(wù)選擇一個空閑資源,將所述子任務(wù)的全局變量的地址信息中的全局變量的狀態(tài)信息和全局變量的內(nèi)存地址進(jìn)行復(fù)制,為所述子任務(wù)創(chuàng)建全局變量快照,并將所述子任務(wù)的全局變量快照與所述任務(wù)的全局變量快照合并,并在選取的所述空閑資源中執(zhí)行所述子任務(wù)。本步驟的具體操作過程如其父任務(wù)執(zhí)行過程相同,在此不再贅述。當(dāng)消息類型為作廢退出時當(dāng)所述任務(wù)執(zhí)行完畢且發(fā)送作廢退出的消息時,刪除所述全局變量快照。具體操作過程為調(diào)度器節(jié)點(diǎn)調(diào)度分布式共享內(nèi)存管理節(jié)點(diǎn)刪除任務(wù)對應(yīng)的全局變量快照。409:判斷同步任務(wù)等待隊(duì)列中的待執(zhí)行任務(wù)的同步變量是否包括了現(xiàn)在已更新的全局變量,如果有,把這個任務(wù)放入執(zhí)行任務(wù)等待隊(duì)列。其中所述同步任務(wù)等待隊(duì)列中的任務(wù)是等待同步變量觸發(fā)的任務(wù)所在的隊(duì)列,當(dāng)同步任務(wù)等待隊(duì)列中的任務(wù)的同步變量觸發(fā)后,將任務(wù)放入所述執(zhí)行任務(wù)等待隊(duì)列中排隊(duì)等待調(diào)度;所述執(zhí)行任務(wù)等待隊(duì)列中的任務(wù)是等待調(diào)度執(zhí)行的任務(wù)所在的隊(duì)列。當(dāng)任務(wù)執(zhí)行完畢,此時無論該任務(wù)執(zhí)行后是否為正常退出或者是作廢退出,虛擬機(jī)系統(tǒng)在選取下一個執(zhí)行的任務(wù)時,需要考慮到當(dāng)前正在執(zhí)行的所有任務(wù)以及執(zhí)行完畢的任務(wù)涉及的全局變量的內(nèi)存地址,根據(jù)這兩類任務(wù)涉及的全局變量來確定調(diào)度哪一個在任務(wù)等待隊(duì)列中等待的任務(wù)進(jìn)入執(zhí)行流程。執(zhí)行本過程的為虛擬機(jī)系統(tǒng)中的調(diào)度器節(jié)點(diǎn)。根據(jù)當(dāng)前執(zhí)行的所有任務(wù)所涉及的全局變量的內(nèi)存地址,執(zhí)行完畢的任務(wù)涉及的全局變量的內(nèi)存地址,存在兩種調(diào)度機(jī)制。因此步驟409可以具體為4091 :在執(zhí)行任務(wù)等待隊(duì)列中選取一個第一特定任務(wù)由第一空閑資源來運(yùn)行,其中,所述第一特定任務(wù)涉及的全局變量的地址信息與當(dāng)前執(zhí)行的所有任務(wù)所涉及的全局變量的地址信息不沖突。此種情況為優(yōu)先選取當(dāng)前正在執(zhí)行任務(wù)所訪問全局變量不沖突的任務(wù)執(zhí)行。4092 :在執(zhí)行任務(wù)等待隊(duì)列中選取一個第二特定任務(wù)由第二空閑資源來運(yùn)行,其中,所述第二特定任務(wù)涉及的全局變量的地址信息與第二空閑資源已執(zhí)行完畢的任務(wù)所涉及的全局變量的地址信息盡可能多的相同或相近,以增加數(shù)據(jù)親和性。
此種情況為采取數(shù)據(jù)就近的原則,其中地址信息的相近,具體為全局變量所在的內(nèi)存地址相近,例如某全局變量的內(nèi)存地址為0x0010,則可以認(rèn)為0x0011,0x0012,或者OxOOOf等內(nèi)存地址為“相近的”內(nèi)存地址。在任務(wù)等待隊(duì)列中選擇的任務(wù)與之前結(jié)束的任務(wù)所涉及的全局變量的內(nèi)存地址盡可能的相同或相近,其目的是為了增加數(shù)據(jù)親和性,一方面可以增加Cache的命中率,另一方面當(dāng)選擇的任務(wù)與之前結(jié)束的任務(wù)所涉及的全局變量相同,那么在執(zhí)行任務(wù)時則可以根據(jù)全局變量快照直接從當(dāng)前的任務(wù)執(zhí)行容器節(jié)點(diǎn)中獲取該全局變量。本發(fā)明實(shí)施例通過虛擬機(jī)在調(diào)度及執(zhí)行任務(wù)時對各任務(wù)涉及的全局變量的感知,以及在調(diào)度任務(wù)時對任務(wù)涉及的全局變量合理的分配內(nèi)存,盡可能使得各任務(wù)之間涉及的全局變量的內(nèi)存地址不沖突,減少虛擬機(jī)系統(tǒng)為維護(hù)內(nèi)存一致性所產(chǎn)生的開銷,提高虛擬機(jī)系統(tǒng)的可擴(kuò)展性。實(shí)施例三本發(fā)明實(shí)施例提供了一種任務(wù)處理的虛擬機(jī),參見圖5,所述虛擬機(jī)包括調(diào)度器節(jié)點(diǎn)501,分布式共享內(nèi)存管理節(jié)點(diǎn)502,任務(wù)執(zhí)行容器節(jié)點(diǎn)503 ;所述調(diào)度器節(jié)點(diǎn)501包括選取模塊5011,用于當(dāng)接收到虛擬指令層下發(fā)的創(chuàng)建任務(wù)的指令時,為所述任務(wù)選取一個用于執(zhí)行所述任務(wù)的空閑資源,其中所述指令中至少包括所述任務(wù)運(yùn)行時的起始地址,所述任務(wù)涉及的全局變量的地址信息和同步變量的地址信息;第一獲取模塊5012,用于當(dāng)所述任務(wù)執(zhí)行完畢后,獲取所述全局變量對應(yīng)的新的全局變量快照,根據(jù)所述本地全局變量快照以及所述新的全局變量快照獲取已更新的全局變量;判斷模塊5013,用于判斷同步任務(wù)等待隊(duì)列中的待執(zhí)行任務(wù)的同步變量是否包括了現(xiàn)在已更新的全局變量,如果有,把這個任務(wù)放入執(zhí)行任務(wù)等待隊(duì)列;其中所述同步任務(wù)等待隊(duì)列中的任務(wù)是等待同步變量觸發(fā)的任務(wù)所在的隊(duì)列,當(dāng)同步任務(wù)等待隊(duì)列中的任務(wù)的同步變量觸發(fā)后,將任務(wù)放入所述執(zhí)行任務(wù)等待隊(duì)列中排隊(duì)等待調(diào)度;所述執(zhí)行任務(wù)等待隊(duì)列中的任務(wù)是等待調(diào)度執(zhí)行的任務(wù)所在的隊(duì)列;所述分布式共享內(nèi)存管理節(jié)點(diǎn)502包括第二獲取模塊5021,用于根據(jù)所述全局變量的地址信息獲取與所述全局變量地址信息對應(yīng)的全局變量狀態(tài)信息;創(chuàng)建模塊5022,用于根據(jù)全局變量狀態(tài)信息為全局變量創(chuàng)建本地全局變量快照;所述任務(wù)執(zhí)行容器節(jié)點(diǎn)503包括執(zhí)行模塊5031,用于根據(jù)所述本地全局變量快照在選取的所述空閑資源中預(yù)先分配的私有內(nèi)存空間中執(zhí)行所述任務(wù)。其中在具體實(shí)施方式
中,所述判斷模塊5013,包括第一處理單元50131,用于在執(zhí)行任務(wù)等待隊(duì)列中選取一個第一特定任務(wù)由第一空閑資源來運(yùn)行,其中,所述第一特定任務(wù)涉及的全局變量與當(dāng)前執(zhí)行的所有任務(wù)所涉及的全局變量不沖突;第二處理單元50132,用于在執(zhí)行任務(wù)等待隊(duì)列中選取一個第二特定任務(wù)由第二空閑資源來運(yùn)行,其中,所述第二特定任務(wù)涉及的全局變量與第二空閑資源已執(zhí)行完畢的任務(wù)所涉及的全局變量盡可能多的相同或相近,以增加數(shù)據(jù)親和性。其中,所述全局變量狀態(tài)信息包括所述全局變量的內(nèi)存地址,創(chuàng)建時間以及版本標(biāo)記,所述創(chuàng)建模塊5022包括根據(jù)所述全局變量狀態(tài)信息,將所述全局變量狀態(tài)信息進(jìn)行復(fù)制,生成所述全局變量的全局變量快照;相應(yīng)的,所述第一獲取模塊5012具體用于判斷所述本地全局變量快照中的版本標(biāo)記與所述新的全局變量快照的版本標(biāo)記是否相同,如果相同則表示所述全局變量未被其他任務(wù)更新;如果不相同則表示所述全局變量已被其他任務(wù)更新。其中,所述調(diào)度器節(jié)點(diǎn)501還包括更新模塊5014,用于當(dāng)全局變量未被其他任務(wù)更新時,在執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述本地全局變量快照,并更新全局變量的內(nèi)存地址為執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述全局變量快照的內(nèi)存地址,將所述本地全局變量快照更新為所述本地全局變量快照。其中,所述任務(wù)執(zhí)行容器節(jié)點(diǎn)503還包括查詢模塊5032,用于執(zhí)行所述任務(wù)發(fā)生缺頁錯誤時,則查詢所述全局變量快照的內(nèi)存地址實(shí)際的狀態(tài);拷貝模塊5033,用于當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在其他資源的公用內(nèi)存空間中,將所述全局變量快照的內(nèi)存地址對應(yīng)的實(shí)際內(nèi)容拷貝到本地;第三獲取模塊5034,用于當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在本地的公用內(nèi)存空間中,則在本地的公用內(nèi)存空間中進(jìn)行獲取。本發(fā)明實(shí)施例通過虛擬機(jī)在調(diào)度及執(zhí)行任務(wù)時對各任務(wù)涉及的全局變量的感知,以及在調(diào)度任務(wù)時對任務(wù)涉及的全局變量合理的分配內(nèi)存,盡可能使得各任務(wù)之間涉及的全局變量的內(nèi)存地址不沖突,減少虛擬機(jī)系統(tǒng)為維護(hù)內(nèi)存一致性所產(chǎn)生的開銷,提高虛擬機(jī)系統(tǒng)的可擴(kuò)展性。實(shí)施例四參見圖6,本實(shí)施例還提供了 一種計(jì)算機(jī)設(shè)備60,包括處理器61,存儲器62,存儲器中存儲有代碼,處理器用于讀取代碼,并執(zhí)行上述各實(shí)施例中的方法;其中,本實(shí)施例中,處理器執(zhí)行方法時,各個涉及的軟件上的功能單元(或者在代碼層面,可認(rèn)為是幾個不同功能的代碼段)可以認(rèn)為是實(shí)施例三中的各個模塊,其具體執(zhí)行的方法可參見上述各實(shí)施例,這里不再贅述。上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計(jì)算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種任務(wù)處理的方法,其特征在于,所述方法包括 當(dāng)接收到虛擬指令層下發(fā)的創(chuàng)建任務(wù)的指令時,為所述任務(wù)選取一個用于執(zhí)行所述任務(wù)的空閑資源,其中所述指令中至少包括所述任務(wù)運(yùn)行時的起始地址,所述任務(wù)涉及的全局變量的地址信息和同步變量的地址信息; 根據(jù)所述全局變量的地址信息獲取與所述全局變量地址信息對應(yīng)的全局變量狀態(tài)信息; 根據(jù)全局變量狀態(tài)信息為全局變量創(chuàng)建本地全局變量快照; 根據(jù)所述本地全局變量快照在選取的所述空閑資源中預(yù)先分配的私有內(nèi)存空間中執(zhí)行所述任務(wù); 當(dāng)所述任務(wù)執(zhí)行完畢后,獲取所述全局變量對應(yīng)的新的全局變量快照,根據(jù)所述本地全局變量快照以及所述新的全局變量快照獲取已更新的全局變量; 判斷同步任務(wù)等待隊(duì)列中的待執(zhí)行任務(wù)的同步變量是否包括了現(xiàn)在已更新的全局變量,如果有,把這個任務(wù)放入執(zhí)行任務(wù)等待隊(duì)列; 其中所述同步任務(wù)等待隊(duì)列中的任務(wù)是等待同步變量觸發(fā)的任務(wù)所在的隊(duì)列,當(dāng)同步任務(wù)等待隊(duì)列中的任務(wù)的同步變量觸發(fā)后,將任務(wù)放入所述執(zhí)行任務(wù)等待隊(duì)列中排隊(duì)等待調(diào)度;所述執(zhí)行任務(wù)等待隊(duì)列中的任務(wù)是等待調(diào)度執(zhí)行的任務(wù)所在的隊(duì)列。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷同步任務(wù)等待隊(duì)列中的待執(zhí)行任務(wù)的同步變量是否包括了現(xiàn)在已更新的全局變量,如果有,把這個任務(wù)放入執(zhí)行任務(wù)等待隊(duì)列,包括 在執(zhí)行任務(wù)等待隊(duì)列中選取一個第一特定任務(wù)由第一空閑資源來運(yùn)行,其中,所述第一特定任務(wù)涉及的全局變量的地址信息與當(dāng)前執(zhí)行的所有任務(wù)所涉及的全局變量的地址信息不沖突;或, 在執(zhí)行任務(wù)等待隊(duì)列中選取一個第二特定任務(wù)由第二空閑資源來運(yùn)行,其中,所述第二特定任務(wù)涉及的全局變量的地址信息與第二空閑資源已執(zhí)行完畢的任務(wù)所涉及的全局變量的地址信息盡可能多的相同或相近,以增加數(shù)據(jù)親和性。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述全局變量狀態(tài)信息包括所述全局變量的內(nèi)存地址,創(chuàng)建時間以及版本標(biāo)記,所述根據(jù)全局變量狀態(tài)信息為全局變量創(chuàng)建全局變量快照包括根據(jù)所述全局變量狀態(tài)信息,將所述全局變量狀態(tài)信息進(jìn)行復(fù)制,生成所述全局變量的全局變量快照; 相應(yīng)的,所述根據(jù)所述本地全局變量快照以及所述新的全局變量快照獲取已更新的全局變量包括 判斷所述本地全局變量快照中的版本標(biāo)記與所述新的全局變量快照的版本標(biāo)記是否相同,如果相同則表示所述全局變量未被其他任務(wù)更新;如果不相同則表示所述全局變量已被其他任務(wù)更新。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述本地全局變量快照以及所述新的全局變量快照獲取已更新的全局變量之后,所述方法還包括 當(dāng)全局變量未被其他任務(wù)更新時,在執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述本地全局變量快照,并更新全局變量的內(nèi)存地址為執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述全局變量快照的內(nèi)存地址,將所述本地全局變量快照更新為所述本地全局變量快照。
5.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述全局變量快照在選取的所述空閑資源中預(yù)先分配的私有內(nèi)存空間中執(zhí)行所述任務(wù)之后,所述方法還包括 執(zhí)行所述任務(wù)發(fā)生缺頁錯誤時,則查詢所述全局變量快照的內(nèi)存地址實(shí)際的狀態(tài);當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在其他資源的公用內(nèi)存空間中,將所述全局變量快照的內(nèi)存地址對應(yīng)的實(shí)際內(nèi)容拷貝到本地; 當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在本地的公用內(nèi)存空間中,則在本地的公用內(nèi)存空間中進(jìn)行獲取。
6.一種任務(wù)處理的虛擬機(jī),其特征在于,所述虛擬機(jī)包括 調(diào)度器節(jié)點(diǎn),分布式共享內(nèi)存管理節(jié)點(diǎn),任務(wù)執(zhí)行容器節(jié)點(diǎn); 所述調(diào)度器節(jié)點(diǎn)包括 選取模塊,用于當(dāng)接收到虛擬指令層下發(fā)的創(chuàng)建任務(wù)的指令時,為所述任務(wù)選取一個用于執(zhí)行所述任務(wù)的空閑資源,其中所述指令中至少包括所述任務(wù)運(yùn)行時的起始地址,所述任務(wù)涉及的全局變量的地址信息和同步變量的地址信息; 第一獲取模塊,用于當(dāng)所述任務(wù)執(zhí)行完畢后,獲取所述全局變量對應(yīng)的新的全局變量快照,根據(jù)所述本地全局變量快照以及所述新的全局變量快照獲取已更新的全局變量; 判斷模塊,用于判斷同步任務(wù)等待隊(duì)列中的待執(zhí)行任務(wù)的同步變量是否包括了現(xiàn)在已更新的全局變量,如果有,把這個任務(wù)放入執(zhí)行任務(wù)等待隊(duì)列; 其中所述同步任務(wù)等待隊(duì)列中的任務(wù)是等待同步變量觸發(fā)的任務(wù)所在的隊(duì)列,當(dāng)同步任務(wù)等待隊(duì)列中的任務(wù)的同步變量觸發(fā)后,將任務(wù)放入所述執(zhí)行任務(wù)等待隊(duì)列中排隊(duì)等待調(diào)度;所述執(zhí)行任務(wù)等待隊(duì)列中的任務(wù)是等待調(diào)度執(zhí)行的任務(wù)所在的隊(duì)列; 所述分布式共享內(nèi)存管理節(jié)點(diǎn)包括 第二獲取模塊,用于根據(jù)所述全局變量的地址信息獲取與所述全局變量地址信息對應(yīng)的全局變量狀態(tài)信息; 創(chuàng)建模塊,用于根據(jù)全局變量狀態(tài)信息為全局變量創(chuàng)建本地全局變量快照; 所述任務(wù)執(zhí)行容器節(jié)點(diǎn)包括 執(zhí)行模塊,用于根據(jù)所述本地全局變量快照在選取的所述空閑資源中預(yù)先分配的私有內(nèi)存空間中執(zhí)行所述任務(wù)。
7.根據(jù)權(quán)利要求6所述的虛擬機(jī),其特征在于,所述判斷模塊,包括 第一處理單元,用于在執(zhí)行任務(wù)等待隊(duì)列中選取一個第一特定任務(wù)由第一空閑資源來運(yùn)行,其中,所述第一特定任務(wù)涉及的全局變量與當(dāng)前執(zhí)行的所有任務(wù)所涉及的全局變量不沖突; 第二處理單元,用于在執(zhí)行任務(wù)等待隊(duì)列中選取一個第二特定任務(wù)由第二空閑資源來運(yùn)行,其中,所述第二特定任務(wù)涉及的全局變量與第二空閑資源已執(zhí)行完畢的任務(wù)所涉及的全局變量盡可能多的相同或相近,以增加數(shù)據(jù)親和性。
8.根據(jù)權(quán)利要求6所述的虛擬機(jī),其特征在于,所述全局變量狀態(tài)信息包括所述全局變量的內(nèi)存地址,創(chuàng)建時間以及版本標(biāo)記, 所述創(chuàng)建模塊包括根據(jù)所述全局變量狀態(tài)信息,將所述全局變量狀態(tài)信息進(jìn)行復(fù)制,生成所述全局變量的全局變量快照;相應(yīng)的,所述第一獲取模塊具體用于 判斷所述本地全局變量快照中的版本標(biāo)記與所述新的全局變量快照的版本標(biāo)記是否相同,如果相同則表示所述全局變量未被其他任務(wù)更新;如果不相同則表示所述全局變量已被其他任務(wù)更新。
9.根據(jù)權(quán)利要求8所述的虛擬機(jī),其特征在于,所述調(diào)度器節(jié)點(diǎn)還包括 更新模塊,用于當(dāng)全局變量未被其他任務(wù)更新時,在執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述本地全局變量快照,并更新全局變量的內(nèi)存地址為執(zhí)行所述任務(wù)的資源中的公用內(nèi)存空間中保存所述全局變量快照的內(nèi)存地址,將所述本地全局變量快照更新為所述本地全局變量快照。
10.根據(jù)權(quán)利要求6-8任一項(xiàng)所述的虛擬機(jī),其特征在于,所述任務(wù)執(zhí)行容器節(jié)點(diǎn)還包括 查詢模塊,用于執(zhí)行所述任務(wù)發(fā)生缺頁錯誤時,則查詢所述全局變量快照的內(nèi)存地址實(shí)際的狀態(tài); 拷貝模塊,用于當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在其他資源的公用內(nèi)存空間中,將所述全局變量快照的內(nèi)存地址對應(yīng)的實(shí)際內(nèi)容拷貝到本地; 第三獲取模塊,用于當(dāng)所述任務(wù)對應(yīng)的全局變量快照的內(nèi)存地址在本地的公用內(nèi)存空間中,則在本地的公用內(nèi)存空間中進(jìn)行獲取。
全文摘要
本發(fā)明公開了一種任務(wù)處理的方法和虛擬機(jī),屬于計(jì)算機(jī)技術(shù)領(lǐng)域。所述方法包括為任務(wù)在選取一個空閑資源;為全局變量創(chuàng)建全局變量快照;在選取的空閑資源中的私有內(nèi)存空間中執(zhí)行任務(wù);當(dāng)任務(wù)執(zhí)行完畢后,獲取全局變量對應(yīng)的新的全局變量快照,根據(jù)本地全局變量快照以及新的全局變量快照獲取已更新的全局變量;判斷同步任務(wù)等待隊(duì)列中的待執(zhí)行任務(wù)的同步變量是否包括了現(xiàn)在已更新的全局變量,如果有,把這個任務(wù)放入執(zhí)行任務(wù)等待隊(duì)列。本發(fā)明通過虛擬機(jī)執(zhí)行任務(wù)時對任務(wù)涉及的全局變量的感知,以及在調(diào)度任務(wù)時對任務(wù)涉及的全局變量合理的分配內(nèi)存,使各任務(wù)之間涉及的全局變量的內(nèi)存地址不沖突,減少虛擬機(jī)系統(tǒng)為維護(hù)內(nèi)存一致性所產(chǎn)生的開銷。
文檔編號G06F9/50GK103049334SQ201210543870
公開日2013年4月17日 申請日期2012年12月14日 優(yōu)先權(quán)日2012年12月14日
發(fā)明者顧磷, 馬志強(qiáng), 盛中華, 文劉飛 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
文水县| 胶南市| 潜江市| 长顺县| 灵山县| 社旗县| 泸溪县| 汝南县| 平乡县| 五指山市| 德令哈市| 龙里县| 辽中县| 新乡市| 东源县| 禹城市| 新乐市| 肥东县| 龙山县| 城市| 诸城市| 高碑店市| 海兴县| 囊谦县| 玛纳斯县| 加查县| 宜宾县| 六安市| 泰安市| 龙口市| 正阳县| 锡林郭勒盟| 嵩明县| 同心县| 泰和县| 长海县| 沧源| 和静县| 漾濞| 色达县| 托里县|