亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        VxWorks實時操作系統(tǒng)模塊加載分析與加載速度優(yōu)化

        2016-03-12 23:39:09中國科學院軟件研究所李彥峰李麗穎山東農(nóng)村信用社聯(lián)合社韓廣志金陵科技學院
        電子世界 2016年6期
        關(guān)鍵詞:符號系統(tǒng)

        中國科學院軟件研究所 李彥峰 李麗穎山東農(nóng)村信用社聯(lián)合社 韓廣志金陵科技學院 閔 建

        ?

        VxWorks實時操作系統(tǒng)模塊加載分析與加載速度優(yōu)化

        中國科學院軟件研究所 李彥峰 李麗穎
        山東農(nóng)村信用社聯(lián)合社 韓廣志
        金陵科技學院 閔 建

        【摘要】通過分析VxWorks系統(tǒng)符號表的生成過程發(fā)現(xiàn),整個系統(tǒng)的符號表生成是自動進行的,這就導致系統(tǒng)會生成一些額外的符號信息。這些符號信息不僅會使得系統(tǒng)變得臃腫,而且會增加系統(tǒng)符號哈希表的沖突概率,從而降低模塊加載時符號解析的速度。本文主要介紹利用減小VxWorks實時操作系統(tǒng)符號表提高模塊加載速度。由于利用tornado環(huán)境編譯VxWorks系統(tǒng)的時候會自動生成系統(tǒng)的全部符號信息,會導致系統(tǒng)變得臃腫。同時也會使得downloadable型應用程序在加載的時候符號解析過程時間復雜度提高。

        【關(guān)鍵詞】符號表;downloadable;模塊加載;符號解析

        0 引言

        隨著應用程序?qū)崟r操作系統(tǒng)的需求越來越復雜,傳統(tǒng)的將所有的應用程序編譯到大內(nèi)核的方式已不能滿足系統(tǒng)的需求。為了實現(xiàn)實時系統(tǒng)的靈活型,實時系統(tǒng)需要具備從外部加載模塊的功能;而加載過程涉及到模塊外部引入符號的解析。這就要求系統(tǒng)符號提供為模塊解析符號的功能,而系統(tǒng)符號表正是為實現(xiàn)這個功能而存在的。系統(tǒng)符號表用于建立符號名稱、類型和值之間的關(guān)系。其中,符號名稱為NULL結(jié)尾的任意字符串;類型為標志各種符號的正數(shù);值是一個字符指針,用于保存符號在內(nèi)存中的地址。在模塊加載的時候,如果模塊中出現(xiàn)外部引入的符號,則可以通過模塊中外部引入的模塊名稱來查找與該符號對應的實現(xiàn)地址。而系統(tǒng)符號表則提供符號名稱和符號地址的解析的橋梁,VxWorks正是通過符號表為downloadable型應用程序提供API調(diào)用的實現(xiàn)以及系統(tǒng)全局變量使用。

        1 符號表的生成以及管理

        1.1 符號表的作用

        VxWorks系統(tǒng)的全局模塊加載函數(shù)loadModule函數(shù)實現(xiàn)加載VxWorks系統(tǒng)下可執(zhí)行的二進制文件。在loadModule函數(shù)的調(diào)用流程中symFindByName函數(shù)用于downloadable型應用程序的符號解析。每個downloadable型應用程序中包含符號數(shù)據(jù)結(jié)構(gòu),在此數(shù)據(jù)結(jié)構(gòu)中包含外部引入符號以及這些符號在程序中被使用的地址,symFindByName函數(shù)根據(jù)外部引入符號的符號名稱查找該符號在內(nèi)存中的地址。符號表的每個符號項包含符號名稱、類型和值,符號項的值就是符號在內(nèi)存中的地址。因此,符號項的符號名稱經(jīng)過散列函數(shù)生成解析符號的關(guān)鍵字,解析成功之后,loadModule函數(shù)會根據(jù)downloadable型應用程序自身包含的符號信息,將對應的符號值填充到程序中對應的地方。如果,解析不成功則會報錯,不過程序不會終止運行。

        symFindByName函數(shù)的實現(xiàn)在符號表函數(shù)庫symLib.c文件中,在這個文件中,定義sysSymTbl管理符號的哈希表。sysSymTbl符號哈希表實現(xiàn)對系統(tǒng)符號表的存儲管理,所以symFindByName的搜索過程依賴sysSymTbl系統(tǒng)符號哈希表中的哈希查找。symFindByName函數(shù)查找時,以符號項的符號名稱經(jīng)過哈希散列函數(shù)操作生成關(guān)鍵字搜索整個sysSymTbl哈希表。如果在哈希表中出現(xiàn)沖突,就會對沖突的哈希表項進行鏈式搜索,直到找到符號項或者到達鏈表的表尾。如果到達表尾還沒有找到符號項則會報錯,但是不會退出。

        1.2 系統(tǒng)符號哈希表的建立

        VxWorks系統(tǒng)先由bootRom完成,該部分完成VxWorks系統(tǒng)的加載。在bootRom將系統(tǒng)加載到內(nèi)存之后,整個系統(tǒng)的控制權(quán)轉(zhuǎn)交給VxWorks系統(tǒng)。VxWorks主要完成系統(tǒng)的初始化,這些操作都是在Root任務中實現(xiàn)的。Root任務調(diào)用函數(shù)usrRoot進行系統(tǒng)的初始化,初始化過程通過調(diào)用symLib. c文件中的相應函數(shù)對系統(tǒng)符號哈希表sysSymTbl的建立過程。建立過程中,符號名稱經(jīng)過哈希散列函數(shù)生成關(guān)鍵字。此關(guān)鍵字作為索引找到系統(tǒng)符號哈希表sysSymTbl中,并將符號項插入到索引到的系統(tǒng)符號哈希表項之后。如果在哈希表的建立過程中發(fā)生沖突,則以拉鏈法將所有的沖突符號項鏈接到索引到的關(guān)鍵字的系統(tǒng)符號哈希表項后面。

        在系統(tǒng)符號哈希表sysSymTbl建表過程中,添加到的sysSymTbl中的符號項的生成依賴于編譯器的支持。如果在編譯VxWorks系統(tǒng)的時候添加了符號表的支持,那么在編譯的時候會利用makeSymTbl.exe工具生成symTbl.c文件。該文件當中包含四個部分:第一個是包含的頭文件,第二個是利用編譯器提供的IMPORT語句,第三個是一個符號數(shù)組standTbl,第四個是第三個符號數(shù)組的數(shù)目standTblSize。其中,第二部分的IMPORT指令用于得到相應的符號的地址,這些地址由編譯器在編譯時確定,并填充到第三部分的符號數(shù)組standTbl中的符號項的value成員變量中。系統(tǒng)符號哈希表正是通過standTbl中的符號項的符號名稱和value成員變量實現(xiàn)符號地址和符號名稱的對應關(guān)系。如果系統(tǒng)符號哈希表中沒有添加相應的符號項,那么對該符號的解析過程就會失敗。但是,由于符號項在編譯的時候會放到生成的系統(tǒng)文件中的.data段中,所以過多符號項的存在會導致編譯出來的VxWorks系統(tǒng)文件變得臃腫。同時過多的符號項會增加系統(tǒng)符號哈希表sysSymTbl沖突發(fā)生的概率。而當系統(tǒng)符號哈希表查找沖突時,就會以鏈表的形式進行遍歷。整個系統(tǒng)的哈希表大小為2的8次冪,也就是256個哈希表項。這樣,當出現(xiàn)大量的哈希表項時,就很容易引起沖突而進行順序查找。

        1.3 符號數(shù)組standTbl的生成

        在tornado集成開發(fā)環(huán)境下編譯VxWorks時,新建bootable型工程會自動生成對應makefile文件,該文件會引用rule.VxWorks文件中的生成規(guī)則生成符號表文件symTbl.c文件。在系統(tǒng)初始化時,系統(tǒng)會調(diào)用相關(guān)的函數(shù)將這個文件中的standTbl數(shù)組填充到系統(tǒng)的全局符號哈希表sysSymTbl中。然而,由于自動生成的符號數(shù)組standTbl中的符號項包含多余的符號信息,這樣就會增加系統(tǒng)符號哈希表的沖突概率。而downloadable型應用程序在加載時需要解析自身從外部引入的符號,如果沖突就會導致搜索符號項的速度降低,從而間接導致downloadable型應用程序加載速度過慢。

        2 符號表的優(yōu)化

        經(jīng)過上面的分析,減小符號表需要分三步進行實施。第一,需要了解downloadable型應用程序需要哪些外部的符號;第二,利用一些手工操作將symTbl.c文件中的不必需的符號項給刪除掉;第三,需要阻止在編譯VxWorks的時候自動生成symTbl.c的過程。以下是具體的實施過程:

        首先利用tornado環(huán)境自動生成symTbl.c文件,該文件作為篩選的符號超集。自動生成的符號數(shù)組standTbl包括所有系統(tǒng)實現(xiàn)的符號的信息,把符號超集中刪除downloadable型應用程序不必需的符號即可以實現(xiàn)減少系統(tǒng)符號哈希表的大小。然后利用生成的VxWorks系統(tǒng)目標平臺下的nm程序的-u命令,導出downloadable型應用程序的未定義符號。操作步驟為:nm –u application(application為downloadable型應用程序的名稱),由于nm命令只是將結(jié)果輸出到控制臺上面,可以利用系統(tǒng)提供的重定位功能將其輸出重定位到特定文件中(約定文件名為a.txt)。這一步主要實現(xiàn)生成一個包含downloadable型應用程序必需的符號名稱的文件。由于nm –u僅僅輸出符號的符號名稱,所以還需要一個修改過程。當symTbl.c文件中的符號數(shù)組standTbl中的符號項的符號名稱出現(xiàn)在a.txt文件中時,則保留在原symTbl. c文件中,否則刪除standTbl中的符號項,并且刪除symTb.c第二部分中與該符號項對應的生成符號地址的語句,同時symTbl.c文件的第四部分符號數(shù)項計數(shù)自減1。經(jīng)過該操作后,symTbl.c文件僅包含downloadable類型應用程序所必需的符號項。

        經(jīng)過上面的修改之后,symTbl.c文件僅包含加載downloadable型應用程序所必需的符號信息。為了阻止tornado編譯環(huán)境生成系統(tǒng)時將修改后的symTbl.c覆蓋掉,還需要找到自動生成symTbl.c文件的那條規(guī)則,并將其刪除。找到targethmake ules.VxWorks文件中控制生成symTbl.c文件的規(guī)則:

        symTbl.o:partialImage.o

        - @ $(RM) $@

        $(CP) partialImage.o tmp.o

        $(LDOUT_SYMS) tmp.o

        $(MKSYMTBL) tmp.o > symTbl.c

        - @ $(RM) tmp.o

        $(COMPILE_SYMTBL) symTbl.c -o $@

        將上面的生成規(guī)則改成:

        symTbl.o:

        $(COMPILE_SYMTBL) symTbl.c -o $@

        由于上訴規(guī)則并沒有禁止將symTbl.c文件編譯生成symTbl.o文件;所以在鏈接成VxWorks系統(tǒng)時,不會影響將symTbl.o鏈接到VxWorks系統(tǒng)文件中。重新編譯生成VxWorks系統(tǒng),此時VxWorks系統(tǒng)當中的符號僅僅包含downloadable型應用程序所必需的符號信息。系統(tǒng)的符號信息保存在standTbl數(shù)組中,而數(shù)組不僅需要占用系統(tǒng)文件的內(nèi)存,在系統(tǒng)加載到內(nèi)存時也需要一部分系統(tǒng)內(nèi)存來保存該數(shù)組。因此,減小系統(tǒng)的符號可以減小編譯生成的VxWorks的大小,還可以減少VxWork系統(tǒng)占用的內(nèi)存空間。同時,standTbl數(shù)組變小,會減小掛載到系統(tǒng)符號哈希表的符號項,從而間接達到提高downloadable型應用程序加載的目的。

        3 總結(jié)

        VxWorks系統(tǒng)的符號表中僅包含downloadable型應用程序所必須的符號,可以達到間接裁剪內(nèi)核的目的,同時使得VxWorks系統(tǒng)符號哈希表的256個表項較符號數(shù)組standTbl的項多,從而大大降低哈希表查找過程沖突發(fā)生的可能性。同時,在模塊加載時,加載過程的符號解析部分最好將會在O(1)時間復雜度完成,最差也不會比原來包含全部的符號表差。本文主要通過更加靈活的符號表裁剪手段,靈活控制系統(tǒng)符號表的大小,從而達到裁剪系統(tǒng)和加快downloadable型應用程序加載速度的目的。

        參考文獻

        [1]方箭,魯俊,朱穎,李芃芃.全球數(shù)字紅利頻譜釋放現(xiàn)狀及展望[J].電訊技術(shù),2015(12).

        [2]王文儉.2015CISPR年會主要技術(shù)內(nèi)容CISPR/H[J].安全與電磁兼容,2015(06).

        [3]方箭,李景春,黃標,馮巖.5G頻譜研究現(xiàn)狀及展望[J].電信科學,2015(12).

        李彥峰(1982-),山東德州人,碩士研究生,中級職稱,研究方向:軟件工程嵌入式系統(tǒng)。

        作者簡介:

        猜你喜歡
        符號系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        學符號,比多少
        幼兒園(2021年6期)2021-07-28 07:42:14
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        “+”“-”符號的由來
        半沸制皂系統(tǒng)(下)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        變符號
        倍圖的全符號點控制數(shù)
        亚洲欧美色一区二区三区| 日韩亚洲在线一区二区| 女同一区二区三区在线观看 | 98精品国产高清在线xxxx| 色婷婷一区二区三区久久亚洲| 人妻少妇看a偷人无码| 久久水蜜桃亚洲av无码精品麻豆| 久久久亚洲欧洲日产国产成人无码| 精品国产乱码久久免费看| 久久精品国产色蜜蜜麻豆国语版| 欧美日韩国产码高清综合人成| 日韩AV无码免费二三区| 亚洲视频在线观看青青草| 一区二区亚洲精品在线| 最新精品国偷自产在线| 久久国产精彩视频| 日韩色久悠悠婷婷综合| 亚洲中文字幕舔尻av网站| 亚洲国产另类精品| 午夜a福利| 亚洲国产综合一区二区| 四虎成人精品在永久免费| 国产精品久久久久久无码| 国产精品激情综合久久| 成熟的女人毛茸茸色视频| 日本另类αv欧美另类aⅴ| 妺妺窝人体色www在线图片 | 少妇无码av无码一区| 国产在线不卡AV观看| 日本熟妇视频在线中出| 伊人久久大香线蕉av波多野结衣| 国产超碰人人做人人爱ⅴa| 在线偷窥制服另类| 国产三级精品和三级男人| 国产精品无码aⅴ嫩草| 无码国产精品一区二区免| 热门精品一区二区三区| 伊人情人色综合网站| 理论片87福利理论电影| 国产精品无码久久AⅤ人妖| 国产日产一区二区三区四区五区|