[發(fā)明專利]多核體系結(jié)構(gòu)下ELF文件格式改造的方法無效
| 申請?zhí)枺?/td> | 200810062344.X | 申請日: | 2008-05-09 |
| 公開(公告)號: | CN101281470A | 公開(公告)日: | 2008-10-08 |
| 發(fā)明(設(shè)計)人: | 陳天洲;張楠;胡威;蔣冠軍;章鐵飛;陳劍;項(xiàng)凌翔;王罡;陳度;馮德貴 | 申請(專利權(quán))人: | 浙江大學(xué) |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445;G06F9/45 |
| 代理公司: | 杭州中成專利事務(wù)所有限公司 | 代理人: | 唐銀益 |
| 地址: | 310027浙*** | 國省代碼: | 浙江;33 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 多核 體系結(jié)構(gòu) elf 文件格式 改造 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及嵌入式多核平臺下的修改可執(zhí)行文件格式以利用多核處理能力的問題,更具體的說,是涉及一種多核體系結(jié)構(gòu)下的ELF文件格式改造。
背景技術(shù)
隨著計算機(jī)體系結(jié)構(gòu)的發(fā)展,可執(zhí)行文件的格式也在不斷地變化。最早的COM格式文件是完完全全的二進(jìn)制文件,雖然簡單,但是逐步流行頁面存儲管理模式的使其無法更好地適應(yīng)程序設(shè)計的需要。因此出現(xiàn)了a.out等帶有文件頭和對文件內(nèi)的段進(jìn)行分頁對齊的新的可執(zhí)行文件結(jié)構(gòu),稱為NMAGIC。由于人們對效率和空間的需求不斷提升,NMAGIC的也在不斷改進(jìn)中逐步演變?yōu)镼MAGIC和ZMAGIC。這些改進(jìn)包括壓縮文件頭與代碼段映射到第一個頁面中以及同時映射最后一個代碼段和第一個數(shù)據(jù)段等。
隨著面向?qū)ο蠹夹g(shù)的發(fā)展,a.out逐漸不能適應(yīng)程序設(shè)計的需要。因此出現(xiàn)了UNIX?ELF可執(zhí)行結(jié)構(gòu)和Microsoft的PE文件結(jié)構(gòu)。二者分別成為兩大平臺上的主流目標(biāo)文件格式。除此之外,曾出現(xiàn)過的目標(biāo)文件格式還有IBM?360和Intel/Microsoft的OMF格式。
在當(dāng)今多核平臺即將成為主流技術(shù)平臺的時代中,目標(biāo)文件格式的如果變化也面臨著一次巨大的挑戰(zhàn)。一方面是已有的目標(biāo)文件格式比如ELF和PE已經(jīng)成為許多主流平臺上的默認(rèn)目標(biāo)文件格式,而且使用起來也得到了大家的認(rèn)可,相對比較穩(wěn)定和通用。另一方面是對多核平臺如何進(jìn)行高效利用的討論。因此,能夠適當(dāng)?shù)貙δ繕?biāo)文件格式進(jìn)行修改,即保留其基本的穩(wěn)定性和通用性,又能夠使其更好地適應(yīng)新的多核平臺,充分發(fā)揮多核心的處理能力,是我們修改ELF文件格式的基本動機(jī)。
此外,由于現(xiàn)在在多核平臺上的程序設(shè)計大多是交給編譯器來處理詳細(xì)的細(xì)節(jié)。而這些細(xì)節(jié)包括同步,任務(wù)劃分,進(jìn)程創(chuàng)建等,設(shè)計開發(fā)編譯器的工作量就會非常的大,這也會使編譯器的效率降低,使其無法專注在對程序的優(yōu)化上面。另外,由于當(dāng)今多種線程庫的存在,編譯器在啟動新線程的時候需要考慮到不同平臺中線程庫的差異,因此必然要包括對多種線程庫的支持,這會使編譯器變的異常龐大。
所以,我們試圖盡量采用了最少的改動,將一部分跟多進(jìn)程創(chuàng)建的工作劃分出來交給操作系統(tǒng)的裝載器來完成,而裝載器是無法智能地識別不任務(wù)中可以并行的部分的,所以修改ELF目標(biāo)文件的格式就是唯一可以采取的方法。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于克服現(xiàn)有技術(shù)中的不足,提供一種多核體系結(jié)構(gòu)下的ELF文件格式改造的方法。
為了解決上述技術(shù)問題,本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的。
(1)用戶添加并行處理標(biāo)志:
用戶在所編寫的程序中加上通知編譯器可并行處理的標(biāo)簽,編譯器將原本需要順序執(zhí)行的程序段分別獨(dú)立出來,形成多個可并行執(zhí)行而且對結(jié)果的正確性沒有影響的獨(dú)立的程序代碼段;
(2)把獨(dú)立的代碼裝載進(jìn)ELF文件中不同的代碼段中:
在ELF文件中設(shè)定多個代碼段,將經(jīng)過編譯獨(dú)立出來的程序代碼分別寫入ELF文件不同的代碼段中,這種新的ELF文件格式下的多個代碼段分別用.textn的方式來標(biāo)識,n為序號,從1開始;目前的ELF文件格式中只有一個代碼段。而這里我們將經(jīng)過編譯獨(dú)立出來的程序代碼分別寫入ELF文件不同的代碼段中,因此需要ELF文件中存在多個代碼段。
(3)修改ELF文件頭中的標(biāo)志位,來標(biāo)識新的ELF格式:
將ELF文件中的頭16個字節(jié)的最后一個字節(jié)由0x00修改為0x01,用來代表采用新的ELF文件格式;
(4)增加新加的段在新線程中的起始地址:
修改ELF文件頭中的頭16個字節(jié)中第12,13,14,15個字節(jié)為新加的段在新線程中的起始地址;
(5)修改ELF格式的裝載器:
對ELF格式的裝載器的load_elf_binary函數(shù)進(jìn)行修改,首先對ELF的格式進(jìn)行判斷看是否是新定義的格式;如果是,則利用系統(tǒng)調(diào)用啟動一個新的進(jìn)程,根據(jù)返回值的不同,父進(jìn)程繼續(xù)執(zhí)行原先的裝載過程,而子進(jìn)程將新的代碼段裝載進(jìn)入自己的進(jìn)程空間,并通過start_thread將堆棧中的記錄的程序計數(shù)器修改為新的入口地址,即可以使用默認(rèn)地址或者ELF文件頭中所記錄的地址;
(6)多線程程序在不同核上的執(zhí)行:
將子進(jìn)程通過系統(tǒng)調(diào)用sched_setaffinity來設(shè)置該進(jìn)程與不同CPU之間的親緣程度,以調(diào)度該進(jìn)程到特定的核上運(yùn)行,充分利用多個核的處理能力;
(7)不同線程結(jié)果的統(tǒng)一由編譯器在主線程中進(jìn)行設(shè)置。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于浙江大學(xué),未經(jīng)浙江大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200810062344.X/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 評估企業(yè)體系結(jié)構(gòu)的方法和系統(tǒng)
- 一種計算機(jī)體系結(jié)構(gòu)性能模擬方法及系統(tǒng)
- 基于云的主數(shù)據(jù)管理體系結(jié)構(gòu)
- 一種軟件體系結(jié)構(gòu)并行演化沖突的檢測方法
- 基于進(jìn)程代數(shù)的軟件體系結(jié)構(gòu)安全模型的建立方法
- 一種作戰(zhàn)體系建模與仿真系統(tǒng)
- 用于測試混合指令體系結(jié)構(gòu)的方法和系統(tǒng)
- 一種在微體系結(jié)構(gòu)層面表征區(qū)塊鏈系統(tǒng)的方法和裝置
- 基于設(shè)計數(shù)據(jù)與實(shí)驗(yàn)數(shù)據(jù)的體系結(jié)構(gòu)評估方法及其系統(tǒng)
- 一種Java項(xiàng)目的體系結(jié)構(gòu)策略定位方法及系統(tǒng)





