自己目前開發(fā)的嵌入式開發(fā)所用的操作系統是VxWorks,以前讀大學的時候用的最多的是linux操作系統,但是,對于這兩種操作系統之間到底有什么區(qū)別,還真沒有真正去細心的總結過,被別人問起時,難免有些尷尬的感覺,畢竟自己是學嵌入式開發(fā)的,竟然對嵌入式開發(fā)系統了解的不深入,今天專門抽時間好好的總結下,二者到底有什么區(qū)別?
微內核、宏內核
內核中提供各種服務的成分與使用這種服務的進程之間形成一種client/server關系,這種服務并不一定非得留在內核中,它本身也可以被設計實現成“服務進程”,其中必須留在內核中的部分只有進程間的通信,如果把這些服務從內核轉移到進程的層次上,那么內核本身的結構就可以大大減小和減化,而各個服務進程也可以單獨設計、實現及調試。
微內核便是將服務轉移到進程上的一種內核模式,主要應用在實時系統和嵌入式系統上,主要是因為通常這些系統都不帶磁盤,整個系統必須都放在EPROM中,常常受到存儲空間的限制,而且所需的服務也比較單一,如PSOS,VxWorks等。
宏內核是一種傳統的內核結構,它將進程管理,內存管理等各項服務功能都放到內核中去,通常用在通用式內核上,如UNIX,linux等.
設備驅動部分的比較和分析
由于linux操作系統和linux引導裝載器在結構上的分離,使得它倆之間的設備驅動程序不能夠通用,當然在芯片的硬件初始化一些硬件相關的代碼上可以互相借鑒。而VxWorks的BOOTROM和運行版本的設備驅動是相同的,因為它的運行版本和BOOTROM的結構是一致的,使用同一操作系統內核。linux操作系統的設備驅動運行在內核空間,用戶進程運行在用戶空間。在linux操作系統中,內核空間和用戶空間的內存管理和映射方式是不同德,應用和設備驅動在數據交換時會涉及到不同的內存空間,會影響到一定效率,但這個問題可以通過修改系統內存空間配置等方法來解決。VxWorks操作系統沒有分開內核空間和用戶空間,設備驅動和應用都運行于同一空間,相互之間的內存都可以訪問,數據交換非常方便,但是這種結構的穩(wěn)定性就不如linux系統好,兩種操作系統都提供了很多設備驅動的資源和模板。但是由于linux的開源特性,它提供的設備驅動的種類和數量遠遠超過了VxWorks.