亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法和系統(tǒng)的制作方法

文檔序號:6400423閱讀:110來源:國知局
專利名稱:基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及移動通信領(lǐng)域,特別涉及一種基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法和系統(tǒng)。
背景技術(shù)
互聯(lián)網(wǎng)和移動設(shè)備相互影響、彼此促進的發(fā)展掀起了強大的移動浪潮。以智能手機、上網(wǎng)本為代表的移動終端在激烈的競爭中迅速發(fā)展。根據(jù)中國互聯(lián)信息網(wǎng)絡(luò)中心(CNNIC)第29次互聯(lián)網(wǎng)調(diào)查報告稱,截止2011年12月底,中國共有5.13億互聯(lián)網(wǎng)用戶,其中手機上網(wǎng)用戶3.56億,占網(wǎng)民總體的近69.4%。同時,以安卓(Android)系統(tǒng)為代表的移動終端開源操作系統(tǒng)的使用比例和影響力在不斷擴大。GARTNER公司的報告顯示,在2011年的第四季度,Android是全球使用最廣泛的智能手機操作系統(tǒng),在全球智能手機中的市場占有率約50%。Android系統(tǒng)開始就采用開源、開放的開發(fā)模式,受到業(yè)界和學術(shù)界的廣泛關(guān)注。自發(fā)布以來,Android的版本基本保持半年一個臺階地速度發(fā)展。其平臺的開放性吸引了大量的第三方開發(fā)者進行應(yīng)用程序開發(fā),Android Market上的應(yīng)用程序數(shù)量從2009年12月的1.6萬迅速增長到2012年上半年的50萬。隨著近年移動設(shè)備和相關(guān)軟件的迅速發(fā)展,移動設(shè)備上的操作系統(tǒng)和應(yīng)用程序的復雜性、程序體積大幅提高,這也對移動操作系統(tǒng)的優(yōu)化提出了新的需求。而現(xiàn)有移動終端中有相當數(shù)量的組件原用于桌面和服務(wù)器系統(tǒng),僅作少量修改移植后就用于移動操作系統(tǒng)上。例如,Android系統(tǒng)分為四層,從上到下依次為:(一)、應(yīng)用程序。使用Java語言編寫,可通過Java本地接口(JNI)調(diào)用本地代碼。.(二)、應(yīng)用程序框架。使用Java、C、C++語言編寫,向應(yīng)用程序提供活動管理器、窗口管理器等服務(wù)。(三)。系統(tǒng)庫和Android運行時環(huán)境。使用C/C++以及少量匯編語言編寫,為應(yīng)用程序和應(yīng)用程序框架提供必要的與系統(tǒng)交互的接口。(四)、Linux內(nèi)核。操作系統(tǒng)內(nèi)核,為為Android進行修改的Linux內(nèi)核。整個Android系統(tǒng),以Android_x86,20120215版本為例,包含2270萬行代碼,包括C、C++、Java以及其他語言。除了 Linux內(nèi)核以外,系統(tǒng)中共有950萬行本地代碼,主要為C、C++及少量匯編語言組成。Android系統(tǒng)基于Linux內(nèi)核,但并沒有使用其他Linux系統(tǒng)常用的GNU Iibc (為服務(wù)器、桌面Linux系統(tǒng)常用)或uClibc (為基于Linux的嵌入式系統(tǒng)常用),而是使用了專有的C庫,稱為Bionic。Bionic庫的部分代碼衍生自BSD,部分專門為Android編寫,并針對Android系統(tǒng)作了優(yōu)化和精簡,刪除了 Android不需要的功能。優(yōu)化后的Bionic庫的代碼體積顯著減小,在x86平臺上僅有GNU Iibc的26%,uClibc的 62%。從Bionic的例子可以看出,通用的代碼在被用于特定的系統(tǒng)時會有比較大的優(yōu)化空間。據(jù)此可以推測到,Android上的其他組件也會有優(yōu)化的空間,尤其是那些原本為服務(wù)器和桌面系統(tǒng)編寫的組件。事實上,Android系統(tǒng)自身使用了一百余個外來的開源軟件代碼,既包括最底層的Linux內(nèi)核,也包括上層的WebKit瀏覽器引擎等。這些組件并非專門針對移動操作系統(tǒng)所編寫,移植到移動操作系統(tǒng)以后往往還存在優(yōu)化空間,但如果對它們一一進行手工優(yōu)化將會耗費大量人力和物力資源。由于工作量的關(guān)系,Android沒有也不可能為系統(tǒng)中的每一個組件都人工細致的優(yōu)化。因此,亟需一種自動的系統(tǒng)優(yōu)化方案。

