1. gzyueqian
      13352868059

      粵嵌科技講解嵌入式Linux系統(tǒng)中的動(dòng)態(tài)擴(kuò)展技術(shù)

      更新時(shí)間: 2019-07-05 15:22:26來(lái)源: 粵嵌教育瀏覽量:6516

             目前,嵌入式Linux系統(tǒng)的研發(fā)熱潮正在蓬勃興起,并且占據(jù)了很大的市場(chǎng)份額。Linux是開(kāi)放源代碼的自由操作系統(tǒng),它為用戶提供了大限度的自由度,由于嵌入式系統(tǒng)千差萬(wàn)別,往往需要針對(duì)具體的應(yīng)用進(jìn)行修改和優(yōu)化,因而獲得源代碼就變得至關(guān)重要了。大家在學(xué)習(xí)嵌入式Linux系統(tǒng)的時(shí)候往往會(huì)有很多的專業(yè)問(wèn)題還沒(méi)有了解清楚的時(shí)候就會(huì)腦袋發(fā)熱的去亂學(xué),那么嵌入式Linux系統(tǒng)中的動(dòng)態(tài)擴(kuò)展技術(shù)是怎樣的呢?下面粵嵌科技的嵌入式Linux培訓(xùn)機(jī)構(gòu)的講師就來(lái)給大家講解下。

        一、幾種主要的內(nèi)核動(dòng)態(tài)擴(kuò)展技術(shù)的分析

        當(dāng)前應(yīng)用于操作系統(tǒng)中的動(dòng)態(tài)擴(kuò)展技術(shù)主要有四種:微內(nèi)核技術(shù)、可擴(kuò)展內(nèi)核技術(shù)、解釋器技術(shù)/JOS技術(shù)和內(nèi)核下載技術(shù)/LKM技術(shù)[1,2]。這叁種技術(shù)已經(jīng)在桌面操作系統(tǒng)的不同環(huán)境中得到了充分的應(yīng)用。嵌入式操作系統(tǒng)及其使用環(huán)境具有桌面操作系統(tǒng)所不同的特征,它在性能、地址空間、所需存儲(chǔ)空間和底層訪問(wèn)頻率等方面的特征,使得我們?cè)跀U(kuò)展技術(shù)的選擇上需要加以權(quán)衡。

        1、微內(nèi)核技術(shù)

        在微內(nèi)核操作系統(tǒng)中,內(nèi)核中包括了一些基本內(nèi)核功能(如創(chuàng)建和刪除任務(wù)、任務(wù)調(diào)度、內(nèi)存管理和中斷處理等),部分操作系統(tǒng)抽象和關(guān)鍵服務(wù)(如文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧等),都是在用戶空間運(yùn)行的。這大大減小了內(nèi)核的體積,同時(shí)也極大地方便了整個(gè)系統(tǒng)的升級(jí)、維護(hù)和移植。系統(tǒng)通過(guò)核心到用戶層向上調(diào)用服務(wù)的方法來(lái)為應(yīng)用程序提供服務(wù)。由于服務(wù)存在于用戶層,用戶可通過(guò)修改服務(wù)來(lái)獲得不同的行為,因而也稱為用戶層擴(kuò)展技術(shù)。由于所有的應(yīng)用程序都要利用操作系統(tǒng)提供的API或系統(tǒng)調(diào)用,完成內(nèi)存管理、進(jìn)程管理、I/O、設(shè)備管理等,因此通過(guò)在用戶空間監(jiān)視并截獲某個(gè)進(jìn)程的系統(tǒng)調(diào)用,然后將擴(kuò)展功能代碼插入系統(tǒng)調(diào)用中,就可以擴(kuò)展Linux操作系統(tǒng)功能。

        與內(nèi)核空間功能擴(kuò)展相比,在用戶空間擴(kuò)展安全性更強(qiáng),對(duì)Linux操作系統(tǒng)和應(yīng)用程序更加透明。用戶層擴(kuò)展技術(shù)的缺點(diǎn)在于,將服務(wù)提升到用戶層使程序運(yùn)行過(guò)程中核心態(tài)和用戶態(tài)之間的切換和自陷次數(shù)增加,導(dǎo)致系統(tǒng)負(fù)載增加,系統(tǒng)性能下降。另外,微內(nèi)核與傳統(tǒng)的嵌入式Linux內(nèi)核在結(jié)構(gòu)上是完全不同的。在嵌入式Linux中,如果采用該技術(shù)來(lái)增加系統(tǒng)的動(dòng)態(tài)擴(kuò)展性能,需要對(duì)內(nèi)核結(jié)構(gòu)重新設(shè)計(jì)。

        2、可擴(kuò)展內(nèi)核技術(shù)

        可擴(kuò)展內(nèi)核技術(shù)允許用戶應(yīng)用程序向內(nèi)核植入(inject)代碼以擴(kuò)展其功能。由于被植入的代碼是在核心態(tài)運(yùn)行,從而避免了微內(nèi)核技術(shù)中的系統(tǒng)性能下降的問(wèn)題。被植入的代碼是在核心態(tài)運(yùn)行,需要有一個(gè)實(shí)時(shí)檢查機(jī)制來(lái)驗(yàn)證代碼的安全性,保證被植入代碼不會(huì)導(dǎo)致系統(tǒng)的崩潰。程步奇等人使用軟件故障孤立技術(shù)來(lái)實(shí)現(xiàn)擴(kuò)展模塊的故障孤立,保證系統(tǒng)不受到擴(kuò)展模塊的破壞。Bershad等人也使用軟件故障孤立技術(shù)來(lái)限制被植入代碼可訪問(wèn)的內(nèi)存地址范圍。代碼安全性檢查無(wú)疑增加了系統(tǒng)的負(fù)擔(dān),問(wèn)題產(chǎn)生的根本塬因是那些被植入的擴(kuò)展性代碼對(duì)核心來(lái)說(shuō)是不可信任的。為了減輕系統(tǒng)的負(fù)擔(dān),就需要假設(shè)被植入的代碼是安全的、可信任的。

        3、解釋器技術(shù)/JOS技術(shù)

        與文獻(xiàn)中提到的JOS(Java OperatingSystem)技術(shù)相同,該技術(shù)允許開(kāi)發(fā)者用Java語(yǔ)言編寫(xiě)系統(tǒng)模塊,例如TCP/IP協(xié)議棧或文件系統(tǒng)。將這些模塊編譯成類(class)文件,并在系統(tǒng)運(yùn)行時(shí)由JVM(Java VirtualMachine)動(dòng)態(tài)地加載。Liao等人在1996年提出,將JVM插入到微內(nèi)核中,從而可以讓用戶編寫(xiě)Java程序,以擴(kuò)展內(nèi)核功能。

        解釋器技術(shù)是以解釋的方式來(lái)執(zhí)行程序代碼的,比較適合于交互式系統(tǒng);與編譯器相比,解釋器/JVM在移植時(shí)相對(duì)簡(jiǎn)單;解釋器通過(guò)采用中間代碼表示的方法,當(dāng)代碼長(zhǎng)度小于500KB的時(shí)候,可執(zhí)行的中間代碼通常比編譯產(chǎn)生的二進(jìn)制代碼小,這一點(diǎn)很適合于存儲(chǔ)空間非常有限的嵌入式系統(tǒng);,Java代碼容易維護(hù)和編寫(xiě),可移植性好,可實(shí)現(xiàn)代碼重用。采用解釋器技術(shù)的缺點(diǎn)是,中間可執(zhí)行代碼的執(zhí)行速度慢。在嵌入式 Linux系統(tǒng)中,內(nèi)核很大一部分由應(yīng)用所共享,甚至應(yīng)用程序本身就是內(nèi)核的一個(gè)線程,執(zhí)行頻率高,采用解釋器技術(shù)會(huì)大大降低系統(tǒng)的效率。有些Java平臺(tái)采用即時(shí)(Just?in?time)編譯技術(shù)來(lái)改進(jìn)代碼的執(zhí)行速度。該技術(shù)是利用空間來(lái)?yè)Q取時(shí)間,因此很難在硬件資源非常有限的嵌入式系統(tǒng)上實(shí)現(xiàn)。此外,由于Java語(yǔ)言的類庫(kù)很大,在一定程度上也阻礙了其在資源有限的嵌入式系統(tǒng)中的發(fā)展。

        4、內(nèi)核加載技術(shù)/LKM技術(shù)

        許多桌面操作系統(tǒng),例如Linux,提供LKM(Loadable KernelModule)來(lái)動(dòng)態(tài)擴(kuò)展它們的內(nèi)核。當(dāng)模塊(Module)安裝到內(nèi)核后就作為核心的一部分,不進(jìn)行實(shí)時(shí)安全檢測(cè),全速運(yùn)行。在嵌入式 Linux系統(tǒng)中,LKM的主要問(wèn)題是:存儲(chǔ)模塊需要占用額外空間以及被加載模塊的安全性。模塊的安全問(wèn)題可以通過(guò)軟件保護(hù)技術(shù)來(lái)解決。

        Oikawa等人在1996年提出一種與LKM類似的動(dòng)態(tài)核心模塊(DKMs)技術(shù)。與LKM一樣,DKMs以文件的形式存儲(chǔ)并能在系統(tǒng)運(yùn)行過(guò)程中動(dòng)態(tài)地加載和卸載。DKMs由一個(gè)用戶層的DKM服務(wù)器來(lái)管理,并非由內(nèi)核來(lái)管理。當(dāng)核心需要某模塊時(shí),由DKM服務(wù)器負(fù)責(zé)把相應(yīng)的DKM加載;當(dāng)核心的內(nèi)存資源緊缺時(shí),由DKM服務(wù)器負(fù)責(zé)卸載一個(gè)沒(méi)有被使用的DKM。缺點(diǎn)是所有的DKM是存儲(chǔ)在本地系統(tǒng)上的,占用了大量寶貴的存儲(chǔ)空間。

        與Oikawa的方法不同,Chang DaWei 等人于2003年提出了OperatingSystemPortalframework(OSP)的方法。該方法是將核心模塊存儲(chǔ)在一個(gè)資源充足的遠(yuǎn)程服務(wù)器上,并由服務(wù)器端工具OSPortal來(lái)管理所存儲(chǔ)的模塊,同時(shí)也負(fù)責(zé)處理客戶端(嵌入式系統(tǒng)內(nèi)核)發(fā)出的請(qǐng)求,按照請(qǐng)求動(dòng)態(tài)的選擇并連接模塊,然后通過(guò)網(wǎng)絡(luò)傳到客戶端。由于模塊的管理和連接都在服務(wù)器端,所以對(duì)客戶端來(lái)說(shuō)可以節(jié)省大量的資源空間。

        OS Portal的結(jié)構(gòu)通常,內(nèi)核動(dòng)態(tài)加載模塊的時(shí)候,模塊的連接工作由內(nèi)核完成。Chang DaWei的方法的獨(dú)特之處在于把模塊連接的工作交給服務(wù)器端執(zhí)行,不但降低了對(duì)內(nèi)存空間的需求,也減輕了內(nèi)核的負(fù)擔(dān)。

        二、其他相關(guān)研究

        1、基于FPGA的可動(dòng)態(tài)配置的片上系統(tǒng)

        FPGA(FieldProgrammable GateArray,現(xiàn)場(chǎng)可編程門陣列)是電子設(shè)計(jì)領(lǐng)域中活力和發(fā)展前途的一項(xiàng)技術(shù)。FPGA能完成任何數(shù)字器件的功能,上至高性能CPU,下至簡(jiǎn)單的74電路,都可以用它來(lái)實(shí)現(xiàn)。FPGA在嵌入式系統(tǒng)中的應(yīng)用越來(lái)越廣泛。John Williams和NeilBergmann用uCLinux作為操作系統(tǒng)平臺(tái),設(shè)計(jì)出可動(dòng)態(tài)配置的片上系統(tǒng)(rSoC)。uCLinux從遠(yuǎn)程服務(wù)器上下載FPGA程序代碼,然后利用shell腳本工具將代碼寫(xiě)進(jìn)FPGA芯片,實(shí)現(xiàn)系統(tǒng)功能的可動(dòng)態(tài)擴(kuò)展。

        2、動(dòng)態(tài)更新Linux內(nèi)核變量的方法

        在進(jìn)行Linux內(nèi)核嵌入式開(kāi)發(fā)時(shí),經(jīng)常使用內(nèi)核啟動(dòng)過(guò)程中讀取靜態(tài)配置文件內(nèi)容的方法對(duì)內(nèi)核某些變量進(jìn)行初始化。當(dāng)靜態(tài)配置文件改動(dòng)時(shí),只有重新啟動(dòng)內(nèi)核才能使新的配置生效。北京科技大學(xué)的田玉鳳等人通過(guò)修改文件. /include/linux/proc_fs.h,重新編譯、安裝新內(nèi)核后,利用/proc文件系統(tǒng),可動(dòng)態(tài)改變Linux內(nèi)核變量。

        3、在用戶空間擴(kuò)展Linux操作系統(tǒng)功能的方法

        與內(nèi)核空間功能擴(kuò)展相比,在用戶空間擴(kuò)展安全性更強(qiáng),對(duì)Linux操作系統(tǒng)和應(yīng)用程序更加透明。魏東林、盧正鼎等人通過(guò)在用戶空間跟蹤截獲系統(tǒng)調(diào)用并更改系統(tǒng)調(diào)用的行為來(lái)達(dá)到擴(kuò)展操作系統(tǒng)功能的目的。

        三、動(dòng)態(tài)擴(kuò)展技術(shù)面臨的挑戰(zhàn)和發(fā)展趨勢(shì)

        1、高實(shí)時(shí)性是嵌入式系統(tǒng)的基本要求

        由于Linux是一種通用操作系統(tǒng),而不是一個(gè)真正的實(shí)時(shí)操作系統(tǒng),內(nèi)核不支持事件優(yōu)先級(jí)和搶占實(shí)時(shí)特性(2003年底推出的Linux2.6內(nèi)核實(shí)現(xiàn)了一定程度上的可搶占性),所以,在進(jìn)行嵌入式Linux系統(tǒng)動(dòng)態(tài)擴(kuò)展性研究開(kāi)發(fā)時(shí),首要的問(wèn)題是擴(kuò)展 Linux的實(shí)時(shí)性能。系統(tǒng)在進(jìn)行動(dòng)態(tài)擴(kuò)展的過(guò)程中,如果擴(kuò)展的過(guò)程時(shí)間太長(zhǎng),肯定會(huì)影響到系統(tǒng)的實(shí)時(shí)響應(yīng),所以要求擴(kuò)展過(guò)程快速完成,例如基于LKM的內(nèi)核擴(kuò)展機(jī)制。如果模塊加載或替換的時(shí)間太長(zhǎng),在規(guī)定的時(shí)間內(nèi)不能完成,這對(duì)于嵌入式Linux的某些應(yīng)用來(lái)說(shuō)是不能接受的。

        2、資源有限性是嵌入式系統(tǒng)基本特征

        嵌入式系統(tǒng)無(wú)多余軟件也無(wú)多余硬件存儲(chǔ)器,增加存儲(chǔ)空間意味著成本的上升。在非常有限的存儲(chǔ)空間中要實(shí)現(xiàn)快速的內(nèi)核動(dòng)態(tài)擴(kuò)展,對(duì)研究人員來(lái)說(shuō)是一個(gè)極大的挑戰(zhàn)。在桌面PC世界,雖然已經(jīng)有很多動(dòng)態(tài)擴(kuò)展系統(tǒng)功能的方法,但在嵌入式世界很難實(shí)現(xiàn)。例如Linux系統(tǒng)的LKM機(jī)制,若模塊加載過(guò)程不經(jīng)改造,在嵌入式Linux系統(tǒng)中是不能使用的。

        3、期待完善的集成開(kāi)發(fā)環(huán)境

        一個(gè)完整的嵌入式系統(tǒng)的集成開(kāi)發(fā)環(huán)境一般需要編譯/連接器、內(nèi)核調(diào)試/跟蹤器和集成圖形界面開(kāi)發(fā)平臺(tái)。其中的集成圖形界面開(kāi)發(fā)平臺(tái)包括編輯器、調(diào)試器、軟件仿真器和監(jiān)視器等。在Linux系統(tǒng)中,具有功能強(qiáng)大的 gcc編譯器工具鏈,使用了基于GNU的調(diào)試器 gdb的遠(yuǎn)程調(diào)試功能,一般由一臺(tái)客戶機(jī)運(yùn)行調(diào)試程序調(diào)試宿主機(jī)運(yùn)行的操作系統(tǒng)內(nèi)核;在使用遠(yuǎn)程開(kāi)發(fā)時(shí)還可以使用交叉平臺(tái)的方式,如在Windows平臺(tái)下的調(diào)試跟蹤器對(duì)Linux的宿主系統(tǒng)作調(diào)試。但是,Linux在基于圖形界面的特定系統(tǒng)定制平臺(tái)的研究上,與Windows操作系統(tǒng)相比還存在差距。因此,要使嵌入式Linux動(dòng)態(tài)擴(kuò)展的研究更加方便、快捷,整體集成開(kāi)發(fā)環(huán)境還有待提高和完善。

        嵌入式Linux系統(tǒng)中的動(dòng)態(tài)擴(kuò)展技術(shù)的專業(yè)講解,粵嵌科技的嵌入式Linux培訓(xùn)機(jī)構(gòu)的講師就給大家講解這么多了,。如果說(shuō)還有更多想要咨詢專業(yè)上的問(wèn)題的話,可以點(diǎn)擊我們旁邊的咨詢按鈕來(lái)進(jìn)行咨詢,我們會(huì)有專業(yè)的老師來(lái)給大家進(jìn)行解答。想要學(xué)習(xí)嵌入式Linux系統(tǒng)中的動(dòng)態(tài)擴(kuò)展技術(shù)也可以點(diǎn)擊我們文章下面的獲取試聽(tīng)資格按鈕來(lái)獲取我們的免費(fèi)試聽(tīng)課程安排。

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 在线视频综合站 | 欧洲国产又粗又猛又爽的视频 | 亚洲免费人成视频观看 | 日本真人强奷视频 | 亚洲字幕中文在线乱码AV | 亚洲性视频日韩性视频 |