新四季網

多核體系結構下elf文件格式改造的方法

2023-05-13 01:56:56


專利名稱::多核體系結構下elf文件格式改造的方法
技術領域:
:本發明涉及嵌入式多核平臺下的修改可執行文件格式以利用多核處理能力的問題,更具體的說,是涉及一種多核體系結構下的ELF文件格式改造。
背景技術:
:隨著計算機體系結構的發展,可執行文件的格式也在不斷地變化。最早的COM格式文件是完完全全的二進位文件,雖然簡單,但是逐步流行頁面存儲管理模式的使其無法更好地適應程序設計的需要。因此出現了a.out等帶有文件頭和對文件內的段進行分頁對齊的新的可執行文件結構,稱為NMAGIC。由於人們對效率和空間的需求不斷提升,醒AGIC的也在不斷改進中逐步演變為QMAGIC和Z區GIC。這些改進包括壓縮文件頭與代碼段映射到第一個頁面中以及同時映射最後一個代碼段和第一個數據段等。隨著面向對象技術的發展,a.out逐漸不能適應程序設計的需要。因此出現了UNIXELF可執行結構和Microsoft的PE文件結構。二者分別成為兩大平臺上的主流目標文件格式。除此之外,曾出現過的目標文件格式還有IBM360和Intel/Microsoft的0MF格式。在當今多核平臺即將成為主流技術平臺的時代中,目標文件格式的如果變化也面臨著一次巨大的挑戰。一方面是已有的目標文件格式比如ELF和PE己經成為許多主流平臺上的默認目標文件格式,而且使用起來也得到了大家的認可,相對比較穩定和通用。另一方面是對多核平臺如何進行高效利用的討論。因此,能夠適當地對目標文件格式進行修改,即保留其基本的穩定性和通用性,又能夠使其更好地適應新的多核平臺,充分發揮多核心的處理能力,是我們修改ELF文件格式的基本動機。此外,由於現在在多核平臺上的程序設計大多是交給編譯器來處理詳細的細節。而這些細節包括同步,任務劃分,進程創建等,設計開發編譯器的工作量就會非常的大,這也會使編譯器的效率降低,使其無法專注在對程序的優化上面。另外,由於當今多種線程庫的存在,編譯器在啟動新線程的時候需要考慮到不同平臺中線程庫的差異,因此必然要包括對多種線程庫的支持,這會使編譯器變的異常龐大。所以,我們試圖儘量採用了最少的改動,將一部分跟多進程創建的工作劃分出來交給作業系統的裝載器來完成,而裝載器是無法智能地識別不任務中可以並行的部分的,所以修改ELF目標文件的格式就是唯一可以採取的方法。
發明內容本發明的主要目的在於克服現有技術中的不足,提供一種多核體系結構下的ELF文件格式改造的方法。為了解決上述技術問題,本發明是通過以下技術方案實現的。(1)用戶添加並行處理標誌用戶在所編寫的程序中加上通知編譯器可並行處理的標籤,編譯器將原本需要順序執行的程序段分別獨立出來,形成多個可並行執行而且對結果的正確性沒有影響的獨立的程序代碼段;(2)把獨立的代碼裝載進ELF文件中不同的代碼段中在ELF文件中設定多個代碼段,將經過編譯獨立出來的程序代碼分別寫入ELF文件不同的代碼段中,這種新的ELF文件格式下的多個代碼段分別用.textn的方式來標識,n為序號,從l開始;目前的ELF文件格式中只有一個代碼段。而這裡我們將經過編譯獨立出來的程序代碼分別寫入ELF文件不同的代碼段中,因此需要ELF文件中存在多個代碼段。(3)修改ELF文件頭中的標誌位,來標識新的ELF格式將ELF文件中的頭16個字節的最後一個字節由0x00修改為0x01,用來代表採用新的ELF文件格式;(4)增加新加的段在新線程中的起始地址修改ELF文件頭中的頭16個字節中第12,13,14,15個字節為新加的段在新線程中的起始地址;(5)修改ELF格式的裝載器-對ELF格式的裝載器的load—elf—binary函數進行修改,首先對ELF的格式進行判斷看是否是新定義的格式;如果是,則利用系統調用啟動一個新的進程,根據返回值的不同,父進程繼續執行原先的裝載過程,而子進程將新的代碼段裝載進入自己的進程空間,並通過start—thread將堆棧中的記錄的程序計數器修改為新的入口地址,即可以使用默認地址或者ELF文件頭中所記錄的地址;(6)多線程程序在不同核上的執行將子進程通過系統調用sched—setaffinity來設置該進程與不同CPU之間的親緣程度,以調度該進程到特定的核上運行,充分利用多個核的處理能力;(7)不同線程結果的統一由編譯器在主線程中進行設置。作為一種改進,修改ELF格式的文件格式,將編譯器分解出來的邏輯上獨立的文本段寫入不同的代碼段中,在裝載的時候分別把這些代碼段裝載到不同的進程中,以利用多核平臺的處理能力。同時該改造辦法也消除了已有的多核平臺下程序設計的編譯器中需要多種底層線程庫支持的要求。與現有技術相比,本發明的有益效果是(1)高效性。本發明實現了多核體系結構下的ELF文件格式改造,通過將多核平臺下的ELF文件格式改造成容納多個邏輯上獨立的代碼段,減少了多核心平臺下編譯器的工作量,提高了編譯器的處理效率。(2)平臺無關性。本發明中通過多核體系結構下的ELF文件格式改造,將多核編譯器中需要多線程庫支持的部分交給作業系統的裝載器來執行,消除了編譯器中需要對不同平臺的多種線程庫支持的要求,有效地了編譯器的大小,。(3)實用性。本發明提出的多核體系結構下的ELF文件格式改造,充分利用了多核處理平臺的處理能力。同時由於處理的簡單性,該技術也可以利用在對MicrosoftPE文件格式等目標文件格式的改造中。圖1是本發明的總體結構框架圖。具體實施方式結合附圖,通過具體實施例對本發明進一步說明。首先解釋一下用到的名詞ELF:ExecutableandLinkableFormat,用於可執行文件和可連接的共享庫文件。1oad—e1f_binary:裝載代碼進入程序進程空間的函數。start—thread:指定新線程的起始地址,並不實際啟動新線程,直到從系統調用退出時候該線程才自動啟動。sched—setaffinity:設定某個進程對某個或某些處理器核的親緣性,即保證該進程在某個或某些處理器核上運行。多核體系結構下的ELF文件格式改造,包括以下步驟(1)用戶添加並行處理標誌用戶在所編寫的程序中加上通知編譯器可以進行並行處理的標籤。以便編譯器將原本需要順序執行的程序段分別獨立出來,形成可以並行執行而且對結果的正確性沒有影響的程序代碼段。(2)編譯器把獨立的代碼裝載進ELF文件中不同的代碼段中由於邏輯上獨立的程序段已經形成,因此可以加他們分別加載到不同的代碼段。在原始的ELF文件格式中,只有一個代碼段,包含了所有的程序代碼。所以以前為了把已經經過編譯過程分解出來的獨立的程序段裝載到不同的線程中同步執行,需要使用作業系統或者第三方提供的線程庫來手動創建線程,並需要精確地放置所區分出的代碼的位置,這就帶來了重定位的問題,使設計變的非常複雜。這裡我們把原始程序的代碼分成獨立的部分後,分別寫如ELF文件獨立的代碼段中。這些代碼段用.textl,.text2等來表示。(3)修改ELF文件頭中的標誌位,來標識新的ELF格式ELF文件中的頭16個字節的數值代表了ELF文件的版本,機器類型,大小端類型,體系結構類型等。在ELF格式的標準中,這16個字節的最後一個字節始終為0x01,這裡我們修改為0x01,用來代表我們採用了新的ELF文件格式。這個標誌在以後我們修改過的裝載器中會使用。(4)增加新加的段在新線程中的起始地址修改ELF文件頭中的頭16個字節中第12,13,14,15個字節為新加的段在新線程中的起始地址。一般情況下,這個地址是沒有用的,因為新加的代碼段在裝載到線程時也可以利用ELF文件頭中存儲的默認起始地址。這裡只是提供了一種將新段加載到不同地址的一種方法。(5)修改ELF格式的裝載器由於對ELF文件格式進行了修改,因此針對ELF格式的裝載器也需要進行相應的改動。所有的改動均發生在load—elf_binary函數中。在這裡,我們首先對ELF的格式進行判斷看是否是我們新定義的格式,如果是,則利用系統調用啟動一個新的進程,根據返回值的不同,父進程繼續執行原先的裝載過程。而子進程將新的代碼段裝載進入自己的進程空間並通過start—thread將堆棧屮的記錄的程序計數器修改為新的入口地址,即可以使用默認地址或者ELF文件頭中所記錄的地址。(6)調度多個線程在不同核上的執行剛剛創建好的子進程與父進程是在同一個核上運行的,這其實只是宏觀上的並行而微觀上仍然是串行的。為了利用多核的優勢,可以將子進程通過系統調用sched—setaffinity來設置該進程與不同CPU之間的親緣程度,以調度該進程到特定的核上運行。這樣就充分利用了多個核的處理能力。(7)不同線程結果的統一結果的統一由編譯器在主線程中進行設置,比如通過wait來等待子進程的完成。這在已有的編譯器中已經是成熟的技術。本發明所述的是多核體系結構下的ELF文件格式改造的方法,修改ELF格式的文件格式,將編譯器分解出來的邏輯h獨立的文本段寫入不同的代碼段中,在裝載的時候可以分別把這些代碼段裝載到不同的進程中,以利用多核平臺的處理能力。同時該改造辦法也消除了已有的多核平臺下程序設計的編譯器中需要多種底層線程庫支持的要求。由於處理的簡單性,本框架具有很好的通用性,可以使用在多種不同的目標文件格式中。最後,還需要注意的是,以上列舉的僅是本發明的具體實施例子。顯然,本發明不限於以上實施例子,還可以有許多變形。本領域的普通技術人員能從本發明公開的內容直接導出或聯想到的所有變形,均應認為是本發明的保護範圍。權利要求1、一種多核體系結構下ELF文件格式改造的方法,其特徵在於,包括以下步驟(1)用戶添加並行處理標誌用戶在所編寫的程序中加上通知編譯器可並行處理的標籤,編譯器將原本需要順序執行的程序段分別獨立出來,形成多個可並行執行而且對結果的正確性沒有影響的獨立的程序代碼段;(2)把獨立的代碼裝載進ELF文件中不同的代碼段中在ELF文件中設定多個代碼段,將經過編譯獨立出來的程序代碼分別寫入ELF文件不同的代碼段中,這種新的ELF文件格式下的多個代碼段分別用.textn的方式來標識,n為序號,從1開始;(3)修改ELF文件頭中的標誌位,來標識新的ELF格式將ELF文件中的頭16個字節的最後一個字節由0x00修改為0x01,用來代表採用新的ELF文件格式;(4)增加新加的段在新線程中的起始地址修改ELF文件頭中的頭16個字節中第12,13,14,15個字節為新加的段在新線程中的起始地址;(5)修改ELF格式的裝載器對ELF格式的裝載器的load_elf_binary函數進行修改,首先對ELF的格式進行判斷看是否是新定義的格式;如果是,則利用系統調用啟動一個新的進程,根據返回值的不同,父進程繼續執行原先的裝載過程,而子進程將新的代碼段裝載進入自己的進程空間,並通過start_thread將堆棧中的記錄的程序計數器修改為新的入口地址,即可以使用默認地址或者ELF文件頭中所記錄的地址;(6)多線程程序在不同核上的執行將子進程通過系統調用sched_setaffinity來設置該進程與不同CPU之間的親緣程度,以調度該進程到特定的核上運行,充分利用多個核的處理能力;(7)不同線程結果的統一由編譯器在主線程中進行設置。2、根據權利要求1所述的多核體系結構下ELF文件格式改造的方法,其特徵在於,修改ELF格式的文件格式,將編譯器分解出來的邏輯上獨立的文本段寫入不同的代碼段中,在裝載的時候分別把這些代碼段裝載到不同的進程中,以利用多核平臺的處理能力。全文摘要本發明提供了一種多核體系結構下的ELF文件格式改造的方法。包括以下步驟(1)用戶添加並行處理標誌;(2)把獨立的代碼裝載進ELF文件中不同的代碼段中;(3)修改ELF文件頭中的標誌位,來標識新的ELF格式;(4)增加新加的段在新線程中的起始地址;(5)修改ELF格式的裝載器;(6)多線程程序在不同核上的執行;(7)不同線程結果的統一由編譯器在主線程中進行設置。本發明所述的多核體系結構下的ELF文件格式改造的方法,消除了已有的多核平臺下程序設計的編譯器中需要多種底層線程庫支持的要求;由於處理的簡單性,本框架具有很好的通用性,可以使用在多種不同的目標文件格式中。文檔編號G06F9/445GK101281470SQ20081006234公開日2008年10月8日申請日期2008年5月9日優先權日2008年5月9日發明者馮德貴,楠張,罡王,章鐵飛,威胡,蔣冠軍,劍陳,度陳,陳天洲,項凌翔申請人:浙江大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