一種任務處理方法及系統的制作方法
【專利摘要】本發明公開了一種任務處理方法及系統,可以使用擴展指令獲得任務所需訪問的堆地址信息、任務所需訪問的棧地址信息和任務中待執行指令的地址信息并根據這些地址信息對任務進行調度處理或內存優化處理。由于并行任務執行過程中的效率受限于這些地址信息,本發明通過對這些地址信息進行調度處理或內存優化處理,可以有效提高任務執行的效率,縮短任務執行的時間。
【專利說明】一種任務處理方法及系統
【技術領域】
[0001]本發明涉及任務處理【技術領域】,特別是涉及一種任務處理方法及系統。
【背景技術】
[0002]機群系統是互相連接的多個獨立計算機(又稱為計算節點)的集合,這些計算機可以是單機或多處理器系統,每個結點都有自己的存儲器、I/o設備和操作系統。機群系統對用戶和應用來說是一個單一的系統,即呈現單一系統映像,它可以提供低價高效的高性能環境和快速可靠的服務。
[0003]為使機群系統呈現單一系統映像,機群系統中所有計算節點的存儲空間在是全局編址的,通過相應的一致性模型和一致性協議來保證和維護各個節點地址空間的一致性。
[0004]可以采用分布式共享存儲(DSM, Distributed Shared Memory)的方式共享內存,將各個計算節點的內存進行共享,以增大內存空間,但這也帶來了以下問題:
[0005]由于一個任務執行中會用到多個數據,而這多個數據一般是按順序放在內存地址中的,因此為了提高數據的讀取速度,一般采用內存頁面的方式來對數據進行讀寫,一個頁中包含多個數據。機群系統具有多個計算節點,因此可以并行執行多個任務。當第一任務和第二任務需要同時訪問同一內存頁面中不同的數據時,雖然第一任務和第二任務所訪問的內存地址不同,但現有的任務處理方法也會讓其中的一個任務無效,等待另一個任務執行完畢且根據執行結果將該內存頁面中的數據更新后,再執行之前無效的任務,這無疑降低了任務的執行效率。
【發明內容】
[0006]為解決上述技術問題,本發明實施例提供一種任務處理方法及系統,以實現提高任務執行效率的目的,技術方案如下:
[0007]第一方面,本發明實施例提供了一種任務處理方法,包括:
[0008]使用第一擴展指令創建任務并使用所述第一擴展指令獲得所述任務執行所需的內存地址信息,其中,所述任務執行所需的內存地址信息包括:所述任務所需訪問的堆地址信息、所述任務所需訪問的棧地址信息和所述任務中待執行指令的地址信息;
[0009]根據所述任務執行所需的內存地址信息對所述任務進行調度處理和/或根據所述任務執行所需的內存地址信息對所述任務進行內存優化處理。
[0010]在第一方面的第一種可能的實現方式中,所述任務執行所需的內存地址信息還包括:
[0011]所述任務需同步的全局變量信息。
[0012]結合第一方面,或第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,本發明實施例提供的一種任務處理方法還包括:
[0013]使用第二擴展指令結束所述任務并使用所述第二擴展指令獲得所述任務的執行結束信息,其中,所述任務的執行結束信息包括:所述任務正常結束的信息和所述任務異常結束的信息;
[0014]根據所述第二擴展指令獲得的所述任務的執行結束信息對所述任務占用的資源進行釋放處理。
[0015]在第一方面的第三種可能的實現方式中,根據所述任務執行所需的內存地址信息對所述任務進行調度處理,包括:
[0016]對所述任務所需訪問的堆地址信息創建快照并初始化所述任務的執行上下文,根據所述任務執行所需的內存地址信息選擇一計算節點執行所述任務。
[0017]結合第一方面的第一種可能的實現方式,在第一方面的第四種可能的實現方式中,根據所述任務執行所需的內存地址信息對所述任務進行調度處理,包括:
[0018]等待所述需同步的全局變量信息的內容更新后,對所述任務需訪問的堆地址信息創建快照并初始化任務執行上下文,根據所述任務執行所需的內存地址信息選擇一計算節點執行所述任務。
[0019]結合第一方面,或第一方面的第一種可能的實現方式,在第一方面的第五種可能的實現方式中,所述根據所述任務執行所需的內存地址信息對所述任務進行內存優化處理,包括:
[0020]將所述任務執行所需的內存地址信息反饋給編譯器,以使所述編譯器重新為所述任務分配內存地址。
[0021]結合第一方面的第二種可能的實現方式,在第一方面的第六種可能的實現方式中,所述根據所述第二擴展指令獲得的所述任務的執行結束信息對所述任務占用的資源進行釋放處理,包括:
[0022]判斷所述任務為正常結束還是異常結束,如果為正常結束,則提交所述任務更新后的全局變量信息,釋放所述任務所占用資源,刪除所述任務創建的快照;如果為異常結束,則釋放所述任務所占用的資源,刪除所述任務創建的快照。
[0023]結合第一方面的第六種可能的實現方式,在第一方面的第七種可能的實現方式中,在所述任務為異常結束的情況下,釋放所述任務所占用的資源,刪除所述快照后,還包括:
[0024]重新執行所述根據所述任務執行所需的內存地址信息對所述任務進行調度處理和/或根據所述任務執行所需的內存地址信息對所述任務進行內存優化處理的步驟。
[0025]第二方面,本發明實施例提供了一種任務處理系統,包括:第一獲取模塊和任務調度模塊,
[0026]所述第一獲取模塊使用第一擴展指令創建任務并使用所述第一擴展指令獲得所述任務執行所需的內存地址信息,發送至所述任務調度模塊中,其中,所述任務執行所需的內存地址信息包括:所述任務所需訪問的堆地址信息、所述任務所需訪問的棧地址信息和所述任務中待執行指令的地址信息;
[0027]所述任務調度模塊根據第一獲取模塊發送的所述任務執行所需的內存地址信息對所述任務進行調度處理和/或根據所述任務執行所需的內存地址信息對所述任務進行內存優化處理。
[0028]在第二方面的第一種可能的實現方式中,所述任務執行所需的內存地址信息還包括:[0029]所述任務需同步的全局變量信息。
[0030]結合第二方面,或第二方面的第一種可能的實現方式,在第二方面的第二種可能的實現方式中,本發明實施例提供的一種任務處理系統還包括:執行結束信息獲取模塊和任務結束處理模塊,
[0031]所述執行結束信息獲取模塊使用第二擴展指令結束所述任務并使用所述第二擴展指令獲得所述任務的執行結束信息并發送至所述任務結束處理模塊中,其中,所述任務的執行結束信息包括:所述任務正常結束的信息和所述任務異常結束的信息;
[0032]所述任務結束處理模塊根據執行結束信息獲取模塊發送的所述任務的執行結束信息對所述任務占用的資源進行釋放處理。
[0033]在第二方面的第三種可能的實現方式中,所述任務調度模塊包括:第一調度子模塊,
[0034]所述第一調度子模塊對所述任務所需訪問的堆地址信息創建快照并初始化所述任務的執行上下文,根據所述任務執行所需的內存地址信息選擇一計算節點執行所述任務。
[0035]結合第二方面的第一種可能的實現方式,在第二方面的第四種可能的實現方式中,所述任務調度模塊包括:第二調度子模塊,
[0036]所述第二調度子模塊等待所述需同步的全局變量信息的內容更新后,對所述任務需訪問的堆地址信息創建快照并初始化任務執行上下文,根據所述任務執行所需的內存地址信息選擇一計算節點執行所述任務。
[0037]結合第二方面,或第二方面的第一種可能的實現方式,在第二方面的第五種可能的實現方式中,所述任務調度模塊包括:地址信息發送子模塊,
[0038]所述地址信息發送子模塊將所述任務執行所需的內存地址信息反饋給編譯器,以使所述編譯器重新為所述任務分配內存地址。
[0039]結合第二方面的第二種可能的實現方式,在第二方面的第六種可能的實現方式中,所述任務結束處理模塊,包括:結束判斷子模塊、異常結束處理子模塊和正常結束處理子模塊,
[0040]所述結束判斷子模塊結束所述任務并判斷所述任務為正常結束還是異常結束,在所述任務異常結束時,觸發所述異常結束處理子模塊,在所述任務正常結束的情況下,觸發所述正常結束處理子模塊;
[0041]所述異常結束處理子模塊,用于釋放所述任務所占用的資源,刪除所述任務創建的快照;
[0042]所述正常結束處理子模塊,用于提交更新后的全局變量信息,釋放所述任務所占用的資源,刪除所述任務創建的快照。
[0043]結合第二方面的第六種可能的實現方式,在第二方面的第七種可能的實現方式中,本發明實施例提供的一種任務處理系統還包括:重新執行模塊,用于在所述異常結束處理子模塊釋放所述任務所占用的資源,刪除所述快照后,重新觸發所述任務調度模塊。
[0044]通過應用以上技術方案,本發明實施例提供的一種任務處理方法及系統,可以使用擴展指令獲得任務所需訪問的堆地址信息、任務所需訪問的棧地址信息和任務中待執行指令的地址信息并根據這些地址信息對任務進行調度處理或內存優化處理。由于并行任務執行過程中的效率受限于這些地址信息,本發明通過對這些地址信息進行調度處理或內存優化處理,可以有效提高任務執行的效率,縮短任務執行的時間。
【專利附圖】
【附圖說明】
[0045]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明中記載的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0046]圖1為本發明實施例提供的一種任務處理方法的流程示意圖;
[0047]圖2為本發明實施例提供的另一種任務處理方法的流程示意圖;
[0048]圖3為本發明實施例提供的應用程序的執行示意圖;
[0049]圖4為本發明實施例提供的另一種任務處理方法的流程示意圖;
[0050]圖5為本發明實施例提供的另一種任務處理方法的流程示意圖;
[0051]圖6為本發明實施例提供的另一種任務處理方法的流程示意圖;
[0052]圖7為本發明實施例提供的一種任務處理系統的結構示意圖;
[0053]圖8為本發明實施例提供的另一種任務處理系統的結構示意圖;
[0054]圖9為本發明實施例提供的另一種任務處理系統的結構示意圖;
[0055]圖10為本發明實施例提供的另一種任務處理系統的結構示意圖;
[0056]圖11為本發明實施例提供的另一種任務處理系統的結構示意圖;
[0057]圖12為本發明實施例提供的另一種任務處理系統的結構示意圖;
[0058]圖13為本發明實施例提供的另一種任務處理系統的結構示意圖。
【具體實施方式】
[0059]為了使本【技術領域】的人員更好地理解本發明中的技術方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本發明保護的范圍。
[0060]首先對可以實施本發明的一種構架進行說明,可以理解的是,該構架僅僅是可以實施本發明所提供方案的多個構架中的一種,本發明并不限定具體的實施構架。
[0061]本發明可以在機群系統中實施,機群系統是互相連接的多個獨立計算機(又稱為計算節點)的集合,這些計算機可以是單機或多處理器系統,每個結點都有自己的存儲器、I/o設備和操作系統。機群系統對用戶和應用來說是一個單一的系統,即呈現單一系統映像,它可以提供低價高效的高性能環境和快速可靠的服務。為使機群系統呈現單一系統映像,機群系統中所有計算節點的存儲空間在邏輯上是全局編址的,通過相應的一致性模型和一致性協議來保證和維護各個節點地址空間的一致性。當然本發明還可以在其他架構中實施,如云系統。
[0062]如圖1所示,本發明實施例提供的一種任務處理方法,可以包括:
[0063]S100、使用第一擴展指令創建任務并使用該第一擴展指令獲得所述任務執行所需的內存地址信息,其中,所述任務執行所需的內存地址信息包括:所述任務所需訪問的堆地址信息、所述任務所需訪問的棧地址信息和所述任務中待執行指令的地址信息;
[0064]其中,任務執行所需的內存地址信息還可以包括:所述任務需同步的全局變量信息。本領域技術人員可以理解的是,由于僅有部分任務攜帶有需同步的全局變量信息,因此第一擴展指令可以僅獲得任務所需訪問的堆地址信息、任務所需訪問的棧地址信息和任務中待執行指令的地址信息。
[0065]在實際應用中,還可以使用第一擴展指令獲得其他信息,如文件描述句柄信息,本發明在此不做限定。
[0066]可以理解的是,在創建任務時就使用擴展指令獲得任務所需訪問的堆地址信息、任務所需訪問的棧地址信息和任務中待執行指令的地址信息可以簡化流程,便于任務調度器基于這些信息進行合理的調度或使得編譯器基于這些信息對任務重新分配內存地址。
[0067]其中,棧地址信息可以包括棧的起始位置和棧的大小。棧地址是各計算節點的私有地址,各計算節點對棧地址的數據修改操作對全局地址是不可見的。堆地址信息可以包括堆的起始位置和堆的大小,堆內存儲的信息是全局共享的,對堆內存儲數據的修改是對全局可見的。待執行指令的地址信息指明了新創建的任務需要執行的指令流的入口地址信息。需同步的全局變量信息包含了和其他任務進行同步的變量地址信息。
[0068]其中,堆地址信息可以為堆地址,棧地址信息可以為棧地址。
[0069]在實際應用中,第一擴展指令可以作為擴展的基本指令加入到基本指令集中。可以理解的是,指令集是計算機能夠執行的指令的集合,它是計算機資源的良好的抽象。基本指令是在各種任務執行過程中所經常用到的一些指令,如mov、add、or等。如表I所示,為一種基本指令集:
[00"70] 表I基本指令集表[0071]指令__操作數__^_
mov mov m/imm, m將操作數I傳送到操作數2
add add m/imm, m/imm, m相加(操作數1+操作數2->操作數3)
sub sub m/imm, m/imm, m相減(操作數1-操作數2->操作數3)
mul mul m/imm, m/imm.m相乘(操作數I*操作數2->操作數3)
div sub m/imm, m/imm, m相除(操作數I/操作數2->操作數3)
and and m/imm, m/imm, m位與(操作數I AND操作數2->操作數3)
or or m/imm, m/imm, m位或(操作數I OR操作數2->操作數3)
位異或(操作數I XOR操作數2->操作數
xor XOi m/imm.m/imm.m ^_i)_
分支(比較操作數I和操作數2,根據結
brbr:con m/imm, m/imm.moffs*
果con跳轉到操作數3)
注釋:
m為內存地址,imm為立即數,moffs*為一內存地址,con為轉移條件
[0072]其中,mov為數據傳送類指令,add、sub、mul、div、and、or和xor為運算類指令,
br為程序控制類指令。使用表1中列出的基本指令即可實現大多數的計算應用。為了支 持機群環境中任務的并行調度和管理,本發明中引入了與任務相關的指令:第一擴展指令。 在實際應用中,可以把第一擴展指
[0073]令也加入到基本指令集中。具體的,第一擴展指令可以如表2所示:
[0074]表2第一擴展指令操作數表
[0075]
指令__操作數__?_
newr newr m I,m2, moffs*創建新的任務
newr的三個參數ml, m2, moffs*分別為:找地址、堆地址和第一條指令地址(由于從 第一指令開始執行,因此首先獲得的待執行指令的地址信息為第一條指令地址)
[0076]當任務執行所需的內存地址信息也包括任務需同步的全局變量信息時,第一擴展指令可以如表3所示:
[0077]表3第一擴展指令操作數表
[0078]指令__操作數__^_
newr newr ml, m2, m3, moffs*創建新的任務
newr的四個參數ml, m2, m3,moffs*分別為:棧地址、堆地址、同步全局更量和第一 條指令地址
[0079]其中,如表2及表3所示,根據參數ml (棧地址)可以獲得棧地址信息,根據參數m2 (堆地址)可以獲得堆地址信息,根據參數m3 (同步全局變量)可以獲得任務需同步的全局變量信息,根據參數moffs* (第一條指令地址)可以獲得任務中待執行指令的地址信息。可以理解的是,表2及表3中使用newr對第一擴展指令進行了命名,在本發明提供的其他實施例中,還可以使用其他名稱對第一擴展指令進行命名。
[0080]S200、根據所述任務執行所需的內存地址信息對所述任務進行調度處理和/或根據所述任務執行所需的內存地址信息對所述任務進行內存優化處理。
[0081]可以理解的是,在獲得以上信息以后,可以對任務進行調度處理或內存優化處理。具體的,可以根據以上信息選擇處于空閑狀態的計算節點執行該任務,可以選擇距離該任務所需訪問內存地址所對應的物理內存地址相近的計算節點執行該任務,也可以使得編譯器根據以上信息對重新分配該任務所需訪問的內存地址以對所需訪問的內存地址進行優化。
[0082]舉例來說:在機群系統中,為了提高系統運行效率,往往需要并行執行多個任務,將這多個任務分配給不同的計算節點。為了簡化對機群系統內存的管理,一般情況下使用“頁”對機群系統的虛擬內存進行劃分,劃分出多個虛擬內存頁面,每個虛擬內存頁面中都包含有多個連續的虛擬內存地址。可以理解的是,為了可以訪問到所需訪問的物理地址,還需要提供虛擬內存地址與物理地址之間的對應關系。由于不同任務執行過程中需要訪問的虛擬內存地址不定,這也帶 來了并行任務執行過程中可能存在至少兩個并行任務需要訪問同一虛擬內存頁面中不同的虛擬內存地址的情況。當出現這種情況時,傳統的任務處理方法是僅執行其中的一個任務,而讓其他任務等待,這種方法無疑降低了機群系統的效率。而本發明可以在獲得任務執行所需的內存地址信息后,可以根據所述任務執行所需的內存地址信息對任務進行調度處理和/或根據所述任務執行所需的內存地址信息對所述任務進行內存優化處理。
[0083]其中,任務調度處理的具體方式可以為:對并行任務所需訪問的同一個虛擬內存頁面進行快照處理。當僅有兩個并行任務訪問同一虛擬內存頁面時,可以對該虛擬內存頁面進行一次快照處理,將該虛擬內存頁面復制到不同于該虛擬內存頁面的其他空閑虛擬內存地址中。這樣,這兩個并行任務就可以分別訪問原始的虛擬內存頁面和快照獲得的虛擬內存頁面,不用再進行等待。
[0084]當然,還可以有其他的調度處理方式,如:重新整理任務的執行順序,以使并行執行的多個任務執行時不再涉及相同的內存頁面。舉例來說,假設第一任務、第二任務首先并行執行,然后第三任務和第四任務并行執行,第一任務和第二任務都需要訪問第一內存頁面中的內存地址,第三任務和第四任務都需要訪問第二內存頁面中的內存地址。本發明可以控制第一任務和第三任務并行執行,第二任務和第四任務并行執行,這樣在以上四個任務并行執行過程中就不會出現并行任務訪問相同內存地址的情況。
[0085]另一種任務調度處理方式是,選擇距離任務所需訪問內存地址所對應的物理內存地址相近的計算節點執行該任務。可以理解的是,計算節點訪問距離自己較近物理內存地址可以在更短的訪問路徑上完成數據訪問,從而縮短讀取時間,增加任務的執行速度。在處理多個任務時,如果多個任務所需訪問的虛擬內存地址對應的物理內存地址都距離某計算節點較近,則可以選擇該計算節點執行這多個任務,可以進一步加快任務的執行效率。
[0086]因此,根據所述任務執行所需的內存地址信息對所述任務進行調度處理,可以包括:對所述任務所需訪問的堆地址信息創建快照并初始化所述任務的執行上下文,根據所述任務執行所需的內存地址信息選擇一計算節點執行所述任務。
[0087]可以理解的是,對所述任務所需訪問的堆地址信息創建快照并初始化所述任務的執行上下文是任務被執行前的準備步驟。
[0088]其中,根據所述任務執行所需的內存地址信息對所述任務進行內存優化處理,可以包括:將所述任務執行所需的內存地址信息反饋給編譯器,以使所述編譯器重新為所述任務分配內存地址。
[0089]例如,編譯器為A任務分配了虛擬內存地址0001到0010,為B任務分配了虛擬地址0011到0020。假設一個虛擬內存頁面中包括有1024個虛擬內存地址,那么從0000開始,到1023結束,為一個虛擬內存頁面。從1024開始,到2047結束,為另一個虛擬內存頁面。本發明在獲得任務A和任務B執行所需的內存地址信息后,就可以得知這兩個任務所需訪問的虛擬內存地址位于同一個虛擬內存頁面中。本發明還可以將以上信息反饋給編譯器,使編譯器重新為A任務和/或B任務分配內存地址。
[0090]分配的方法有多種,如,僅重新分配A任務所需訪問的虛擬內存地址:為A任務分配了虛擬內存地址1025到1034。這樣,A任務和B任務所需訪問的內存地址就位于不同的虛擬內存頁面中,A任務和B任務就可以同時執行,增加了任務執行的效率。再如,僅重新分配B任務所需訪問的虛擬內存地址:為B任務分配了虛擬內存地址1035到1044。這樣,A任務和B任務所需訪問的內存地址就位于不同的虛擬內存頁面中,A任務和B任務就可以同時執行。再如,分別對A任務所需訪問的虛擬內存地址和B任務所需訪問的虛擬內存地址進行重新分配:為A任務分配了虛擬內存地址0125到0134,為B任務分配了虛擬內存地址1035到1044。這樣,A任務和B任務所需訪問的內存地址就位于不同的虛擬內存頁面中,A任務和B任務同樣可以同時執行。
[0091 ] 本發明實施例提供的一種任務處理方法,可以使用擴展指令獲得任務所需訪問的堆地址信息、任務所需訪問的棧地址信息和任務中待執行指令的地址信息并根據這些地址信息對任務進行調度處理或內存優化處理。由于并行任務執行過程中的效率受限于這些地址信息,本發明通過對這些地址信息進行調度處理或內存優化處理,可以有效提高任務執行的效率,縮短任務執行的時間。
[0092]如圖2所示,在本發明實施例提供的另一種任務處理方法中,步驟S200,可以包括:
[0093]S210、判斷所述任務是否帶有需同步的全局變量信息,如果是,執行步驟S230,如果否,則執行步驟S220 ;
[0094]可以理解的是,可以根據第一擴展指令獲得的同步全局變量信息判斷是否帶有需同步的全局變量信息。具體的,當任務不帶有需同步的全局變量信息時,第一擴展指令中任務需同步的全局變量信息所對應的參數可以為空。也即:可以根據需同步的全局變量信息所對應的參數返回值是否為空來判斷該任務是否攜帶有需同步的全局變量信息。
[0095]S220、對所述任務所需訪問的堆地址信息創建快照并初始化所述任務的執行上下文,根據所述任務執行所需的內存地址信息選擇一計算節點執行所述任務;
[0096]可以理解的是,對所述任務所需訪問的堆地址信息創建快照可以利用程序執行的局部性原理,任務對所需訪問的堆地址內的信息進行復制,保存到本地內存,減少內存一致性維護的開銷。由于任務執行上下文中的堆信息是全局共享的,因此任務通過修改堆信息就可以將任務執行的結果通知給系統的其他任務以實現任務間的數據交互。因此,可以僅對堆地址信息創建快照,而對計算節點私有的棧地址信息則不創建快照。
[0097]其中,步驟S220可以選擇處于空閑狀態的計算節點執行該任務。本領域技術人員可以理解的是,如圖3所示,任務在執行過程中,需要首先在編譯器001上編譯為虛擬指令代碼,為其分配虛擬內存地址,然后在虛擬機或虛擬環境中經指令編譯器002翻譯為目標指令,任務調度單元003 (也即任務調度器)將目標指令發送到相應的執行模塊005中進行執行。其中,執行模塊005可以與具體的硬件平臺006相對應。
[0098]可以理解的是,將虛擬指令代碼翻譯為與特定硬件環境相關的目標指令可以保證應用程序和虛擬指令代碼與平臺無關,具有很好的適用性和可移植性。任務調度單元003可以選擇空閑的執行模塊005 (計算節點)來執行目標指令。具體的,可以使用靜態翻譯或動態翻譯的方式對虛擬指令代碼進行翻譯。
[0099]在實際應用中,任務調度單元003可以將指令翻譯器002翻譯得到的目標指令分發到多個處于空閑狀態的執行單元005,這多個處于空閑狀態的執行單元005分別執行目標指令中的一段代碼(某子任務)。也即,經過第一擴展指令和任務調度單元的調度,多個處于空閑狀態的計算節點可以分別執行目標指令中的一段代碼以完成多個子任務并最終完成某一任務。本實施例中,指令的執行可以是串行的,默認情況下會執行到最后一條指令。因此,可以使用特定的機制界定代碼段的結束,即標明任務的結束。在本發明中,可以使用第二擴展指令來指示任務的結束。
[0100]S230、等待所述需同步的全局變量信息的內容更新后,對所述任務需訪問的堆地址信息創建快照并初始化任務執行上下文,根據所述任務執行所需的內存地址信息選擇一計算節點執行所述任務。
[0101]本領域技術人員可以理解的是,在任務執行所需的內存地址信息包括任務需同步的全局變量信息的情況下,需首先等待該需同步的全局變量信息內容更新后,再執行后續處理。
[0102]可以理解的是,在多個任務順序執行的過程中,在后執行的任務可能需要前面所執行任務的執行結果。因此,當第一任務需要第二任務的執行結果時,可以等待第二任務的執行結果提交后(也即等待所需同步的全局變量信息內容更新后),再啟動第一任務的執行。具體的,可以使用標志位控制任務的運行。
[0103]如圖4所示,本發明實施例提供的另一種任務處理方法中,還可以包括:
[0104]S300、使用第二擴展指令結束所述任務并使用該第二擴展指令獲得所述任務的執行結束信息,其中,所述任務的執行結束信息包括:所述任務正常結束的信息和所述任務異常結束的信息;
[0105]具體的,第二擴展指令可以如表4所示:
[0106]表4第二擴展指令操作數表
[0107]
【權利要求】
1.一種任務處理方法,其特征在于,包括: 使用第一擴展指令創建任務并使用所述第一擴展指令獲得所述任務執行所需的內存地址信息,其中,所述任務執行所需的內存地址信息包括:所述任務所需訪問的堆地址信息、所述任務所需訪問的棧地址信息和所述任務中待執行指令的地址信息; 根據所述任務執行所需的內存地址信息對所述任務進行調度處理和/或根據所述任務執行所需的內存地址信息 對所述任務進行內存優化處理。
2.根據權利要求1所述的方法,其特征在于,所述任務執行所需的內存地址信息還包括: 所述任務需同步的全局變量信息。
3.根據權利要求1或2所述的方法,其特征在于,還包括: 使用第二擴展指令結束所述任務并使用所述第二擴展指令獲得所述任務的執行結束信息,其中,所述任務的執行結束信息包括:所述任務正常結束的信息和所述任務異常結束的信息; 根據所述第二擴展指令獲得的所述任務的執行結束信息對所述任務占用的資源進行釋放處理。
4.根據權利要求1所述的方法,其特征在于,根據所述任務執行所需的內存地址信息對所述任務進行調度處理,包括: 對所述任務所需訪問的堆地址信息創建快照并初始化所述任務的執行上下文,根據所述任務執行所需的內存地址信息選擇一計算節點執行所述任務。
5.根據權利要求2所述的方法,其特征在于,根據所述任務執行所需的內存地址信息對所述任務進行調度處理,包括: 等待所述需同步的全局變量信息的內容更新后,對所述任務需訪問的堆地址信息創建快照并初始化任務執行上下文,根據所述任務執行所需的內存地址信息選擇一計算節點執行所述任務。
6.根據權利要求1或2所述的方法,其特征在于,所述根據所述任務執行所需的內存地址信息對所述任務進行內存優化處理,包括: 將所述任務執行所需的內存地址信息反饋給編譯器,以使所述編譯器重新為所述任務分配內存地址。
7.根據權利要求3所述的方法,其特征在于,所述根據所述第二擴展指令獲得的所述任務的執行結束信息對所述任務占用的資源進行釋放處理,包括: 判斷所述任務為正常結束還是異常結束,如果為正常結束,則提交所述任務更新后的全局變量信息,釋放所述任務所占用資源,刪除所述任務創建的快照;如果為異常結束,則釋放所述任務所占用的資源,刪除所述任務創建的快照。
8.根據權利要求7所述的方法,其特征在于,在所述任務為異常結束的情況下,釋放所述任務所占用的資源,刪除所述快照后,還包括: 重新執行所述根據所述任務執行所需的內存地址信息對所述任務進行調度處理和/或根據所述任務執行所需的內存地址信息對所述任務進行內存優化處理的步驟。
9.一種任務處理系統,其特征在于,包括:第一獲取模塊和任務調度模塊, 所述第一獲取模塊使用第一擴展指令創建任務并使用所述第一擴展指令獲得所述任務執行所需的內存地址信息,發送至所述任務調度模塊中,其中,所述任務執行所需的內存地址信息包括:所述任務所需訪問的堆地址信息、所述任務所需訪問的棧地址信息和所述任務中待執行指令的地址信息; 所述任務調度模塊根據第一獲取模塊發送的所述任務執行所需的內存地址信息對所述任務進行調度處理和/或根據所述任務執行所需的內存地址信息對所述任務進行內存優化處理。
10.根據權利要求9所述的系統,其特征在于,所述任務執行所需的內存地址信息還包括: 所述任務需同步的全局變量信息。
11.根據權利要求9或10所述的系統,其特征在于,還包括:執行結束信息獲取模塊和任務結束處理模塊, 所述執行結束信息獲取模塊使用第二擴展指令結束所述任務并使用所述第二擴展指令獲得所述任務的執行結束信息并發送至所述任務結束處理模塊中,其中,所述任務的執行結束信息包括:所述任務正常結束的信息和所述任務異常結束的信息; 所述任務結束處理模塊根據執行結束信息獲取模塊發送的所述任務的執行結束信息對所述任務占用的資源進行釋放處理。
12.根據權利要求9所述的系統,其特征在于,所述任務調度模塊包括:第一調度子模塊, 所述第一調度子模塊對所述任務所需訪問的堆地址信息創建快照并初始化所述任務的執行上下文,根據所述任務執行所需的內存地址信息選擇一計算節點執行所述任務。
13.根據權利要求10所述的系統,其特征在于,所述任務調度模塊包括:第二調度子模塊, 所述第二調度子模塊等待所述需同步的全局變量信息的內容更新后,對所述任務需訪問的堆地址信息創建快照并初始化任務執行上下文,根據所述任務執行所需的內存地址信息選擇一計算節點執行所述任務。
14.根據權利要求9或10所述的系統,其特征在于,所述任務調度模塊包括:地址信息發送子模塊, 所述地址信息發送子模塊將所述任務執行所需的內存地址信息反饋給編譯器,以使所述編譯器重新為所述任務分配內存地址。
15.根據權利要求11所述的系統,其特征在于,所述任務結束處理模塊,包括:結束判斷子模塊、異常結束處理子模塊和正常結束處理子模塊, 所述結束判斷子模塊結束所述任務并判斷所述任務為正常結束還是異常結束,在所述任務異常結束時,觸發所述異常結束處理子模塊,在所述任務正常結束的情況下,觸發所述正常結束處理子模塊; 所述異常結束處理子模塊,用于釋放所述任務所占用的資源,刪除所述任務創建的快昭.所述正常結束處理子模塊,用于提交更新后的全局變量信息,釋放所述任務所占用的資源,刪除所述任務創建的快照。
16.根據權利要求15所述的系統,其特征在于,還包括:重新執行模塊,用于在所述異常結束處理子 模塊釋放所述任務所占用的資源,刪除所述快照后,重新觸發所述任務調度 模塊。
【文檔編號】G06F9/48GK103631648SQ201210295952
【公開日】2014年3月12日 申請日期:2012年8月20日 優先權日:2012年8月20日
【發明者】顧磷, 盛中華, 文劉飛 申請人:華為技術有限公司