嵌入式Linux通信中構(gòu)件技術(shù)應用研究
摘要:本文首先介紹了嵌入式Linux 網(wǎng)絡實時通信的現(xiàn)狀及構(gòu)件技術(shù)的特點,然后以嵌入式服務器的網(wǎng)絡實時通信應用為基礎(chǔ),將構(gòu)件技術(shù)引入Linux 的TCP/IP 協(xié)議設(shè)計中,給出了一種構(gòu)件化TCP/IP 協(xié)議棧中主要協(xié)議的方法,并對構(gòu)件化的協(xié)議進行測試,測試表明該方法為嵌入式Linux 網(wǎng)絡實時通信提供了一種新思路。
本文引用地址:http://butianyuan.cn/article/148658.htm1 引言
現(xiàn)今較為流行的操作系統(tǒng)Linux[1],本著開放、自由的精神吸引了全世界的目光,但將它應用于嵌入式實時環(huán)境還有許多缺點。特別是在運行內(nèi)核線程時,Linux 關(guān)閉中斷,而且分時調(diào)度虛擬文件系統(tǒng)的時間不確定性、缺乏高精度的計時器等問題都是需要解決的,所以在Linux 上進行實時改進,建立具有實時應用能力的操作系統(tǒng)是現(xiàn)代嵌入式操作系統(tǒng)的解決方案,也日益成為人們關(guān)注的課題。
目前,大多數(shù)嵌入式設(shè)備都具有存儲容量小、處理速度慢和網(wǎng)絡應用單一等特點,在這樣的嵌入式系統(tǒng)中應用傳統(tǒng)的單塊式網(wǎng)絡協(xié)議棧就存在問題:一是如果協(xié)議棧中某個子協(xié)議功能需要升級,就要升級整個協(xié)議棧甚至重新編譯全部內(nèi)核文件,工作流程復雜;二是協(xié)議棧不夠靈活,不能根據(jù)嵌入式系統(tǒng)對網(wǎng)絡通信的實際需求配置其內(nèi)容。
2 構(gòu)件技術(shù)介紹
早在60 年代,“軟件構(gòu)件”與“軟件組裝生產(chǎn)線”思想在國際北大西洋公約組織軟件工程會議上被提出來,從此,采用構(gòu)件技術(shù)實現(xiàn)軟件復用,采用“搭積木”的方式生產(chǎn)軟件,成為軟件業(yè)長期的夢想。然而,由于技術(shù)水平的限制,在很長一段時間內(nèi),構(gòu)件技術(shù)只是作為一種思想存在,直到CORBA 、J2EE、.NET 出現(xiàn),中間件興起以后,構(gòu)件技術(shù)才逐漸走向現(xiàn)實。
構(gòu)件最大的特點是可以不斷復用、降低成本、縮短開發(fā)周期。從構(gòu)件技術(shù)的實現(xiàn)來看,它規(guī)定了一種普遍使用的抽象“標準”,即規(guī)定了一組相同的結(jié)構(gòu)類接口來實現(xiàn)動態(tài)交流。通信協(xié)議引入構(gòu)件技術(shù)設(shè)計,可提供代碼的可重用性,使程序開發(fā)周期縮短,分工更加明細,使整個協(xié)議體系具備了更好的可配置性、高效性、可重用性、可擴展性和可表達性。從而解決了網(wǎng)絡通信中存在的四個基本問題:基本的構(gòu)件互操作性、協(xié)議版本升級、實現(xiàn)語言無關(guān)性、透明的跨進程互操作性。
軟件構(gòu)件技術(shù)[2]是建立在面向?qū)ο蠹夹g(shù)之上的,它提供了比面向?qū)ο蠹夹g(shù)更為高級的抽象,通常是對一組類進行封裝,通過固定的接口來調(diào)用該構(gòu)件所提供的方法。構(gòu)件技術(shù)成為了嵌入式操作系統(tǒng)和嵌入式應用軟件的發(fā)展趨勢。利用構(gòu)件技術(shù)把單塊式的網(wǎng)絡協(xié)議分割成多個獨立的構(gòu)件,每一個構(gòu)件都可以被新的構(gòu)件更新、替換,一組相關(guān)的構(gòu)件提供特定的服務。因此,系統(tǒng)就可以通過選擇相應的網(wǎng)絡協(xié)議構(gòu)件進行組裝來通信。
通信協(xié)議構(gòu)件化
隨著嵌入式系統(tǒng)與網(wǎng)絡的日益結(jié)合,在嵌入式實時操作系統(tǒng)中引入TCP/IP 協(xié)議棧,以支持嵌入式設(shè)備接入網(wǎng)絡,成為嵌入式領(lǐng)域重要的研究方向。但是傳統(tǒng)的TCP/IP 協(xié)議實現(xiàn)存在實時性能較差,不能滿足實時性要求高的嵌入式領(lǐng)域;傳統(tǒng)TCP/IP 的實現(xiàn)過于復雜,需占用大量系統(tǒng)資源,而嵌入式應用的系統(tǒng)資源往往都很有限;傳統(tǒng)的TCP/IP 協(xié)議系統(tǒng)是基于單塊式體系結(jié)構(gòu)的,即嵌入式實時操作系統(tǒng)中引入的協(xié)議是以單塊方式設(shè)計并加以實現(xiàn)的,隨著網(wǎng)絡技術(shù)的不斷發(fā)展,以及一些新應用不斷增長和變化的要求,這種通用的單塊式結(jié)構(gòu)的協(xié)議往往不能滿足需求。因此,需要把傳統(tǒng)TCP/IP 在不違背協(xié)議標準的前提下加以改進實現(xiàn),使其實時性得到提高,占用的存儲空間盡可能少,從而滿足嵌入式應用的要求。
Linux 可針對用戶的需求,動態(tài)載入和卸載操作系統(tǒng)構(gòu)件,這種模塊化機制[3]為通信協(xié)議構(gòu)件化提供了前提條件。用戶可以根據(jù)需要,在不對內(nèi)核重新編澤的情況下,能將模塊動態(tài)地載入內(nèi)核或從內(nèi)核移出,內(nèi)核可以僅實現(xiàn)一些基本功能,系統(tǒng)的可擴展性功能就留給模塊來完成,從而使內(nèi)核的大小和通訊量都達到最小。因此,在Linux 中實現(xiàn)協(xié)議構(gòu)件化可以依賴模塊化機制,協(xié)議構(gòu)件由Linux 模塊來實現(xiàn),模塊能動態(tài)地載入內(nèi)核或從內(nèi)核移出,而不需要對內(nèi)核重新編譯。
本文針對嵌入式服務器的網(wǎng)絡實時通信的應用,以經(jīng)過實時改進和裁剪的Linux 操作系統(tǒng)作為協(xié)議構(gòu)件化的平臺,對的TCP/IP 協(xié)議棧進行構(gòu)件化。
1 通信協(xié)議構(gòu)件化原理
2 通信協(xié)議分解
為了使協(xié)議構(gòu)件具備動態(tài)鏈接、信息封裝、統(tǒng)一接口等特性,首先要合理分解通信協(xié)議,這關(guān)系到通信協(xié)議構(gòu)件的粒度。從粒度上來看,構(gòu)件的粒度越小,協(xié)議劃分越細,協(xié)議構(gòu)件越多;構(gòu)件粒度越大,協(xié)議劃分越粗,協(xié)議構(gòu)件越少。
協(xié)議構(gòu)件粒度的大小,決定了協(xié)議構(gòu)件模塊化、信息封裝性、局部化的程度,為此必須保證協(xié)議構(gòu)件的獨立性。一旦構(gòu)件具備良好的獨立性,建立在協(xié)議構(gòu)件之上的應用程序構(gòu)件就更容易開發(fā),接口也會簡化;獨立的模塊也比較容易測試與維護,修改工作量小,錯誤傳播范圍小。如果粒度過小,雖然協(xié)議構(gòu)件獨立性增強,但是構(gòu)件的接口就增加了,給構(gòu)件的組合、構(gòu)件的管理帶來了很多的困難。如果粒度過大,構(gòu)件的尺度增加,獨立性降低,各個構(gòu)件之間的關(guān)聯(lián)度也會增加,不利于構(gòu)件的動態(tài)替換與更新。
粒度的大小可以用兩個定性標準來衡量,分別是內(nèi)聚和耦合。耦合衡量不同構(gòu)件彼此之間相互依賴的緊密程度;內(nèi)聚衡量一個協(xié)議構(gòu)件內(nèi)部各個元素彼此結(jié)合的緊密程度。在對協(xié)議進行構(gòu)件化的時候,采取的策略應當盡量使協(xié)議構(gòu)件之間的耦合度降低,獨立性增強,加強內(nèi)聚性。
目前對構(gòu)件的粒度還沒有統(tǒng)一的要求,由于構(gòu)件是一個高內(nèi)聚的軟件包,只要符合高內(nèi)聚的原則,則構(gòu)件的粒度大小可不限。
3.1.2 通信協(xié)議構(gòu)件化方法由上節(jié)可知,通信協(xié)議分解沒有統(tǒng)一的要求,所以,可以從多個角度對通信協(xié)議進行構(gòu)件化[4]。例如,按構(gòu)件的功能可進行基本協(xié)議構(gòu)件、通用協(xié)議構(gòu)件、對各領(lǐng)域的專用協(xié)議構(gòu)件或子系統(tǒng)協(xié)議構(gòu)件化;按構(gòu)件的使用方式可進行靜態(tài)的和動態(tài)的構(gòu)件化;按構(gòu)件的結(jié)構(gòu)可進行原子構(gòu)件及由多個構(gòu)件*的組合構(gòu)件化;按協(xié)議棧的分層結(jié)構(gòu)可進行層次構(gòu)件化。本文以Linux 下的TCP/IP 協(xié)議層次結(jié)構(gòu)(如圖1 所示)為基礎(chǔ),按層次構(gòu)件化。即將ARP、IP、ICMP、UDP、TCP 協(xié)議從Linux 內(nèi)核中分離出來,按每個協(xié)議完成的功能劃分成不同的模塊,每個模塊作為一個構(gòu)件。每個構(gòu)件用一個指針函數(shù)實現(xiàn),這樣,一個基于嵌入式Linux 的應用系統(tǒng)在內(nèi)核啟動時可按需求動態(tài)組裝協(xié)議功能,形成不同配置通信協(xié)議棧,顯示了系統(tǒng)網(wǎng)絡通信的靈活性。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)tcp/ip相關(guān)文章:tcp/ip是什么
評論