傳感器網(wǎng)絡(luò)的實(shí)際應(yīng)用需要相應(yīng)的操作系統(tǒng)來(lái)支撐。但是,傳感器網(wǎng)絡(luò)與傳統(tǒng)的嵌入式系統(tǒng)有很大的區(qū)別:組成傳感器網(wǎng)絡(luò)的節(jié)點(diǎn)具有比傳統(tǒng)嵌入式系統(tǒng)嚴(yán)格得多的資源限制;傳感器網(wǎng)絡(luò)可以由多種硬件異構(gòu)構(gòu)成,可以應(yīng)用于多個(gè)領(lǐng)域。這些區(qū)別使得傳統(tǒng)的實(shí)時(shí)嵌入式操作系統(tǒng)不適合于傳感器網(wǎng)絡(luò),另外,在傳感器網(wǎng)絡(luò)中,能量是極為寶貴的資源,而在傳統(tǒng)的操作系統(tǒng)設(shè)計(jì)中,這一點(diǎn)往往被忽略。
一、傳感器網(wǎng)絡(luò)的特點(diǎn)
1.很長(zhǎng)的生存周期
傳感器網(wǎng)絡(luò)在部署完成后要在無(wú)人值守的情況下運(yùn)行很長(zhǎng)一段時(shí)間,通常幾個(gè)月甚至一年。
2.網(wǎng)絡(luò)中存在多條并發(fā)數(shù)據(jù)流
傳感器網(wǎng)絡(luò)運(yùn)行過(guò)程中,網(wǎng)絡(luò)中同時(shí)存在著多條并發(fā)數(shù)據(jù)流,包括節(jié)點(diǎn)從周圍環(huán)境中收集的數(shù)據(jù)、節(jié)點(diǎn)從其他節(jié)點(diǎn)接收到的數(shù)據(jù)、為其他節(jié)點(diǎn)轉(zhuǎn)發(fā)的數(shù)據(jù)等。
3.要求有快速的響應(yīng)時(shí)間
在一些對(duì)時(shí)間要求比較高的應(yīng)用(如森林火災(zāi)監(jiān)測(cè),災(zāi)后救援等),要求網(wǎng)絡(luò)要有足夠快的響應(yīng)時(shí)間。
4.對(duì)網(wǎng)絡(luò)重編程
傳感器網(wǎng)絡(luò)部署完成后,用戶往往要改變網(wǎng)絡(luò)中運(yùn)行的程序,這要求將所有的節(jié)點(diǎn)收回并重新編程后重新部署是不現(xiàn)實(shí)的,操作系統(tǒng)要提供靈活高效的通過(guò)無(wú)線通信對(duì)網(wǎng)絡(luò)進(jìn)行在線重編程的機(jī)制。
5.要求有很好的健壯性
傳感器網(wǎng)絡(luò)部署完成后一般在無(wú)人值守的情況下運(yùn)行很長(zhǎng)一段時(shí)間,因此要求網(wǎng)絡(luò)有很好的健壯性。
二、傳感器網(wǎng)絡(luò)對(duì)操作系統(tǒng)的要求
對(duì)于運(yùn)行于傳感器網(wǎng)絡(luò)之上的應(yīng)用程序來(lái)說(shuō),傳感器網(wǎng)絡(luò)是作為一個(gè)整體的運(yùn)行平臺(tái),只考慮單個(gè)的節(jié)點(diǎn)是沒(méi)有意義的。這就要求支持傳感器網(wǎng)絡(luò)的操作系統(tǒng)要能夠很好的支持節(jié)點(diǎn)間的相互協(xié)作。此外,傳感器網(wǎng)絡(luò)通常用于在無(wú)人值守的情況下長(zhǎng)時(shí)間執(zhí)行某些任務(wù),因此,要求支持傳感器網(wǎng)絡(luò)的操作系統(tǒng)具有較低的功耗,能夠滿足網(wǎng)絡(luò)長(zhǎng)時(shí)間運(yùn)行的要求。
傳感器網(wǎng)絡(luò)的這些特點(diǎn),要求支持傳感器網(wǎng)絡(luò)的操作系統(tǒng)必須滿足以下要求。
1.代碼要足夠小,以滿足傳感器節(jié)點(diǎn)存儲(chǔ)資源的限制
傳感器節(jié)點(diǎn)的存儲(chǔ)空間都很小,一般具有128kB程序存儲(chǔ)器,4kB隨機(jī)存儲(chǔ)器。這要求編譯后的操作系統(tǒng)代碼要小于128kB。實(shí)際上,現(xiàn)存的幾個(gè)操作系統(tǒng)的代碼要比這個(gè)限制小得多,一般只有幾千到十幾千字節(jié)。
2.系統(tǒng)的功耗要小
系統(tǒng)任務(wù)沒(méi)有就緒時(shí),要能夠?qū)PU以調(diào)節(jié)到低能耗狀態(tài),并提供相應(yīng)的機(jī)制,使得應(yīng)用程序可以調(diào)節(jié)外部設(shè)備,如通信設(shè)備的能耗狀態(tài)。
3.要高效的支持并發(fā)
同一個(gè)傳感器節(jié)點(diǎn)上也存在著許多并發(fā)數(shù)據(jù)流,要在嚴(yán)格的存儲(chǔ)資源限制條件下提供對(duì)并發(fā)的高效支持。
4.靈活地支持各個(gè)節(jié)點(diǎn)間的協(xié)同工作
傳感器網(wǎng)絡(luò)是作為一個(gè)整體來(lái)運(yùn)行應(yīng)用程序的,傳感器網(wǎng)絡(luò)要能夠靈活高效的支持各個(gè)節(jié)點(diǎn)間的協(xié)同工作。
5.對(duì)硬件和應(yīng)用多樣性的支持
傳感器網(wǎng)絡(luò)可以由多種應(yīng)用,不同的應(yīng)用中的硬件可以不同,如不同的傳感器板,不同的通信設(shè)備等。操作系統(tǒng)要能夠提供對(duì)多種硬件的靈活地支持。要能夠有力地支持代碼復(fù)用,減少開(kāi)發(fā)新應(yīng)用程序的難度。
6.擴(kuò)展良好的通信機(jī)制
傳感器網(wǎng)絡(luò)可能由成千上萬(wàn)個(gè)節(jié)點(diǎn)構(gòu)成,這要求操作系統(tǒng)提供具有良好擴(kuò)展性的通信機(jī)制來(lái)支持網(wǎng)絡(luò)中節(jié)點(diǎn)之間的通信。
7.健壯性
傳感器網(wǎng)絡(luò)一般要在無(wú)人值守的情況下運(yùn)行很長(zhǎng)時(shí)間,要求操作系統(tǒng)具有很好的健壯性。
8.方便的網(wǎng)絡(luò)重編程機(jī)制
傳感器網(wǎng)絡(luò)常常會(huì)改變運(yùn)行于其上的應(yīng)用程序,操作系統(tǒng)應(yīng)該提供靈活的機(jī)制支持網(wǎng)絡(luò)重編程的高效完成。
三、傳感器網(wǎng)絡(luò)操作系統(tǒng)
1.TinyOS
TinyOS是第一個(gè)專為無(wú)線嵌入式傳感器網(wǎng)絡(luò)設(shè)計(jì)的操作系統(tǒng)。TinyOS是當(dāng)前無(wú)線傳感器網(wǎng)絡(luò)中使用最廣泛的操作系統(tǒng),也是事實(shí)上的標(biāo)準(zhǔn)操作系統(tǒng),已經(jīng)被移植到超過(guò)10種以上的硬件平臺(tái)上。TinyOS是一個(gè)基于模塊的事件驅(qū)動(dòng)的操作系統(tǒng)。考慮到存儲(chǔ)器的容量限制,TinyOS采用事件驅(qū)動(dòng)而不是多線程來(lái)支持并發(fā)。通過(guò)采用模塊化的設(shè)計(jì),TinyOS很好得支持了硬件和應(yīng)用的多樣性,提高了代碼復(fù)用的程度。TinyOS是一個(gè)靜態(tài)的系統(tǒng),這種靜態(tài)特性使得程序開(kāi)發(fā)者可以通過(guò)編譯器對(duì)整個(gè)系統(tǒng)進(jìn)行優(yōu)化,可以有效的減小代碼規(guī)模,對(duì)潛在的數(shù)據(jù)沖突進(jìn)行檢測(cè)。
2.SOS
SOS應(yīng)用程序由一個(gè)內(nèi)核和若干個(gè)可以動(dòng)態(tài)加載的模塊組成,模塊間可以通過(guò)消息傳遞機(jī)制進(jìn)行異步通信,也可以通過(guò)直接函數(shù)調(diào)用進(jìn)行同步通信。SOS的模塊性使得可以更方便地對(duì)網(wǎng)絡(luò)進(jìn)行重編程。并且,SOS使用傳統(tǒng)的C語(yǔ)言進(jìn)行編程,更符合程序員的習(xí)慣。
(作者單位:山東省棗莊科技職業(yè)學(xué)院)