嵌入式工程師心目中的微內核架構~

微內核是提供操作系統內核基本核心功能功能的操作系統版本。簡單的說就是隻提供操作系統的核心部分,比如任務調度,ipc,還有一些基本的內存管理。而其他的功能都是作爲服務運行在操作系統之上,比如網絡協議棧lwip,或者文件系統等等。這些服務是在操作系統之上的服務,所以只用和系統進行交互就可以了。

當應用了微內核開發之後,可以爲嵌入式開發帶來那些好處呢?一般做嵌入式開發都是在自己造輪子,這個輪子是圓的,還是方的,取決於具體的業務邏輯,但是微內核開發就是將這個輪子規範化,必須按照一定的模式去設計輪子,雖然做了規則限制,但是好處就是避免了很多人爲的不合理的設計。微內核的特點在於微,所以其小巧的特點很適合在嵌入式上這種資源比較受限的場合下使用,並且由於使用了內存保護,這樣設計出來的嵌入式的程序架構更加的可靠和穩定。

我認爲做好一個微內核,有以下五個方面是不可缺少的。

1.mmu內存管理,內存保護

2.用戶態應用程序的加載與運行

3.內核態與應用態程序的交互

4.進程間數據通信機制

5.系統服務與驅動框架

作爲一個微內核系統,肯定要將程序分爲內核態和應用態,因爲往往對於服務程序來說,他們都是獨佔內存資源的,所以需要由mmu進行管理,而同時,用戶態程序又是和內核態程序需要做到物理隔離的,這樣保證應用程序crash後,內核程序也能夠正常的運行,可以重啓服務。

用戶態程序的加載與運行,又會涉及到交叉編譯工具的問題,因爲要保證系統函數的統一性,所以在處理這些問題的時候,一般是選擇同樣的交叉編譯工具鏈做內核與應用程序的開發。而之間卻可以使用libc庫進行構建。

內核態與用戶態程序交互一般按照linux的方式都是通過系統調用進行,這裏微內核也同樣可以採用這樣的模式。

作爲嵌入式的rtos,ipc通信機制一般常用的是信號,郵箱,事件,消息隊列,互斥量等等,這種就是在只有線程的情況下。如果做進程開發,肯定會少不了管道和共享內存的通信機制。

作爲一個完全意義上的微內核,肯定是少不了系統服務和驅動框架的,這些都是最基本的東西,如何去做好微內核上的系統服務和驅動框架,一直都是在思考和探索的問題。我覺得系統服務本來也就是爲系統服務的,所以只需要調用最基本的內核接口,實現了數據的處理功能,可以用黑盒子的模型來看,就是需要調用服務的應用程序,通過輸入給系統服務一些數據,系統服務通過自己或者內核的基本功能,實現了數據的處理,然後將結果告訴用戶。這種就是基本系統服務的設計思想。

而在微內核上的驅動框架,可以將其進行一定的框架設計。作爲微內核,內存管理是內核部分進行的,而處於對系統的保護,一般應用程序處理驅動都需要向操作系統去申請訪問的權限,在有了這個權限後,可以和寫普通的rtt設備驅動框架一樣,去操作設備,由於有了內存保護功能,所以即使在操作應用程序驅動過程,有了非法訪問,也可以不會對整個系統造成破壞。

在設計驅動程序api接口的時候,也需要將其作爲一個服務進程掛起,然後通過基本的api函數進行數據訪問,按照文件的方式訪問驅動,通過read,write,ioctl等基本操作進行訪問可控制。

其實我覺得,未來嵌入式開發方向一定是屬於不斷完善的過程。如果系統做的很好,可以很大一定程度上降低嵌入式軟件開發的門檻,而且軟件也會更加的智能可控,甚至可以將微內核性能優化到極致,在cortex-m系列的芯片上也能夠合理的進行應用程序的設計與開發。這是一個未來的趨勢,也不可避免。

隨着時代發展,嵌入式開發越來越趨近於智能化,大幅度降低由於人的思維誤區造成的產品事故,而且也會很容易的設計出更加穩定產品,嵌入式的發展也是一個不斷學習的過程,不斷優化的過程。只有不斷的總結和思考,才能跟得上時代的發展趨勢,固步自封,閉關鎖國,逃避學習新的知識終究會被塵封。


1.知情人爆國產天賜操作系統內幕

2.爲什麼Linux系統默認頁大小是4KB?

3.c語言設計模式--狀態模式(狀態機)

4.C語言設計模式--簡單工廠模式

5.駁《我國工業軟件失去的30年》一文:生不出孩子怪天氣

6.面向5G,中國移動重磅發佈物聯網操作系統——OneOS!

免責聲明:本文系網絡轉載,版權歸原作者所有。如涉及作品版權問題,請與我們聯繫,我們將根據您提供的版權證明材料確認版權並支付稿酬或者刪除內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章