專利名稱:一種無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種單片機(jī)系統(tǒng)的內(nèi)核操控系統(tǒng)及其方法,尤其涉及的是一種無線傳感網(wǎng)絡(luò)中內(nèi)核實(shí)現(xiàn)裝置及其實(shí)現(xiàn)方法的改進(jìn)。
背景技術(shù):
現(xiàn)有技術(shù)中,隨著計(jì)算成本的下降以及微處理器體積越來越小,已經(jīng)有為數(shù)不少的無線傳感器網(wǎng)絡(luò)開始投入使用,雖然無線傳感器網(wǎng)絡(luò)的大規(guī)模商業(yè)應(yīng)用由于技術(shù)等方面的制約還有待時(shí)日。目前無線傳感器網(wǎng)絡(luò)的應(yīng)用主要集中在以下領(lǐng)域。1.環(huán)境的監(jiān)測和保護(hù)
隨著人們對于環(huán)境問題的關(guān)注程度越來越高,需要采集的環(huán)境數(shù)據(jù)也越來越多, 無線傳感器網(wǎng)絡(luò)的出現(xiàn)為隨機(jī)性的研究數(shù)據(jù)獲取提供了便利,并且還可以避免傳統(tǒng)數(shù)據(jù)收集方式給環(huán)境帶來的侵入式破壞。無線傳感器網(wǎng)絡(luò)可以跟蹤候鳥和昆蟲的遷移,研究環(huán)境變化對農(nóng)作物的影響,監(jiān)測海洋、大氣和土壤的成分等。此外,它也可以應(yīng)用在精細(xì)農(nóng)業(yè)中, 來監(jiān)測農(nóng)作物中的害蟲、土壤的酸堿度和施肥狀況等。2醫(yī)療護(hù)理
無線傳感器網(wǎng)絡(luò)在醫(yī)療研究、護(hù)理領(lǐng)域也可以大展身手。利用無線通信將各傳感器聯(lián)網(wǎng)可高效傳遞必要的信息從而方便接受護(hù)理,而且還可以減輕護(hù)理人員的負(fù)擔(dān)。英特爾主管預(yù)防性健康保險(xiǎn)研究的董事Eric Dishman稱,"在開發(fā)家庭用護(hù)理技術(shù)方面,無線傳感器網(wǎng)絡(luò)是非常有前途的領(lǐng)域“。3軍事領(lǐng)域
由于無線傳感器網(wǎng)絡(luò)具有密集型、隨機(jī)分布的特點(diǎn),使其非常適合應(yīng)用于惡劣的戰(zhàn)場環(huán)境中,使其非常適合應(yīng)用于惡劣的戰(zhàn)場環(huán)境中,包括偵察敵情、監(jiān)控兵力、裝備和物資,判斷生物化學(xué)攻擊等多方面用途。4其他用途
無線傳感器網(wǎng)絡(luò)還被應(yīng)用于其他一些領(lǐng)域。比如一些危險(xiǎn)的工業(yè)環(huán)境如井礦、核電廠等,工作人員可以通過它來實(shí)施安全監(jiān)測。也可以用在交通領(lǐng)域作為車輛監(jiān)控的有力工具。 此外和還可以在工業(yè)自動(dòng)化生產(chǎn)線等諸多領(lǐng)域。它可以大幅降低檢查設(shè)備的成本,同時(shí)由于可以提前發(fā)現(xiàn)問題,因此將能夠縮短停機(jī)時(shí)間,提高效率,并延長設(shè)備的使用時(shí)間。盡管無線傳感器技術(shù)目前仍處于初步應(yīng)用階段,但已經(jīng)展示出了非凡的應(yīng)用價(jià)值,相信隨著相關(guān)技術(shù)的發(fā)展和推進(jìn),一定會(huì)得到更大的應(yīng)用。近年來,無線傳感網(wǎng)絡(luò)雖然得到了快速發(fā)展,但由于傳感器節(jié)點(diǎn)具有資源受限、能量小、程序運(yùn)行不穩(wěn)定以及難維護(hù)等特點(diǎn),使得開發(fā)大規(guī)??煽康臒o線傳感網(wǎng)絡(luò)應(yīng)用陷入了困境。一些成熟的操作系統(tǒng)特性如操作系統(tǒng)保護(hù)、虛擬內(nèi)存以及基于搶占式的作業(yè)調(diào)度等策略勢必會(huì)大幅度的提高無線傳感網(wǎng)絡(luò)系統(tǒng)的可靠性,簡化開發(fā)復(fù)雜應(yīng)用的難度。然而, 由于傳感器硬件資源的限制,所采用的傳感器通常都是具有很小的存儲(chǔ)器單元以及很低計(jì)算能力的處理器芯片,使用傳統(tǒng)的操作系統(tǒng)設(shè)計(jì)技術(shù)很難實(shí)現(xiàn)優(yōu)良的特性。
尤其是,無線傳感網(wǎng)絡(luò)由于所要實(shí)現(xiàn)的功能是實(shí)時(shí)對待感測的數(shù)據(jù)進(jìn)行感測,并進(jìn)行處理后發(fā)送給上層系統(tǒng),其傳感器須要不停的執(zhí)行傳感工作任務(wù),因此,在長時(shí)間執(zhí)行傳感功能后,可能因?yàn)槌绦虼a冗余或程序本身故障等問題,導(dǎo)致內(nèi)核程序一直處于執(zhí)行狀態(tài)中,從而形成對外部其他指令不反應(yīng)的狀態(tài),比如檢測和查詢指令?,F(xiàn)有技術(shù)中此種狀態(tài)時(shí)一般需要技術(shù)人員必須到達(dá)傳感器所在地,將傳感器的電源關(guān)閉重啟才能恢復(fù)接受外部指令的狀態(tài),但這種處理方式并不能實(shí)質(zhì)解決問題,因此限制了無限傳感網(wǎng)絡(luò)的推廣和發(fā)展。本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法可以應(yīng)用于提升大規(guī)模傳感器節(jié)點(diǎn)(大于1000個(gè))應(yīng)用時(shí)的網(wǎng)絡(luò)性能,假定一個(gè)大規(guī)模的應(yīng)用場景,大量的節(jié)點(diǎn)可使用飛行器布撒在一片廣闊的無人區(qū)域中,這些節(jié)點(diǎn)需要隨時(shí)接收響應(yīng)無線控制請求,例如無線編程命令。但現(xiàn)今的傳感器中,操作系統(tǒng)與應(yīng)用程序共享同一內(nèi)存空間,且應(yīng)用程序代碼與操作系統(tǒng)具有相同的優(yōu)先級(jí)。此時(shí),如果程序出現(xiàn)錯(cuò)誤,如尋址錯(cuò)誤、內(nèi)存溢出、無效的指針以及代碼中遇到無限循環(huán)等,應(yīng)用程序?qū)⒁恢背钟蠧PU,或直接導(dǎo)致系統(tǒng)崩潰,使得操作系統(tǒng)無法響應(yīng)外部的控制命令,此時(shí)傳感器不能由人為控制一一重啟,嚴(yán)重的后果是將導(dǎo)致整個(gè)網(wǎng)絡(luò)癱瘓。目前最常用的方法是增加額外的硬件來解決以上問題,由硬件時(shí)鐘控制器周期的重啟系統(tǒng),重啟之后系統(tǒng)在執(zhí)行應(yīng)用程序之前先偵聽無線信道,可確保程序員能夠?qū)W(wǎng)絡(luò)重新編程。但這種處理方式的負(fù)面影響是編程的時(shí)候需考慮這樣的周期性,增加了網(wǎng)絡(luò)編程的復(fù)雜度,而且對于傳感器節(jié)點(diǎn)來說,周期性重啟系統(tǒng)很難做到精準(zhǔn),為防止對感測數(shù)據(jù)的無端消除,一般會(huì)考慮避免節(jié)點(diǎn)過于頻繁的重啟,并設(shè)置一個(gè)比較長的時(shí)間間隔。而這樣的處理意味著操作系統(tǒng)對CPU的控制還是沒有得到實(shí)質(zhì)性的保證。除去上面解決策略,近來也有一些在傳感器節(jié)點(diǎn)上實(shí)現(xiàn)的系統(tǒng)方案。例如,MANTIS與Contiki是最新提出的兩個(gè)低能耗并支持多線程的在MICA2上實(shí)現(xiàn)的系統(tǒng),請參見 H. Abrach, S. Bhatti,J. Carlson, H. Dai,J. Rose, A. Sheth, B. Shucker, J. Deng, and R.Han· MANTIS:System support for multimodal networks of in—situ sensors. Proc. of 2nd ACM Intl. Workshop on wirless sensor Networks and Applications(WSNA)(《支持多通道的網(wǎng)絡(luò)傳感器系統(tǒng)》,發(fā)表在無線傳感器網(wǎng)絡(luò)與應(yīng)用會(huì)議中),兩系統(tǒng)都不支持虛擬內(nèi)存,只考慮了 RAM資源的有限性,并沒有操作系統(tǒng)的保護(hù)機(jī)制,這樣出錯(cuò)后維護(hù)還是一個(gè)很大的挑戰(zhàn)。請參見文獻(xiàn) C. Han, R. Kumar,R,Shea,E. Kohler,and Μ. B. Srivastava. A dynamic operating system for sensor nodes. In Proc. of MobiSys,05,2005 (《傳感器節(jié)點(diǎn)中的動(dòng)態(tài)操作系統(tǒng)》,發(fā)表在2005年的MobiSys會(huì)議中)中提出的一個(gè)新操作系統(tǒng)S0S,支持動(dòng)態(tài)的加載程序模塊,但現(xiàn)在的版本中SOS中并沒有提供系統(tǒng)保護(hù)機(jī)制??傊?,現(xiàn)有技術(shù)的時(shí)鐘周期重啟系統(tǒng)技術(shù)一般使用外部硬件來實(shí)現(xiàn),增加了額外的開銷;而且,重啟時(shí)間間隔較大并沒有從本質(zhì)上解決操作系統(tǒng)長時(shí)間拿不到CPU的問題。 同時(shí),現(xiàn)有其他應(yīng)用到無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)上的系統(tǒng)技術(shù)都沒有考慮到系統(tǒng)保護(hù)的機(jī)制, 使得網(wǎng)絡(luò)中運(yùn)行大規(guī)模的應(yīng)用較為困難。基于以上問題,在大規(guī)模的傳感器應(yīng)用中,迫切需要設(shè)計(jì)一種新的運(yùn)行機(jī)制來保證操作系統(tǒng)對CPU的控制,保證系統(tǒng)的可控與安全性,這就是本發(fā)明的重點(diǎn)所在。由此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法,基于以上現(xiàn)有技術(shù)的缺陷,設(shè)計(jì)一種操作系統(tǒng)內(nèi)核調(diào)度策略裝置及其方法,此內(nèi)核策略在代碼加載時(shí)進(jìn)行二進(jìn)制轉(zhuǎn)化并將轉(zhuǎn)化后的二進(jìn)制碼常駐內(nèi)存空間,經(jīng)過轉(zhuǎn)化,應(yīng)用程序與操作系統(tǒng)以協(xié)同合作的方式工作,內(nèi)核可較為頻繁的獲得處理器的控制權(quán),以實(shí)現(xiàn)操作系統(tǒng)的保護(hù)特性。本發(fā)明的技術(shù)方案包括
一種無線傳感網(wǎng)絡(luò)中內(nèi)核裝置,其包括處理器單元,在外部存儲(chǔ)器上存儲(chǔ)的應(yīng)用程序以及運(yùn)行該應(yīng)用程序代碼的內(nèi)核;其中,在內(nèi)核空間中設(shè)置放置代碼塊的代碼頁,其中的每一代碼塊與所述應(yīng)用程序物理存儲(chǔ)的代碼段對應(yīng);并設(shè)置至少一調(diào)度器和一代碼塊生成器,用于轉(zhuǎn)換所述應(yīng)用程序代碼段跳轉(zhuǎn)指令為級(jí)聯(lián)匹配下一個(gè)待執(zhí)行的代碼塊。一種無線傳感網(wǎng)絡(luò)中內(nèi)核裝置的實(shí)現(xiàn)方法,其包括以下步驟
A、調(diào)度器激活代碼塊生成器,將應(yīng)用程序代碼段的跳轉(zhuǎn)指令轉(zhuǎn)換為級(jí)聯(lián)匹配下一個(gè)待執(zhí)行的代碼塊;
B、將多個(gè)代碼塊在內(nèi)核空間中設(shè)置成為代碼頁,常駐程序內(nèi)存;
C、在程序內(nèi)存中的代碼塊執(zhí)行遇到分支語句時(shí),跳到內(nèi)核并由內(nèi)核搜索跳轉(zhuǎn)目的地址,以使內(nèi)核和應(yīng)用程序交替獲得處理器的響應(yīng)。所述的實(shí)現(xiàn)方法,其中,所述步驟A中還包括在內(nèi)核空間中應(yīng)用程序代碼運(yùn)行時(shí),當(dāng)外部存儲(chǔ)器上的程序頁被調(diào)用加載時(shí),內(nèi)核空間讀取此頁并對頁碼中的代碼進(jìn)行二進(jìn)制轉(zhuǎn)化生成代碼塊。所述的實(shí)現(xiàn)方法,其中,所述步驟C還包括將所述目的地址寫入代碼塊中。所述的實(shí)現(xiàn)方法,其中,所述步驟A還包括在所述代碼塊中設(shè)置多個(gè)進(jìn)口點(diǎn),在每一進(jìn)口點(diǎn)前加一級(jí)聯(lián)邏輯的前綴,在內(nèi)核執(zhí)行跳轉(zhuǎn)指令后,從第一個(gè)進(jìn)口點(diǎn)依次匹配,匹配成功即執(zhí)行下面代碼頁的代碼塊。所述的實(shí)現(xiàn)方法,其中,所述步驟A還包括設(shè)置一寄存器協(xié)助實(shí)現(xiàn)所述級(jí)聯(lián)匹配,并將此寄存器的功能放到代碼塊中。所述的實(shí)現(xiàn)方法,其中,所述步驟A中的轉(zhuǎn)換還包括返回調(diào)度器和加速跳轉(zhuǎn)兩種。所述的實(shí)現(xiàn)方法,其中,所述步驟C還包括在代碼塊中設(shè)置源地址,并在該源地址中設(shè)置一系統(tǒng)計(jì)數(shù)器,由所述級(jí)聯(lián)邏輯檢查該系統(tǒng)計(jì)數(shù)器是否為零,非零時(shí)直接跳轉(zhuǎn)到目的地址所指向的代碼塊。所述的實(shí)現(xiàn)方法,其中,所述系統(tǒng)計(jì)數(shù)器設(shè)置為8比特。本發(fā)明所提供的一種無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法,由于采用上述在代碼加載時(shí)進(jìn)行二進(jìn)制轉(zhuǎn)化并將轉(zhuǎn)化后的二進(jìn)制碼常駐內(nèi)存空間的內(nèi)核策略,實(shí)現(xiàn)了內(nèi)核獲得處理器控制權(quán)的隨時(shí)性,并且由于本內(nèi)核策略使得應(yīng)用程序代碼具有一次加載、多次運(yùn)行的特性,一定程度上提高了程序的執(zhí)行速度,在整個(gè)無線傳感網(wǎng)絡(luò)中節(jié)省了能量開銷。而且,本發(fā)明內(nèi)核機(jī)制把系統(tǒng)高度抽象化,更易于工程師的操作,簡化了未來在無線傳感網(wǎng)絡(luò)中開發(fā)大規(guī)模應(yīng)用程序或操作系統(tǒng)的工作。
圖1為本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法中的宿主節(jié)點(diǎn)即傳感器節(jié)點(diǎn)的結(jié)構(gòu)示意圖。圖2為本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核裝置的功能結(jié)構(gòu)示意圖。圖3為本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核處理過程的具體代碼實(shí)例示意圖。圖4為本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核處理過程的流程實(shí)例示意圖。圖5是本發(fā)明內(nèi)核機(jī)制與虛擬機(jī)技術(shù)之間的性能效果對比示意圖。圖6為本發(fā)明內(nèi)核機(jī)制與現(xiàn)有技術(shù)其他內(nèi)核機(jī)制安全性效果對比圖。
具體實(shí)施例方式以下結(jié)合附圖,將對本發(fā)明的各較佳實(shí)施例進(jìn)行更為詳細(xì)的說明。本發(fā)明的無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法中,針對上述現(xiàn)有技術(shù)的不足, 設(shè)計(jì)了一種新的適用于現(xiàn)有大多數(shù)傳感器節(jié)點(diǎn)的操作系統(tǒng)內(nèi)核裝置及其工作策略方法,此內(nèi)核裝置在程序加載時(shí)對程序指令做修改,不僅避免了由于代碼錯(cuò)誤造成的應(yīng)用程序長時(shí)間持有CPU的問題,而且對于較大的應(yīng)用中此策略也能保證操作系統(tǒng)周期性頻繁的拿到 CPU,從而可以對其他外部控制命令做出及時(shí)的響應(yīng)。另外,經(jīng)對比試驗(yàn)發(fā)現(xiàn),本發(fā)明方法與現(xiàn)有相似方法比較不僅能保證系統(tǒng)安全,而且比現(xiàn)有同類方法更節(jié)能,能量利用更高效。本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法的較佳實(shí)施例中,如圖1所示,在所述傳感器節(jié)點(diǎn)上設(shè)置有物理存儲(chǔ)空間,以及處理器和存儲(chǔ)在外部存儲(chǔ)器中的應(yīng)用程序, 在內(nèi)核空間中程序代碼運(yùn)行時(shí),例如監(jiān)控溫度或其他環(huán)境參量的傳感器感測程序,當(dāng)外部存儲(chǔ)器上的程序頁被調(diào)用加載時(shí),內(nèi)核空間讀取此頁并對頁碼中部分代碼進(jìn)行修改(二進(jìn)制轉(zhuǎn)化)生成“代碼塊”,許多許多“代碼塊”組成“代碼頁”存放在程序內(nèi)存(Program memory)中,等待處理器下次調(diào)用執(zhí)行,因此可以稱此內(nèi)核機(jī)制為“一次加載,多次運(yùn)行”。在程序內(nèi)存中的“代碼塊”被執(zhí)行時(shí),遇到分支語句并不直接跳轉(zhuǎn)到新的代碼塊, 而是跳到內(nèi)核中,由內(nèi)核搜索跳轉(zhuǎn)目的地址。在此過程中,內(nèi)核與應(yīng)用程序交替持有CPU,一方面杜絕了應(yīng)用程序?qū)ぶ窌r(shí)發(fā)生跳轉(zhuǎn)錯(cuò)誤導(dǎo)致嚴(yán)重的錯(cuò)誤;其次,內(nèi)核以一定的頻率拿到控制器后能夠比較及時(shí)地對外部控制命令做出響應(yīng)。本發(fā)明技術(shù)方案不僅可以保證系統(tǒng)的安全,可以使系統(tǒng)及時(shí)的得到外部相應(yīng),同時(shí)“一次加載,多次運(yùn)行”的內(nèi)核機(jī)制為程序的運(yùn)行節(jié)約了時(shí)間,為整個(gè)系統(tǒng)節(jié)省了能耗,使得大規(guī)模應(yīng)用在無線傳感網(wǎng)絡(luò)中的能耗降到了最低。如圖1所示,本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法實(shí)施例中,應(yīng)用程序存放在傳感器節(jié)點(diǎn)的外部存儲(chǔ)器中。傳感器節(jié)點(diǎn)在初始化后,內(nèi)核加載運(yùn)行應(yīng)用程序,傳感器節(jié)點(diǎn)開始工作,進(jìn)行感測工作。在傳感器節(jié)點(diǎn)工作過程中,程序員很有可能需要使用無線通信方式來完善程序,或者對出現(xiàn)問題的應(yīng)用進(jìn)行維護(hù)。但一般情況下,這種操作很難得到及時(shí)的響應(yīng),因?yàn)楹苡锌赡芤恍?yīng)用程序錯(cuò)誤例如死循環(huán)、錯(cuò)誤的指針指向等,使得應(yīng)用程序一直占據(jù)處理器(CPU),系統(tǒng)無法及時(shí)地響應(yīng)外部命令。此時(shí),通常界定為操作系統(tǒng) (OS)是不安全的,如一些大規(guī)模應(yīng)用中,將傳感器節(jié)點(diǎn)撒播到無人地帶中時(shí),很難進(jìn)行進(jìn)一
6步的人工重啟動(dòng)作。控制與數(shù)據(jù)是系統(tǒng)安全非常重要的兩個(gè)方面,其中控制指操作系統(tǒng)內(nèi)核必須能夠及時(shí)的拿到處理器(CPU)響應(yīng)執(zhí)行任務(wù);數(shù)據(jù)這里指內(nèi)核引導(dǎo)處理器去執(zhí)行有效的數(shù)據(jù)。 為了確保控制與數(shù)據(jù)的安全性,本發(fā)明使內(nèi)核裝置在載入程序時(shí)對程序指令進(jìn)行修改。本發(fā)明方法定義一小塊連續(xù)的指令塊作為代碼塊并與外部存儲(chǔ)器中的物理塊對應(yīng)。當(dāng)代碼塊將要被加載時(shí),內(nèi)核讀取此塊并修改其中的指令來確保應(yīng)用程序與內(nèi)核能夠交替使用處理器。經(jīng)過修改之后的代碼塊稱作一個(gè)“代碼塊”。多個(gè)“代碼塊”被組織起來成為一頁存放到節(jié)點(diǎn)“代碼頁程序空間中”中成為“代碼頁”,如圖1所示。本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法中,所述內(nèi)核調(diào)用與返回到應(yīng)用程序的邏輯中包含了許多分布在內(nèi)核本身與“代碼塊”中的指令,為了更明確些,稱應(yīng)用程序到內(nèi)核與內(nèi)核到應(yīng)用程序的過程為轉(zhuǎn)換。一個(gè)轉(zhuǎn)換從應(yīng)用程序本身到內(nèi)核叫做“應(yīng)用-內(nèi)核的轉(zhuǎn)換”,相反由內(nèi)核到應(yīng)用程序稱為“內(nèi)核-應(yīng)用的轉(zhuǎn)換”。本發(fā)明方法通過修改跳轉(zhuǎn)指令來完成“應(yīng)用-內(nèi)核的轉(zhuǎn)換”,內(nèi)核可以確保持有CPU,一方面可能是因?yàn)樘D(zhuǎn)發(fā)生了,另一方面是因?yàn)榭刂屏鞯竭_(dá)了 “代碼塊”的末端。因此,通過應(yīng)用程序與內(nèi)核之前不間斷的跳轉(zhuǎn)和轉(zhuǎn)換,可以確保內(nèi)核非常頻繁的持有UPU,使得外部的控制命令有機(jī)會(huì)得到及時(shí)的響應(yīng)?;谝陨喜呗员景l(fā)明方法的兩次轉(zhuǎn)換,具體說明如下
如圖2所示,本發(fā)明內(nèi)核裝置包括“分頁器”、“代碼塊”生成器以及“調(diào)度器”三部分, 所述“調(diào)度器”執(zhí)行“代碼塊”,和一些內(nèi)核命令;例如,當(dāng)新的“代碼塊”到來時(shí),“調(diào)度器”喚醒“代碼塊”生成器將所述應(yīng)用程序的物理代碼段更改為“代碼塊”。所述“分頁器”與節(jié)點(diǎn)上的許多存儲(chǔ)器和存儲(chǔ)設(shè)備進(jìn)行交互,承擔(dān)內(nèi)部存儲(chǔ)器、程序存儲(chǔ)器與外存進(jìn)行換入換出的工作。如圖3所示,為本發(fā)明內(nèi)核程序的示例,如上所述,本發(fā)明采用“調(diào)度器”跟蹤應(yīng)用程序的程序計(jì)數(shù)器來調(diào)度相應(yīng)的“代碼塊”,當(dāng)“代碼塊”執(zhí)行的時(shí)候?yàn)榱吮WC能夠正確的跳轉(zhuǎn)回“調(diào)度器”,在程序跳轉(zhuǎn)到內(nèi)核之前調(diào)度器需要喚醒“代碼塊”生成器,令其對“代碼塊” 的跳轉(zhuǎn)指令做相應(yīng)的修改。假設(shè)代碼需要跳轉(zhuǎn)到目的地址DEST,“代碼塊”中的原始指令為“jmp DEST”,經(jīng)過“代碼塊”生成器的修改轉(zhuǎn)化為一系列進(jìn)棧、賦值的指令,如圖3所示,即首先將寄存器將r28-r31中的內(nèi)容壓入棧中,然后將跳轉(zhuǎn)目的地址分別加載到中,程序跳轉(zhuǎn)到 "home (kite”,而“home Gate”指向調(diào)度器中“welcome Home”代碼塊,由此代碼塊搜索寄存器尋找此目的地址指向的“代碼塊”;如果“代碼塊”中沒有此“代碼”,則從代碼頁中讀取新的代碼塊,并生成“代碼塊”,直到找到此目的地址指向的代碼塊為止。此時(shí)完成了一次從應(yīng)用程序向內(nèi)核的轉(zhuǎn)換,即內(nèi)核得到了 CPU的控制權(quán)。如圖4所示,當(dāng)內(nèi)核已經(jīng)找到或者調(diào)入了目的地址所指向的“代碼頁”時(shí),調(diào)度器需要轉(zhuǎn)換控制流到進(jìn)口點(diǎn)Entry point (EP),其中,EP是指“代碼塊”中對應(yīng)于目的地址 “代碼塊”的程序入口。一個(gè)直接傳統(tǒng)的跳轉(zhuǎn)方法是保存寄存器中的值并對目的地址進(jìn)行精確的偏移計(jì)算后,直接跳轉(zhuǎn)到目的地址的EP。但由于傳感器節(jié)點(diǎn)具有三個(gè)限制條件,即 RAM (數(shù)據(jù)存儲(chǔ)器)的很小、性能很低以及代碼密度低,因此本發(fā)明方法采取一種新的不同的策略1、由于RAM空間很小,因此本發(fā)明方法不將所有的目的地址信息全部放到RAM中,而是將地址信息存放到“代碼塊”中。2、“代碼塊”中可能會(huì)有許多個(gè)進(jìn)口點(diǎn)EP。為了提高系統(tǒng)的執(zhí)行性能,本發(fā)明方法不采用直接在“代碼塊”中查找精確的EP,以避免太多的查詢指令。本發(fā)明方法的策略是直接跳轉(zhuǎn)到“代碼塊”,即為每一個(gè)EP加一個(gè)級(jí)聯(lián)邏輯的前綴,內(nèi)核執(zhí)行跳轉(zhuǎn)指令后,先找到合適的“代碼塊”,然后從第一個(gè)EP開始逐個(gè)去匹配,匹配成功即執(zhí)行下面“代碼頁”的代碼;否則根據(jù)級(jí)聯(lián)關(guān)系繼續(xù)往下匹配,直至匹配成功。這種級(jí)聯(lián)匹配和跳轉(zhuǎn)需要一個(gè)寄存器來協(xié)助,本發(fā)明方法將此寄存器的功能也放到“代碼塊”中。3、為了增加代碼的密度,本發(fā)明方法并不把所有的恢復(fù)指令放到“代碼塊”中?;谝陨峡紤],本發(fā)明內(nèi)核裝置及方法如圖3所示的示例中采用下面的步驟來返回應(yīng)用程序代碼
STEP 1 內(nèi)核把目的地址最后8bits放到寄存器r29 ; STEP 2 內(nèi)核恢復(fù)寄存器r28 ;
STEP 3 內(nèi)核使用寄存器直接跳轉(zhuǎn)根據(jù)r30與r31的值跳到目的“代碼塊”; STEP 4 “代碼塊”恢復(fù)寄存器r30 ;
STEP 5 執(zhí)行級(jí)聯(lián)跳轉(zhuǎn),知道匹配到目的“代碼頁”(匹配EP 8個(gè)最重要的比特與寄存器r29的值);
STEP 6 “代碼塊”恢復(fù)寄存器r29和r31 ;
通過以上步驟,CPU的控制權(quán)就從內(nèi)核轉(zhuǎn)換到了應(yīng)用程序,此次轉(zhuǎn)換充分考慮了傳感器節(jié)點(diǎn)的硬件特性,使得轉(zhuǎn)換不會(huì)占用太多的硬件資源。經(jīng)過以上兩步的轉(zhuǎn)換,不僅很好的保證應(yīng)用程序的安全,同時(shí)保證了傳感網(wǎng)絡(luò)可以及時(shí)響應(yīng)外部無線控制命令,從而使得傳感器網(wǎng)絡(luò)變得更易維護(hù)。本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法的程序執(zhí)行時(shí),當(dāng)一個(gè)“代碼塊”中的分支指向或需要跳轉(zhuǎn)到代碼中的一個(gè)地址,由內(nèi)核協(xié)助完成此任務(wù)流的轉(zhuǎn)換。如果“代碼塊” s中沒有要轉(zhuǎn)向的頁,內(nèi)核會(huì)到外部存儲(chǔ)器中讀取相應(yīng)代碼塊并進(jìn)行“代碼塊化”,然后將“代碼塊”存放到程序內(nèi)存”代碼頁”s存放的空間中,以備下一次處理器調(diào)用。內(nèi)核對應(yīng)用程序“一次加載,多次使用”的策略會(huì)降低節(jié)點(diǎn)中能量的開銷。為進(jìn)一步減少地址“轉(zhuǎn)換”所帶來的傳感器節(jié)點(diǎn)中的開銷,以及分支指令比較多時(shí)帶來的計(jì)算速度降低問題,為了提高性能,本發(fā)明方法還對“轉(zhuǎn)換”進(jìn)行分類,針對不同的類型的“轉(zhuǎn)換”采用不同的處理方法。其中一種“應(yīng)用-內(nèi)核的轉(zhuǎn)換”稱為“HT”,這種“轉(zhuǎn)換” 總會(huì)返回到調(diào)度器的“home Gate”中;另外一種“應(yīng)用-內(nèi)核的轉(zhuǎn)換”稱為“TT”,設(shè)計(jì)它是用來加速跳轉(zhuǎn)的。本發(fā)明方法在調(diào)度器中設(shè)立一個(gè)“town Gate”邏輯,每次跳轉(zhuǎn)發(fā)生時(shí),此邏輯都去檢查跳轉(zhuǎn)“源”與“目的”的地址,然后在“源”中增加一個(gè)8比特的系統(tǒng)計(jì)數(shù)器計(jì)數(shù)。如果此計(jì)數(shù)器的值非零,即,“源”非第一次跳轉(zhuǎn)到目的位置,則“源”直接跳轉(zhuǎn)到目的地址指向的“代碼塊”,否則跳轉(zhuǎn)到“調(diào)度器”中的“home Gate”邏輯中。因此當(dāng)?shù)谝淮螆?zhí)行 “TT”之后,“代碼塊”之間就會(huì)建立起一條互通的“橋梁”,使得多條“應(yīng)用-內(nèi)核的轉(zhuǎn)換”和 “內(nèi)核-應(yīng)用的轉(zhuǎn)換”的轉(zhuǎn)換變?yōu)椤皯?yīng)用-應(yīng)用的轉(zhuǎn)換”。這樣,在本發(fā)明方法的許多跳轉(zhuǎn)指令中,許多條件跳轉(zhuǎn)與相關(guān)跳轉(zhuǎn)都將轉(zhuǎn)化為 “TT”,其他的跳轉(zhuǎn)轉(zhuǎn)化為“HT”。應(yīng)用程序中大多數(shù)的跳轉(zhuǎn)屬于條件跳轉(zhuǎn),而且“TT”又屬
8于快速的“應(yīng)用-應(yīng)用的轉(zhuǎn)換”,因此本發(fā)明方法中應(yīng)用程序的執(zhí)行速度會(huì)得到大幅度的提高,同時(shí)會(huì)大大的減少了傳感器網(wǎng)絡(luò)中能量的開銷。經(jīng)過以上跳轉(zhuǎn)與節(jié)能方案的實(shí)施,本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法的無線傳感器網(wǎng)絡(luò)不僅安全可靠,而且“一次加載,多次運(yùn)行”也降低了節(jié)點(diǎn)中的能量開銷。以下就更具體的一實(shí)施例對本發(fā)明的技術(shù)好處予以說明
在無線傳感器網(wǎng)絡(luò)中使用最廣泛的微處理機(jī)是ATmegaUSL,因此本發(fā)明內(nèi)核裝置及其實(shí)現(xiàn)方法在ATmegal28L微處理機(jī)上實(shí)現(xiàn)此內(nèi)核機(jī)制時(shí),使用MICA2族節(jié)點(diǎn)進(jìn)行測試,其中包括MICA2、XSMvl和XSMv3,其測試結(jié)果確實(shí)實(shí)現(xiàn)了傳感器網(wǎng)絡(luò)的安全可靠,降低了節(jié)點(diǎn)中的能量開銷。本發(fā)明內(nèi)核機(jī)制避免了過度依賴復(fù)雜的硬件,使得傳感器平臺(tái)可以廣泛的使用現(xiàn)有的多種微處理器;同時(shí),為將來設(shè)計(jì)更低耗的硬件平臺(tái)留下更廣闊的空間。由于系統(tǒng)能量開銷取決于硬件技術(shù),制造過程,能量管理策略與工作量。因此,假設(shè)是基于傳感器節(jié)點(diǎn)MICA/MICA2上的實(shí)驗(yàn)結(jié)果,以及對未來實(shí)際中最可能出現(xiàn)的性能進(jìn)行評(píng)估。在傳感器節(jié)點(diǎn)上,由于需要實(shí)時(shí)感測信號(hào),休眠模式耗能極其有限。在平臺(tái)MICA 與MICA2上的實(shí)驗(yàn)結(jié)果顯示,節(jié)點(diǎn)在休眠時(shí)的耗能范圍大致為30微安到100微安。根據(jù)微處理器的數(shù)據(jù)表,可知節(jié)點(diǎn)休眠時(shí)的最小開銷為5微安,因此,假設(shè)4K的SRAM休眠時(shí)耗能 30微安。未來使用相同的技術(shù)時(shí),SRAM耗能可以近似的與其大小成比例。另外,經(jīng)研究發(fā)現(xiàn)SRAM耗能大約占到微處理器總耗能的90%,因此,假設(shè)傳感器節(jié)點(diǎn)上64K SRAM耗能至少為4K SRAM的兩倍以上,即60微安。節(jié)點(diǎn)結(jié)束休眠模式,處于活躍模式時(shí),研究發(fā)現(xiàn)節(jié)點(diǎn)在活躍期耗能大約為10到20 毫安,其中微處理器大約耗能8毫安。當(dāng)微處理器等待事件時(shí),進(jìn)入空閑狀態(tài)大約能節(jié)省 4. 8毫安的能量。因此,假設(shè)節(jié)點(diǎn)在活躍期耗能為15毫安,空閑期耗能10. 2毫安。大多數(shù)傳感器網(wǎng)絡(luò)應(yīng)用都采用節(jié)點(diǎn)周期性工作(活躍期)與休眠交替的模式。工作與休眠的占空比大約為1%到10%,在此假設(shè)為1%,因?yàn)榇蠖鄶?shù)無線傳感器網(wǎng)絡(luò)應(yīng)用都希望整個(gè)網(wǎng)絡(luò)能有個(gè)比較長的工作時(shí)間,例如可以工作若干月。當(dāng)傳感器被喚醒時(shí),傳感器以幾十毫秒到幾秒不等的周期進(jìn)行信號(hào)采樣和無線信道偵聽。傳感器在“醒”著的時(shí)候,它的工作是基于事件驅(qū)動(dòng)的。假設(shè)微處理器在等待中斷的時(shí)候,會(huì)進(jìn)入空閑模式來節(jié)省能耗。假設(shè)本發(fā)明內(nèi)核機(jī)制會(huì)使用三倍于硬件方案的時(shí)鐘周期來進(jìn)行計(jì)算,即使用本內(nèi)核方案,微處理器工作花費(fèi)的時(shí)間更多。本發(fā)明內(nèi)核機(jī)制另外一個(gè)耗能的方面是在頁面交換時(shí)產(chǎn)生的,在無線傳感器節(jié)點(diǎn)上往flash里寫入數(shù)據(jù)是能量開銷比較大的工作。根據(jù)數(shù)據(jù)表,往MICA2的flash中寫入一頁數(shù)據(jù)大約耗能1. 2mJ的能量。本內(nèi)核機(jī)制在虛擬內(nèi)存頁面交換機(jī)制中采用技術(shù)盡量使得交換的次數(shù)越少越好。假設(shè)傳感器醒著的時(shí)候,頁面交換頻率為每秒鐘交換一頁。那么由此產(chǎn)生的能耗為0. 4mA。有了以上的這些假設(shè),可以計(jì)算兩個(gè)系統(tǒng)(一個(gè)系統(tǒng)使用本發(fā)明內(nèi)核機(jī)制,一個(gè)沒有)的平均能耗,使用本發(fā)明內(nèi)核機(jī)制的能耗為0.416mW,沒有使用本發(fā)明內(nèi)核機(jī)制的系統(tǒng)耗能為0. 487mff,由此可以看出本發(fā)明內(nèi)核機(jī)制的能效將更高一籌。雖然虛擬機(jī)技術(shù)也可以提供硬件的抽象,跨過硬件提供一些便利的操作。Mate是近來在TinyOS (—種無線傳感器網(wǎng)絡(luò)操作系統(tǒng))上實(shí)現(xiàn)的虛擬機(jī)方案,此方案被廣泛認(rèn)可,因其可以提供一種可控的操作環(huán)境,為將來在無線傳感網(wǎng)絡(luò)中開發(fā)大型的應(yīng)用打下基礎(chǔ)。如圖5所示,使用“插入排序”程序來評(píng)估虛擬機(jī)技術(shù)性能與本發(fā)明內(nèi)核機(jī)制的結(jié)果對比,此程序被廣泛的使用到操作系統(tǒng)性能的比較中。從圖中可以發(fā)現(xiàn),列表從0增長到 100時(shí),使用本發(fā)明內(nèi)核策略的系統(tǒng)kernel-x執(zhí)行時(shí)間有明顯的增加。這是因?yàn)閼?yīng)用中新代碼塊加載時(shí)“代碼化”過程的開銷,全部加載完畢后執(zhí)行時(shí)間增長就趨于緩慢了,這是因?yàn)楸景l(fā)明內(nèi)核策略的“一次加載,多次運(yùn)行”機(jī)制的作用。對于虛擬機(jī)Mate來說,從圖中可以看出程序的執(zhí)行時(shí)間在不斷的增長。由于硬件資源受限,成熟的虛擬機(jī)優(yōu)化技術(shù)在MICA2 節(jié)點(diǎn)中無用武之地。綜上,從圖中數(shù)據(jù)中看出,隨著列表的增多,本發(fā)明內(nèi)核機(jī)制中加載時(shí)修改的方法比虛擬機(jī)技術(shù)運(yùn)行速度更快。由此可見,本發(fā)明內(nèi)核策略與之前的技術(shù)比較,更節(jié)能,且隨著應(yīng)用復(fù)雜度的提高,運(yùn)算量的增大,使用本發(fā)明內(nèi)核策略的程序運(yùn)行速度比現(xiàn)有相關(guān)技術(shù)更節(jié)能或更快,從而對于整個(gè)網(wǎng)絡(luò)來說便實(shí)現(xiàn)了安全可控與節(jié)能的目的。如果沒有操作系統(tǒng)的保護(hù),一個(gè)程序的錯(cuò)誤很有可能會(huì)導(dǎo)致傳感器節(jié)點(diǎn)的崩潰, 這時(shí)節(jié)點(diǎn)或者系統(tǒng)已經(jīng)無法響應(yīng)外部的命令,很有可能會(huì)導(dǎo)致整個(gè)網(wǎng)絡(luò)的崩潰。本發(fā)明的內(nèi)核機(jī)制可以有效保護(hù)操作系統(tǒng)的安全,預(yù)防錯(cuò)誤的產(chǎn)生。如圖6示出了本發(fā)明內(nèi)核機(jī)制與現(xiàn)有技術(shù)的其他內(nèi)核機(jī)制相比,在給出一系列程序錯(cuò)誤以及當(dāng)這些程序錯(cuò)誤發(fā)生時(shí),傳感器節(jié)點(diǎn)是否可控的列表。從圖中可以看出如果使用本發(fā)明內(nèi)核機(jī)制,由于操作系統(tǒng)受到了保護(hù),傳感器節(jié)點(diǎn)總是可控的。雖然這些錯(cuò)誤也許會(huì)導(dǎo)致系統(tǒng)的不正常,但操作系統(tǒng)的操作不會(huì)受到影響,一些重要的系統(tǒng)操作例如無線控制命令,仍然是可以得到正確的響應(yīng)。相比之下,沒有使用本發(fā)明內(nèi)核機(jī)制的應(yīng)用程序明顯是不安全的。由此,本發(fā)明從根本上解決了節(jié)點(diǎn)對外部控制命令無法及時(shí)響應(yīng)以及應(yīng)用程序因跳轉(zhuǎn)錯(cuò)誤引起的長時(shí)間持有CPU問題,使得在大規(guī)模無線傳感網(wǎng)絡(luò)中執(zhí)行大型的應(yīng)用成為了可能。本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法不僅能夠保證OS的安全性,而且與現(xiàn)有其他可應(yīng)用到傳感器節(jié)點(diǎn)上的相似技術(shù)(虛擬機(jī)方法)比較,本發(fā)明更節(jié)能,能量利用
率更高。應(yīng)當(dāng)理解的是,上述針對本發(fā)明各較佳實(shí)施例的描述較為詳細(xì)和具體,但不能因此而認(rèn)為是對本發(fā)明專利保護(hù)范圍的限制,本發(fā)明的專利范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種無線傳感網(wǎng)絡(luò)中內(nèi)核裝置,其包括處理器單元,在外部存儲(chǔ)器上存儲(chǔ)的應(yīng)用程序以及運(yùn)行該應(yīng)用程序代碼的內(nèi)核;其特征在于,在內(nèi)核空間中設(shè)置放置代碼塊的代碼頁, 其中的每一代碼塊與所述應(yīng)用程序物理存儲(chǔ)的代碼段對應(yīng);并設(shè)置至少一調(diào)度器和一代碼塊生成器,用于轉(zhuǎn)換所述應(yīng)用程序代碼段跳轉(zhuǎn)指令為級(jí)聯(lián)匹配下一個(gè)待執(zhí)行的代碼塊。
2.一種無線傳感網(wǎng)絡(luò)中內(nèi)核裝置的實(shí)現(xiàn)方法,其包括以下步驟A、調(diào)度器激活代碼塊生成器,將應(yīng)用程序代碼段的跳轉(zhuǎn)指令轉(zhuǎn)換為級(jí)聯(lián)匹配下一個(gè)待執(zhí)行的代碼塊;B、將多個(gè)代碼塊在內(nèi)核空間中設(shè)置成為代碼頁,常駐程序內(nèi)存;C、在程序內(nèi)存中的代碼塊執(zhí)行遇到分支語句時(shí),跳到內(nèi)核并由內(nèi)核搜索跳轉(zhuǎn)目的地址,以使內(nèi)核和應(yīng)用程序交替獲得處理器的響應(yīng)。
3.根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)方法,其特征在于,所述步驟A中還包括在內(nèi)核空間中應(yīng)用程序代碼運(yùn)行時(shí),當(dāng)外部存儲(chǔ)器上的程序頁被調(diào)用加載時(shí),內(nèi)核空間讀取此頁并對頁碼中的代碼進(jìn)行二進(jìn)制轉(zhuǎn)化生成代碼塊。
4.根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)方法,其特征在于,所述步驟C還包括將所述目的地址寫入代碼塊中。
5.根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)方法,其特征在于,所述步驟A還包括在所述代碼塊中設(shè)置多個(gè)進(jìn)口點(diǎn),在每一進(jìn)口點(diǎn)前加一級(jí)聯(lián)邏輯的前綴,在內(nèi)核執(zhí)行跳轉(zhuǎn)指令后,從第一個(gè)進(jìn)口點(diǎn)依次匹配,匹配成功即執(zhí)行下面代碼頁的代碼塊。
6.根據(jù)權(quán)利要求5所述的實(shí)現(xiàn)方法,其特征在于,所述步驟A還包括設(shè)置一寄存器協(xié)助實(shí)現(xiàn)所述級(jí)聯(lián)匹配,并將此寄存器的功能放到代碼塊中。
7.根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)方法,其特征在于,所述步驟A中的轉(zhuǎn)換還包括返回調(diào)度器和加速跳轉(zhuǎn)兩種。
8.根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)方法,其特征在于,所述步驟C還包括在代碼塊中設(shè)置源地址,并在該源地址中設(shè)置一系統(tǒng)計(jì)數(shù)器,由所述級(jí)聯(lián)邏輯檢查該系統(tǒng)計(jì)數(shù)器是否為零, 非零時(shí)直接跳轉(zhuǎn)到目的地址所指向的代碼塊。
9.根據(jù)權(quán)利要求8所述的實(shí)現(xiàn)方法,其特征在于,所述系統(tǒng)計(jì)數(shù)器設(shè)置為8比特。
全文摘要
本發(fā)明公開了一種無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法,其方法包括調(diào)度器激活代碼塊生成器,將應(yīng)用程序代碼段的跳轉(zhuǎn)指令轉(zhuǎn)換為級(jí)聯(lián)匹配下一個(gè)待執(zhí)行的代碼塊;將多個(gè)代碼塊在內(nèi)核空間中設(shè)置成為代碼頁,常駐程序內(nèi)存;在程序內(nèi)存中的代碼塊執(zhí)行遇到分支語句時(shí),跳到內(nèi)核并由內(nèi)核搜索跳轉(zhuǎn)目的地址,以使內(nèi)核和應(yīng)用程序交替獲得處理器的響應(yīng)。本發(fā)明無線傳感網(wǎng)絡(luò)中內(nèi)核裝置及其實(shí)現(xiàn)方法由于采用上述在代碼加載時(shí)進(jìn)行二進(jìn)制轉(zhuǎn)化并將轉(zhuǎn)化后的二進(jìn)制碼常駐內(nèi)存空間,實(shí)現(xiàn)了內(nèi)核獲得處理器控制權(quán)的隨時(shí)性,并且由于本內(nèi)核策略使得應(yīng)用程序代碼具有一次加載、多次運(yùn)行的特性,一定程度上提高了程序的執(zhí)行速度,在整個(gè)無線傳感網(wǎng)絡(luò)中節(jié)省了能量開銷。
文檔編號(hào)G06F9/38GK102354281SQ20111019285
公開日2012年2月15日 申請日期2011年7月11日 優(yōu)先權(quán)日2011年7月11日
發(fā)明者劉云淮, 張偉, 鐘琳, 陳愛, 顧林, 黃曉霞 申請人:中國科學(xué)院深圳先進(jìn)技術(shù)研究院