發(fā)明內(nèi)容
本發(fā)明旨在至少解決現(xiàn)有技術(shù)中存在的技術(shù)問題之一。為此,本發(fā)明的一個目的在于提出一種基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法。本方法自動化消除系統(tǒng)無用代碼,減小系統(tǒng)體積,提升了系統(tǒng)性能,方便高效,優(yōu)化效果明顯。本發(fā)明的第二個目的在于提出一種基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化系統(tǒng)。為達到上述目的,本發(fā)明第一方面的實施例提出了一種基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,包括以下步驟:對操作系統(tǒng)的源代碼進行編譯,生成可重定向的目標文件;根據(jù)所述目標文件構(gòu)造系統(tǒng)擴展調(diào)用圖,所述系統(tǒng)擴展調(diào)用圖為有向圖,用于記錄所述目標文件中函數(shù)和數(shù)據(jù)對象之間的引用關(guān)系;根據(jù)所述系統(tǒng)擴展調(diào)用圖生成所述操作系統(tǒng)的有效子圖;根據(jù)所述有效子圖對所述目標文件進行重寫,得到優(yōu)化后的目標文件;對所述優(yōu)化后的所述目標文件進行鏈接,得到優(yōu)化后的操作系統(tǒng)。根據(jù)本發(fā)明的基于全系統(tǒng)擴展調(diào)用圖的自動優(yōu)化方法使用自動化的方法對操作系統(tǒng)進行優(yōu)化,從編譯后的目標文件中讀取信息,構(gòu)建系統(tǒng)擴展調(diào)用圖,進一步得到擴展調(diào)用圖中的有效子圖,根據(jù)有效子圖對目標文件重寫后,鏈接生成優(yōu)化的可執(zhí)行文件和動態(tài)庫文件。本方法消除無用代碼,有效減小系統(tǒng)的體積,提升系統(tǒng)性能,不需人工干預,節(jié)省人力成本,提高效率。本方法應(yīng)用范圍廣、自動化程度高、使用方便、可維護性好,優(yōu)化效果明顯。在本發(fā)明的一個實施例中,所述對操作系統(tǒng)的源代碼進行編譯進一步包括:對所述源代碼中每個函數(shù)和每個數(shù)據(jù)對象編譯生成單獨的段。在本發(fā)明的一個實施例中,使用編譯器中的編譯選項生成所述單獨的段。在本發(fā)明的一個實施例中,所述系統(tǒng)擴展調(diào)用圖包括結(jié)點集、邊集和入口結(jié)點集合,其中,所述結(jié)點集為實體集合,所述實體包括代碼中的函數(shù)和數(shù)據(jù)對象;邊集包括前驅(qū)對后繼存在使用關(guān)系的有向邊的集合;入口結(jié)點集合包括進程的入口結(jié)點和程序中動態(tài)綁定的入口結(jié)點。在本發(fā)明的一個實施例中,所述有效子圖的結(jié)點集包括所述系統(tǒng)擴展調(diào)用圖的所述入口點集以及所有所述入口點在所述系統(tǒng)擴展調(diào)用圖中的子孫結(jié)點。 在本發(fā)明的一個實施例中,用二進制重寫的方法對所述目標文件進行修改,將所述有效子圖中不存的結(jié)點的對應(yīng)信息刪除。在本發(fā)明的一個實施例中,所述操作系統(tǒng)為移動終端操作系統(tǒng)。在本發(fā)明的一個實施例中,構(gòu)造所述操作系統(tǒng)的所述系統(tǒng)擴展調(diào)用圖進一步包括:使用庫或工具讀取每個所述目標文件,得到所述目標文件的信息集合;將所述目標文件的信息集合合并為全局有向圖,得到所述系統(tǒng)擴展調(diào)用圖的所述結(jié)點集合和所述邊集合;將符合條件的所述函數(shù)和數(shù)據(jù)對象依次加入初始為空的所述入口點集合。本發(fā)明第二方面的實施例提出了一種基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化系統(tǒng),包括編譯模塊、系統(tǒng)擴展調(diào)用圖生成模塊、有效子圖生成模塊、重寫模塊和鏈接模塊,其中,所述編譯模塊用于對操作系統(tǒng)的源代碼進行編譯,生成可重定向的目標文件;所述系統(tǒng)擴展調(diào)用圖生成模塊用于根據(jù)所述目標文件構(gòu)造所述系統(tǒng)擴展調(diào)用圖,其中,所述系統(tǒng)擴展調(diào)用圖為有向圖,用于記錄所述目標文件中函數(shù)和數(shù)據(jù)對象之間的引用關(guān)系;所述有效子圖生成模塊用于根據(jù)所述系統(tǒng)擴展調(diào)用圖生成所述操作系統(tǒng)的有效子圖;所述重寫模塊用于根據(jù)所述有效子圖對所述目標文件進行重寫,得到優(yōu)化后的所述目標文件;所述鏈接模塊用于對所述優(yōu)化后的目標文件進行鏈接,得到優(yōu)化后的所述操作系統(tǒng)。根據(jù)本發(fā)明的基于全系統(tǒng)擴展調(diào)用圖的自動優(yōu)化系統(tǒng)使用自動化的系統(tǒng)對操作系統(tǒng)進行優(yōu)化,從編譯后的目標文件中讀取信息,構(gòu)建系統(tǒng)擴展調(diào)用圖,進一步得到擴展調(diào)用圖中的有效子圖,根據(jù)有效子圖對目標文件重寫后,鏈接生成優(yōu)化的可執(zhí)行文件和動態(tài)庫文件。本系統(tǒng)消除無用代碼,有效減小系統(tǒng)的體積,提升系統(tǒng)性能,不需人工干預,節(jié)省人力成本,提高效率。同時,本系統(tǒng)應(yīng)用范圍廣、自動化程度高、使用方便、可維護性好,優(yōu)化效果明顯。在本發(fā)明的一個實施例中,所述編譯模塊對操作系統(tǒng)的源代碼進行編譯進一步包括:所述編譯模塊對所述源代碼中每個所述函數(shù)和每個所述數(shù)據(jù)對象編譯生成所述單獨的段。在本發(fā)明的一個實施例中,所述編譯模塊使用編譯器中的編譯選項生成所述單獨的段。在本發(fā)明的一個實施例中,所述系統(tǒng)擴展調(diào)用圖包括結(jié)點集合、邊集合和入口結(jié)點集合,其中,所述結(jié)點集合為實體集合,所述實體包括代碼中的所述函數(shù)和所述數(shù)據(jù)對象;所述邊集合包括前驅(qū)對后繼存在使用關(guān)系的有向邊的集合;所述入口結(jié)點集合包括進程的所述入口結(jié)點和程序中動態(tài)綁定的所述入口結(jié)點。在本發(fā)明的一個實施例中,所述有效子圖的結(jié)點集包括所述系統(tǒng)擴展調(diào)用圖的所述入口點集以及所有所述入口點在所述系統(tǒng)擴展調(diào)用圖中的子孫結(jié)點。在本發(fā)明的一個實施例中,所述重寫模塊用二進制重寫的方法對所述目標文件進行修改,將所述有效子圖中不存的所述結(jié)點的對應(yīng)信息刪除。在本發(fā)明的一個實施例中,所述操作系統(tǒng)為移動終端操作系統(tǒng)。在本發(fā)明的一個實施例中,所述系統(tǒng)擴展調(diào)用圖生成模塊構(gòu)造所述系統(tǒng)擴展調(diào)用圖進一步包括:所述系統(tǒng)擴展調(diào)用圖生成模塊使用庫或工具讀取每個所述目標文件,得到所述目標文件的信息集合;所述系統(tǒng)擴展調(diào)用圖生成模塊將所述目標文件的信息集合合并為全局有向圖,得到所述系統(tǒng)擴展調(diào)用圖的所述結(jié)點集合和所述邊集合;所述系統(tǒng)擴展調(diào)用圖生成模塊將符合條件的所述函數(shù)和數(shù)據(jù)對象依次加入初始為空的所述入口點集合。本發(fā)明的附加方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。


