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