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