本發(fā)明的上述和/或附加的方面和優(yōu)點從結(jié)合下面附圖對實施例的描述中將變得明顯和容易理解,其中:圖1是根據(jù)本發(fā)明實施例的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法的流程圖;和圖2是根據(jù)本發(fā)明實施例的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。下面參考圖1描述根據(jù)本發(fā)明實施例的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,包括以下步驟:步驟SllO:對操作系統(tǒng)的源代碼進行編譯,生成可重定向的目標文件。進一步地,對操作系統(tǒng)的源代碼進行編譯包括:對源代碼中每個函數(shù)和每個數(shù)據(jù)對象編譯生成單獨的段。其中,使用編譯器中的編譯選項生成單獨的段。步驟S120:根據(jù)目標文件構(gòu)造操作系統(tǒng)的系統(tǒng)擴展調(diào)用圖,系統(tǒng)擴展調(diào)用圖為有向圖,用于記錄目標文件中函數(shù)和數(shù)據(jù)對象之間的引用關(guān)系。其中,系統(tǒng)擴展調(diào)用圖包括結(jié)點集合、邊集合和入口結(jié)點集合,其中,結(jié)點集合為實體集合,實體包括代碼中的函數(shù)和數(shù)據(jù)對象;邊集合為前驅(qū)對后繼存在使用關(guān)系的有向邊的集合;入口結(jié)點集合包括進程的入口結(jié)點和程序中動態(tài)綁定的入口結(jié)點。構(gòu)造操作系統(tǒng)的系統(tǒng)擴展調(diào)用圖進一步包括:使用庫或工具讀取每個目標文件,得到目標文件的信息集合;將目標文件的信息集合合并為全局有向圖,得到擴展調(diào)用圖的結(jié)點集合和邊集合;將符合條件的實體依次加入初始為空的入口點集合。步驟S130:根據(jù)系統(tǒng)擴展調(diào)用圖生成系統(tǒng)的有效子圖。其中,有效子圖的結(jié)點集合包括系統(tǒng)擴展調(diào)用圖的入口點集合中的結(jié)點以及所有入口點在系統(tǒng)擴展調(diào)用圖中的子孫結(jié)點。步驟S140:根據(jù)有效子圖對目標文件進行重寫,得到優(yōu)化后的目標文件。進一步地,用二進制重寫的方法對目標文件進行修改,將有效子圖中不存的結(jié)點的對應(yīng)信息刪除。步驟S150:對優(yōu)化后的目標文件進行鏈接,得到優(yōu)化后的系統(tǒng)。下面以移動終端的操作系統(tǒng)優(yōu)化為例對本方法進行解釋說明。可以理解的是,下述優(yōu)化僅出于示例目的,本發(fā)明的實施例不限于此。步驟210:對移動終端操作系統(tǒng)的源代碼進行編譯,生成可重定向的目標文件,一般以.0為文件后綴名。使用編譯選項使編譯器對每個函數(shù)和數(shù)據(jù)對象都生成單獨的段(section),例如,在編譯前修改相關(guān) Makefile,向 CFLAGS 添加 “-ffunction-sections” 和“-fdata-sections”參數(shù),使編譯器將每個函數(shù)和數(shù)據(jù)對象編譯到單獨的段(section)中,以便后面的分析和優(yōu)化。其中,也將函數(shù)和對象統(tǒng)稱為實體,其中數(shù)據(jù)對象包括程序中顯式定義的全局和靜態(tài)變量以及編譯器生成的虛函數(shù)表等數(shù)據(jù)。步驟220:從目標文件提取信息,并記錄函數(shù)、變量等相互之間的引用關(guān)系,根據(jù)已有信息構(gòu)建操作系統(tǒng)的系統(tǒng)擴展調(diào)用圖。其中,系統(tǒng)擴展調(diào)用圖為有向圖,例如表示為G= (V, E, R)的形式,其中,(一)、V為結(jié)點集合:其中,每個結(jié)點與目標文件中一個實體對應(yīng),由于在步驟210中將每個實體編譯到單獨的段中,因此每個結(jié)點可以對應(yīng)到目標文件中的一個段。(二)、E為邊集合:系統(tǒng)擴展調(diào)用圖中的邊均為有向邊,可以以結(jié)點對的形式(U,V)表示,(U,V) e E0有向邊代表前驅(qū)結(jié)點U對后繼結(jié)點V存在使用關(guān)系,即在U的重定向數(shù)據(jù)中有相對V的重定向記錄時,在擴展調(diào)用圖中有從u到V的邊。。(三)、R為入口點集合:E是V的子集。入口結(jié)點為進程的入口點,或者作為程序運行中動態(tài)綁定的入口點。代表程序的啟動代碼,或可能在程序運行中通過動態(tài)綁定訪問,或?qū)儆谔厥獾亩?。具體構(gòu)建系統(tǒng)擴展調(diào)用圖的方法如下:步驟221:使用elfutils或類似的庫、工具依次讀取每個目標文件。對于每個目標文件,獲取以下信息集合:SS:該集合包括目標文件中所有含有實體的段的名稱;GS:該集合包括目標文件中定義的所有全局符號的信息。信息以關(guān)聯(lián)表的形式存儲,以便從全局符號的名稱迅速查找它所在的段的名稱。AF:該集合包括頭和尾都屬于該目標文件的有向邊的集合;AU:該集合包括頭屬于該目標文件,尾為外部符號(即屬于暫未解析的文件)的有向邊的信息。其中每個元素表示為(U,sym),其中u屬于SS,是該目標文件中的一個實體,sym為外部符號的名字,表示被u引用、但不在同一個目標文件中定義的實體。步驟222:將步驟S221中所獲得的信息合并為全局的有向圖。這一步將得到擴展調(diào)用圖的V和E:V為所有目標文件的SS的并集。為了區(qū)分不同目標文件的段,在V中每個結(jié)點的名稱以二元組〈目標文件名,段名 > 的形式表示。E表示包括E1' E2兩部分,E=E1 U E20其中E1為所有目標文件的AF的并集,代表頭和尾都屬于同一個目標文件的有向邊的集合,E2為頭和尾屬于不同目標文件的有向邊的集合。對所有目標文件的AF取并集得到E1。具體地,求E2的方法為:步驟222_1:令S=0 ο步驟222_2:遍歷每個目標文件的AU集合,對其中的每一個元素(U,sym),查找所有目標文件的GS集,獲得所有名稱為sym的全局符號的實體集S[sym],并將所有二元組(U,V)加入集合E2,其中V e S [sym]。步驟222_3:將E1與E2取并集得到E。步驟223:得到入口點集合R。
具體方法為:步驟223_1:令步驟223_2:依次將下列結(jié)點加入集合R:(—)、程序啟動代碼對應(yīng)的實體。例如,在Android上為_start符號所對應(yīng)的代碼。(二)、可能通過動態(tài)綁定使用的實體,包括:(I)、C/C++程序可能使用動態(tài)綁定訪問的實體:掃描所有目標文件的只讀數(shù)據(jù)段(rodata),找到其中所有字符串。對于系統(tǒng)中的所有全局實體,如果其名字與其中一個字符串相同,則認為該實體可能通過動態(tài)綁定使用,將其加入入口點集。(2)、JNI入口函數(shù)Java代碼通過JNI調(diào)用本地代碼時,Java虛擬機動態(tài)打開相應(yīng)的動態(tài)庫文件,并以動態(tài)綁定的方式使用其中的函數(shù)。根據(jù)JNI的標準,JNI_0nLoad、JNI_0nUnload以及其他Java_*函數(shù)需標記為入口點。其中,動態(tài)注冊的JNI入口在系統(tǒng)擴展調(diào)用圖中已經(jīng)被注冊函數(shù)使用,因此無需特別標記。 ( 3 )、系統(tǒng)中其他可能通過動態(tài)綁定使用的實體。(三)、位于特殊段中的實體。其中,特殊段包括所有名稱不以.text、.data、.rodata、.bss打頭的段。步驟230:根據(jù)系統(tǒng)擴展調(diào)用圖得到有效子圖。有效子圖的結(jié)點集合包含系統(tǒng)擴展調(diào)用圖的入口點集合,并且包括所有入口點在系統(tǒng)擴展調(diào)用圖中的子孫結(jié)點。有效子圖Gs= (Vs, Es, R)是系統(tǒng)擴展調(diào)用圖G=(V,E, R)的子圖。其中,G與Gs的入口結(jié)點集R相同,Vs是V是子集,Es是E的子集。VjPEs的用公式表示為:
權(quán)利要求
1.一種基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,其特征在于,包括以下步驟: 對操作系統(tǒng)的源代碼進行編譯,生成可重定向的目標文件; 根據(jù)所述目標文件構(gòu)造系統(tǒng)擴展調(diào)用圖,所述系統(tǒng)擴展調(diào)用圖為有向圖,用于記錄所述目標文件中函數(shù)和數(shù)據(jù)對象之間的引用關(guān)系; 根據(jù)所述系統(tǒng)擴展調(diào)用圖生成所述操作系統(tǒng)的有效子圖; 根據(jù)所述有效子圖對所述目標文件進行重寫,得到優(yōu)化后的所述目標文件;以及 對所述優(yōu)化后的目標文件進行鏈接,得到優(yōu)化后的所述操作系統(tǒng)。
2.如權(quán)利要求1所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,其特征在于,所述對操作系統(tǒng)的源代碼進行編譯進一步包括: 對所述源代碼中每個所述函數(shù)和每個所述數(shù)據(jù)對象編譯生成所述單獨的段。
3.如權(quán)利要求2所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,其特征在于,使用編譯器中的編譯選項生成所述單獨的段。
4.如權(quán)利要求1所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,其特征在于,所述系統(tǒng)擴展調(diào)用圖包括結(jié)點集、邊集和入口結(jié)點集合,其中,所述結(jié)點集為實體集合,所述實體包括代碼中的函數(shù)和數(shù)據(jù)對象;所述邊集包括前驅(qū)對后繼存在使用關(guān)系的有向邊的集合;所述入口結(jié)點集合包括進程的所述入口結(jié)點和程序中動態(tài)綁定的所述入口結(jié)點。
5.如權(quán)利要求1所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,其特征在于,所述有效子圖的結(jié)點集包括所述系統(tǒng)擴展調(diào)用圖的所述入口點集以及所有所述入口點在所述系統(tǒng)擴展調(diào)用圖中的子孫結(jié)點。
6.如權(quán)利要求1所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,其特征在于,用二進制重寫的方法對所 述目標文件進行修改,將所述有效子圖中不存的所述結(jié)點的對應(yīng)信息刪除。
7.如權(quán)利要求1所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,其特征在于,所述操作系統(tǒng)為移動終端操作系統(tǒng)。
8.如權(quán)利要求1所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,其特征在于,構(gòu)造所述操作系統(tǒng)的所述系統(tǒng)擴展調(diào)用圖進一步包括: 使用庫或工具讀取每個所述目標文件,得到所述目標文件的信息集合; 將所述目標文件的信息集合合并為全局有向圖,得到所述系統(tǒng)擴展調(diào)用圖的所述結(jié)點集合和所述邊集合; 將符合條件的所述函數(shù)和數(shù)據(jù)對象依次加入初始為空的所述入口點集合。
9.一種基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化系統(tǒng),其特征在于,包括編譯模塊、系統(tǒng)擴展調(diào)用圖生成模塊、有效子圖生成模塊、重寫模塊和鏈接模塊,其中, 所述編譯模塊,用于對操作系統(tǒng)的源代碼進行編譯,生成可重定向的目標文件; 所述系統(tǒng)擴展調(diào)用圖生成模塊,用于根據(jù)所述目標文件構(gòu)造所述系統(tǒng)擴展調(diào)用圖,其中,所述系統(tǒng)擴展調(diào)用圖為有向圖,用于記錄所述目標文件中函數(shù)和數(shù)據(jù)對象之間的引用關(guān)系; 所述有效子圖生成模塊,用于根據(jù)所述系統(tǒng)擴展調(diào)用圖生成所述操作系統(tǒng)的有效子圖; 所述重寫模塊。用于根據(jù)所述有效子圖對所述目標文件進行重寫,得到優(yōu)化后的所述目標文件;以及 所述鏈接模塊,用于對所述優(yōu)化后的目標文件進行鏈接,得到優(yōu)化后的所述操作系統(tǒng)。
10.如權(quán)利要求9所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化系統(tǒng),其特征在于,所述編譯模塊對操作系統(tǒng)的源代碼進行編譯進一步包括: 所述編譯模塊對所述源代碼中每個所述函數(shù)和每個所述數(shù)據(jù)對象編譯生成所述單獨的段。
11.如權(quán)利要求10所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化系統(tǒng),其特征在于,所述編譯模塊使用編譯器中的編譯選項生成所述單獨的段。
12.如權(quán)利要求9所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化系統(tǒng),其特征在于,所述系統(tǒng)擴展調(diào)用圖包括結(jié)點集合、邊集合和入口結(jié)點集合,其中,所述結(jié)點集合為實體集合,所述實體包括代碼中的所述函數(shù)和所述數(shù)據(jù)對象;所述邊集合包括前驅(qū)對后繼存在使用關(guān)系的有向邊的集合;所述入口結(jié)點集合包括進程的所述入口結(jié)點和程序中動態(tài)綁定的所述入口結(jié)點。
13.如權(quán)利要求9所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化系統(tǒng),其特征在于,所述有效子圖的結(jié)點集包括所述系統(tǒng)擴展調(diào)用圖的所述入口點集以及所有所述入口點在所述系統(tǒng)擴展調(diào)用圖中的子孫結(jié)點。
14.如權(quán)利要求9所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化系統(tǒng),其特征在于,所述重寫模塊用二進制重寫的方法對所述目標文件進行修改,將所述有效子圖中不存的所述結(jié)點的對應(yīng)信息刪除。
15.如權(quán)利要求9所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,其特征在于,所述操作系統(tǒng)為移動終端操作系統(tǒng)。
16.如權(quán)利要求9所述的基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,其特征在于,所述系統(tǒng)擴展調(diào)用圖生成模塊構(gòu)造所述系統(tǒng)擴展調(diào)用圖進一步包括: 所述系統(tǒng)擴展調(diào)用圖生成模塊使用庫或工具讀取每個所述目標文件,得到所述目標文件的信息集合; 所述系統(tǒng)擴展調(diào)用圖生成模塊將所述目標文件的信息集合合并為全局有向圖,得到所述系統(tǒng)擴展調(diào)用圖的所述結(jié)點集合和所述邊集合; 所述系統(tǒng)擴展調(diào)用圖生成模塊將符合條件的所述函數(shù)和數(shù)據(jù)對象依次加入初始為空的所述入口點集合。
全文摘要
本發(fā)明提出一種基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化方法,包括對操作系統(tǒng)的源代碼進行編譯,生成可重定向的目標文件;根據(jù)目標文件構(gòu)造系統(tǒng)擴展調(diào)用圖,系統(tǒng)擴展調(diào)用圖為有向圖,用于記錄目標文件中函數(shù)和數(shù)據(jù)對象之間的引用關(guān)系;根據(jù)系統(tǒng)擴展調(diào)用圖生成操作系統(tǒng)的有效子圖;根據(jù)有效子圖對目標文件進行重寫,得到優(yōu)化后的目標文件;對優(yōu)化后的目標文件進行鏈接,得到優(yōu)化后的操作系統(tǒng)。本發(fā)明自動化消除系統(tǒng)無用代碼,減小系統(tǒng)體積,提升了系統(tǒng)性能,方便高效,優(yōu)化效果明顯。本發(fā)明還公開了一種基于系統(tǒng)擴展調(diào)用圖的操作系統(tǒng)自動優(yōu)化系統(tǒng)。
文檔編號G06F9/45GK103116514SQ201310084560
公開日2013年5月22日 申請日期2013年3月15日 優(yōu)先權(quán)日2013年3月15日
發(fā)明者董淵, 王生原, 李疊, 駱歡 申請人:清華大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1