国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
嵌入式操作系統(tǒng)選型分析
userphoto

2007.08.07

關注
早期的嵌入式系統(tǒng)很多都不用操作系統(tǒng),它們都是為了實現(xiàn)某些特定功能,使用一個簡單的循環(huán)控制對外界的控制請求進行處理,不具備現(xiàn)代操作系統(tǒng)的基本特征(如進程管理、存儲管理、設備管理、網(wǎng)絡通訊等)。但隨著控制系統(tǒng)越來越復雜,應用范圍越來越廣泛的時候,缺少操作系統(tǒng)就造成了很大的限制。C語言的出現(xiàn)促進了操作系統(tǒng)的發(fā)展。20世紀80年代以來,出現(xiàn)了各種各樣的商業(yè)用嵌入式操作系統(tǒng)。如QNX,VxWorks,RT-Linux以及Windows CE等。使得在嵌入式系統(tǒng)設計時有了很大的選擇余地,但選擇的操作系統(tǒng)是否恰當對整個系統(tǒng)的開發(fā)有著摯為關鍵的影響??偟膩碚f,嵌入式操作系統(tǒng)的選擇可以遵從一下幾條主要原則:
l        實時性。嵌入式操作系統(tǒng)的實時性主要與系統(tǒng)的結構、任務調度策略、中斷處理手段以及內(nèi)存管理方法有關。
l        系統(tǒng)定制能力。工業(yè)控制產(chǎn)品不同于民用PC的WinTel(微軟Windows+Intel處理器)結構,后者比較簡單,前者需求則是千差萬別的,因此硬件系統(tǒng)也都不一樣,所以對系統(tǒng)的定制能力有較高的要求。
l        可移植性。當進行嵌入式軟件開發(fā)時,可移植性是要重點考慮的問題。良好的軟件移植性應該比較好,可以在不同平臺、不同系統(tǒng)上運行,跟操作系統(tǒng)無關。
l        可利用資源。產(chǎn)品開發(fā)不同于學術課題研究,它以快速、低成本、高質量的推出適合用戶需求的產(chǎn)品為目的。集中精力研發(fā)出產(chǎn)品的特色,其他功能盡量由操作系統(tǒng)附加或采用第三方產(chǎn)品,因此操作系統(tǒng)的可利用資源對于選型是一個重要參考條件。如果有大量的資源可以利用,無疑會極大的縮短開發(fā)周期降低成本。
l        網(wǎng)絡能力。現(xiàn)在的工業(yè)控制系統(tǒng)對聯(lián)網(wǎng)的要求越來越多,即使目前的產(chǎn)品不需要具有聯(lián)網(wǎng)的能力,也應該為以后的升級留下余地。
l        圖形界面開發(fā)能力。友好的圖形界面對多數(shù)控制系統(tǒng)來說都是必不可少的,相應的開發(fā)工具是否功能強、使用簡單對開發(fā)的影響很大。
l        中文內(nèi)核支持。畢竟,作為國內(nèi)的工業(yè)控制系統(tǒng),如果不支持中文,怎么能不說是一個缺憾?
l        已有的條件。在滿足可靠應用的條件下,降低開發(fā)成本是每個控制系統(tǒng)開發(fā)考慮最多的因素之一。能根據(jù)自己的實際情況,合理的利用已有的條件,將會對降低成本有很大的作用,也會縮小產(chǎn)品的上市時間。
下面就四種常見的嵌入式操作系統(tǒng)對實時性、網(wǎng)絡能力、圖形界面開發(fā)以及開放性等方面進行分析比較,并結合課題的實際情況,闡述了選擇QNX作為本課題的嵌入式系統(tǒng)設計平臺的理由。
Windows CE可分為四個主要模塊[10,11,12,24],如圖2.1所示,它們分別是內(nèi)核模塊、對象存儲/文件系統(tǒng)模塊、網(wǎng)絡與通訊模塊、GWES模塊(圖形、窗口、事件子系統(tǒng))。此外還有三個重要的組成部分:驅動程序、設備管理器、OAL(OEM適配層,OEM Adaptation Layer)。
圖2.1 Windows CE體系結構圖
Windows CE內(nèi)核模塊是coredll.dll表示,最小為200KB。它是Windows CE操作系統(tǒng)的核心,并為應用程序提供基本服務:進程管理、多任務多線程管理、內(nèi)存和資源管理、中斷處理、異常處理等。Windows CE的RAM存儲內(nèi)存空間又被稱為“對象存儲(Object Store)”。一般包括三種類型的數(shù)據(jù):Windows CE文件系統(tǒng)(包括數(shù)據(jù)文件和程序)、系統(tǒng)注冊表和Windows CE數(shù)據(jù)庫(一種結構化存儲方法,Pocket PC內(nèi)置程序多使用它)。Windows CE提供了比桌面系統(tǒng)更豐富的通訊支持。GWES模塊即圖形、窗口、事件子系統(tǒng),是用戶、應用程序、操作系統(tǒng)之間的圖形用戶界面。而且Windows CE支持在沒有圖形界面的設備上使用諸如窗口、消息機制和電源管理的特性。
Windows CE內(nèi)核支持按優(yōu)先級搶占的方式調度多任務。Windows CE最多支持32個進程,系統(tǒng)啟動時至少創(chuàng)建4個進程:nk.exe(內(nèi)核)、filesys.exe(文件系統(tǒng))、gwes.exe(GUI支持)、device.exe(加載維護系統(tǒng)設備驅動程序)。大多數(shù)平臺還有exeplorer.exe(外殼)等服務進程,用戶實際可以使用的進程也只有20多個。進程有自己受保護的32MB虛擬地址空間,但沒有優(yōu)先級。Windows CE支持的優(yōu)先級是線程的優(yōu)先級。線程是操作系統(tǒng)調度和運行的基本單位。線程由進程創(chuàng)建,是進程的一個實體,總是隸屬于進程,并共享進程的地址空間。線程總數(shù)只受物理內(nèi)存的限制。Windows CE實現(xiàn)搶占式、基于優(yōu)先級的線程調度,線程之間由8個優(yōu)先級來競爭CPU時間片。線程間的“同步”由“等待函數(shù)”和“等待對象”實現(xiàn):將等待對象作為參數(shù)傳遞給等待函數(shù),等待函數(shù)直到滿足條件才返回;如果不滿足條件,那么調用線程一直處于等待狀態(tài)。Windows CE支持的“等待對象”包括:臨界區(qū)域對象、事件對象和互斥體對象。
四種操作系統(tǒng)都采用同樣的傳統(tǒng)中斷模式。用戶往某一中斷源掛接特定中斷后,實時操作系統(tǒng)創(chuàng)建一條ISR(中斷服務例程)。所有的ISR地址保存在中斷向量表中,并被硬件直接調用。ISR先執(zhí)行一些保護現(xiàn)場的操作,然后調用用戶定義的中斷響應函數(shù)。
Windows CE采用的是基于優(yōu)先級的可嵌套中斷機制。Windows CE的中斷處理分為兩部分:ISR和IST(中斷服務線程)。ISR是核心代碼部分,IST是用戶代碼部分。Windows CE可以將中斷請求(ISR)映射為硬件中斷,并且實現(xiàn)相應的ISR和IST。Windows CE的中斷機制是:當ISR被觸發(fā)時,ISR只負責啟動IST,一旦IST啟動后,ISR立即就返回,以便響應新的中斷。IST負責處理實際的中斷處理。ISR運行在特殊的上下文中。IST是一個普通的應用程序線程,具有它自己的上下文和堆棧。
Windows CE實現(xiàn)了“分頁虛擬內(nèi)存管理系統(tǒng)”。實現(xiàn)虛擬內(nèi)存機制需要設備中的CPU具有MMU(Memory Manager Unit)。Windows CE使用CPU的MMU來實時地將虛擬地址轉換為物理地址。Windows CE為全部應用程序實現(xiàn)的虛擬地址空間為2GB,為每個應用程序實現(xiàn)的虛擬地址空間為32MB。虛擬頁面可以處于三種狀態(tài):空閑、保留、提交(占用)??臻e頁(free)是可以被保留或提交的可用頁。保留頁(reserved)是邏輯頁已分配但沒有分配物理存儲的頁。提交/占用頁(committed)是物理存儲已分配的頁。
Windows CE提供了豐富的通訊支持,主要有:串行通訊(支持PPP/SLIP協(xié)議實現(xiàn)的串行直接連接和撥號連接),TCP/IP、FTP、HTTP協(xié)議和Winsock1.1的一個子集合,紅外通訊協(xié)議IrDA、IrSock和IrComm,通過網(wǎng)絡驅動程序接口規(guī)范(NDIS)支持局域網(wǎng),支持遠程訪問RAS、USB連接、藍牙連接和無線局域網(wǎng)連接等,支持SSPI(“安全支持提供者接口”)、CAPI(密碼API)、TAPI(電話API)等。
Windows CE程序開發(fā)語言主要是eVB和eVC。程序開發(fā)工具重要由微軟提供,主要產(chǎn)品有eMbedded Visual Tools和Windows CE Platform Builder。此外,也可使用Java語言開發(fā)Windows CE程序,相關工具由SUN公司提供,包括PC端的Java運行環(huán)境J2SDK for windows和Personal Java的仿真器PJEE(Personal Java Emulation Environment)。
這里所謂的開放性主要指的是與POSIX標準的符合程度。POSIX表示可移植操作系統(tǒng)接口(Portable Operating System Interface)。IEEE最初開發(fā)POSIX標準,是為了提高UNIX環(huán)境下應用程序的可移植性。然而,POSIX并不局限于UNIX。許多其它的操作系統(tǒng),例如Microsoft Windows NT,都支持POSIX標準,尤其是 IEEE Std. 1003.1-1990(1995 年修訂)或 POSIX.1,POSIX.1 提供了源代碼級別的C語言應用編程接口(API)給操作系統(tǒng)的服務程序,例如讀寫文件。POSIX.1已經(jīng)被國際標準化組織(International Standards Organization,ISO)所接受,被命名為ISO/IEC 9945-1:1990 標準。
Windows CE是直接從NT發(fā)展過來的,繼承了1000多個Win32 API 函數(shù)。Win32是Widows NT和Windows 95的編程接口。Win32對于Windows就像POSIX對于Unix一樣。
RT-Linux從本質上講是對通用操作系統(tǒng)的Linux的實時改造的變種[1,6,13,14,28,57]。
Linux作為一種通用操作系統(tǒng),雖然由于其開放性近來在嵌入式設計中有了較廣的應用,但由于其注重的是系統(tǒng)的平均性能,在很多方面使得Linux不適合實時應用。主要的幾點包括:分時調度策略,較低的時鐘分辨率,內(nèi)核的非搶占式機制,過多的禁止中斷操作,以及虛擬內(nèi)存機制。這些對于通用操作系統(tǒng)來說非常出色的設計在實時系統(tǒng)中都變得不合時宜。
然而,RT-Linux把Linux作為新的實時內(nèi)核調度下的最低優(yōu)先級任務執(zhí)行。其本身的實現(xiàn)只需要一個實時內(nèi)核。設計中的巧妙之處是通過截獲底層中斷改造了Linux,取得CPU控制權執(zhí)行實時任務。這樣,只需對Linux進行較小的改動就可以實現(xiàn)實時功能,且能夠使用Linux下提供的豐富開發(fā)工具和己有功能,如網(wǎng)絡功能,圖形接口等。更重要的是,RT-Linux還繼承了Linux具備的開放性、標準化、技術支持豐富、便宜等特性。并且,Linux內(nèi)核升級與RT-Linux升級保持了彼此獨立,使得整個系統(tǒng)更容易維護。
RT-Linux實現(xiàn)了一個小的實時核心,僅支持底層任務創(chuàng)建、中斷服務例程的裝入、底層任務通信隊列、中斷服務例程(ISR)和Linux進程。原來的非實時Linux內(nèi)核作為一個可搶占的任務運行于這個小內(nèi)核之上,所有的任務都在內(nèi)核地址空間運行。它不同于微內(nèi)核和大型內(nèi)核,是雙內(nèi)核體系結構。
與其他RTOS相比,RT-Linux進程間通信不夠靈活。其實時任務之間,及實時任務與其他Linux任務之間的通信方式只有一種:RT-FIFO。RT-FIFO緩沖區(qū)分配在內(nèi)核地址空間。對RT-FIFO的讀寫操作均為原子操作,不能夠阻塞。
圖2.2和圖2.3分別示出了純Linux體系結構和RT-Linux體系結構。
圖2.2  純Linux體系結構圖
圖2.3 RT-Linux體系結構圖
RT-Linux在操作系統(tǒng)之下實現(xiàn)了一個簡單的實時內(nèi)核,Linux本身作為一個可搶占的任務在核內(nèi)運行,其優(yōu)先級最低,隨時會被高優(yōu)先級的實時任務搶占。
RT-Linux是開放源碼的操作系統(tǒng)。其開放性給用戶帶來了很大便利。在任務調度方面,用戶可以自行編寫調度程序,可實現(xiàn)為可加載的核心模塊。目前在實時Linux上實現(xiàn)的調度算法有:搶占式優(yōu)先級調度,最早期限優(yōu)先調度(EDF)。RT-Linux允許的實時任務優(yōu)先級范圍從1(最高)到RT_LOWEST_PRIORITY。同樣由于源碼開放性,優(yōu)先級數(shù)目也可以由用戶在編譯核心時,指定相應的RT_LOWEST_PRIORITY值確定,這有給了用戶很多自由。
對于RT-Linux,中斷處理方式有著更重要的意義。那就是同時要保證作為實時系統(tǒng)一個任務的原有Linux內(nèi)核仍正常運行。為此,RT-Linux在Linux內(nèi)核與中斷控制器硬件之間,加入了一層仿真軟件。所有的硬件中斷都被送往這層仿真軟件先做處理。在Linux源碼中,所有出現(xiàn)的cli,sti,iret指令,都被相應的仿真宏定義取代,這些宏是S_CLI,S_STI,S_IRET。
當Linux執(zhí)行禁止中斷指令時,仿真軟件中的一個變量被重置。無論何時,當中斷發(fā)生時,仿真軟件都會檢查此變量。如果變量被置位(Linux允許中斷),則Linux中斷處理函數(shù)被立即調用。如果變量沒有被置位(Linux禁止中斷),則中斷處理函數(shù)不被調用。但是,此變量中相應的某個比特會被置位,以記錄下有中斷等待處理。當Linux重新使能中斷后,所有等待處理中斷的處理函數(shù)會依次執(zhí)行。這種仿真中斷的技術稱為軟中斷。這樣的結構下,Linux失去了對中斷的直接控制,因此它不會影響那些不通過仿真軟件的實時中斷,保證了RT-Linux的實時性。
Linux使用由Intel 80x86系列處理器提供的頁面機制,為每一任務提供互相獨立的內(nèi)存空間,并有內(nèi)存保護。在實時系統(tǒng)中,這樣做帶來的直接問題是任務切換時間過長。因此,后來的RT-Linux設計采用的方法是在同一個地址空間運行所有的實時任務。并且,使用的是內(nèi)核地址空間。之所以使用內(nèi)核地址空間,是為了把由內(nèi)存保護級別變化所引起的額外開銷消除。并且,Linux提供動態(tài)裝載內(nèi)核模塊(ladable kernel modules)功能也可以用在實時系統(tǒng)中。方法是把實時任務作為可裝載內(nèi)核模塊創(chuàng)建,運行,及刪除。
RT-Linux使用內(nèi)核地址空間運行的方案,與不使用內(nèi)存保護的VxWorks一樣,同樣存在地址越界引起的危險。任何錯誤的實時任務都可能破壞整個系統(tǒng)。
Linux系統(tǒng)的一個主要特點是他的網(wǎng)絡功能非常強大。RT-Linux由于具有雙內(nèi)核,可以很好的利用linux的網(wǎng)絡功能。
嵌入式Linux的圖形用戶界面有很多選擇,比如MicroWidows、緊縮的X Widow、tinyX等,國內(nèi)做的比較出色的是miniGUI。miniGUI最初是為了滿足一個工業(yè)控制系統(tǒng)(計算機數(shù)控系統(tǒng))而設計和開發(fā)的,該系統(tǒng)就是采用RT-Linux作為實時操作系統(tǒng)。由于可以利用Linux自由開放的豐富資源,相應的開發(fā)工具也很豐富。
RTLinux是一個嚴格遵守POSIX 1003.13技術規(guī)范的硬實時操作系統(tǒng),運行在Linux或者BSD Unix之上。RTLinux堅持分離實時和非實時代碼,操作系統(tǒng)和應用軟件中的關鍵實時組件將給予絕對的優(yōu)先權,以避免非實時組件影響實時組件的響應時間。實時內(nèi)核為需要微秒級中斷延遲的軟件提供了一個熟悉的POSIX線程和精確調度。
VxWorks在體系結構上屬子“客戶機/服務器”結構。也有另一種觀點認為它是統(tǒng)一模型結構[15,16,17,24,28,57]。與QNX相比,VxWorks的“客戶機/服務器”概念要模糊一些。
VxWorks運行系統(tǒng)的核心是“wind”微內(nèi)核。wind微內(nèi)核支持全部的實時功能,包括多任務,任務調度,任務間同步/通信和內(nèi)存管理四項主要功能。核心以外的其它功能都作為任務運行。比如文件系統(tǒng),調試任務,TCP/IP協(xié)議模塊等。
VxWorks缺少必要的存儲保護機制。最高優(yōu)先級的任務和用戶定義的任務在同一個地址空間運行。這樣做的好處是VxWorks任務切換時的時間非常短。缺點也是明顯的,增加了系統(tǒng)的不穩(wěn)定性。不過,VxWorks也提供了替代方案,另一個可選模塊(VxVMI)為系統(tǒng)任務提供了保護。
VxWorks另一缺點是多CPU協(xié)同工作能力差。不同CPU上運行的任務間通信只能通過消息隊列(message queue),并且這類消息隊列必須在CPU之間有共享內(nèi)存時才可用。支持共享內(nèi)存的模塊(VxMP)還必須另外購買。
當然,Socket機制可用于類似的應用中(VxWorks的網(wǎng)絡功能很強)。但是,在可靠的連路上使用TCP/IP協(xié)議給系統(tǒng)增加了許多延時和額外處理開銷。
圖2.4  VxWorks系統(tǒng)結構圖
VxWorks中,所有的任務運行在同一內(nèi)存空間,彼此間缺少保護。為用戶提供的優(yōu)先級數(shù)目256,能夠滿足較為復雜的實時應用需求。系統(tǒng)所能夠創(chuàng)建的任務數(shù)目與VxWorks無關,只受制于內(nèi)存大小。在任務調度方面,支持搶占式優(yōu)先級調度策略。并且,可以選擇使用Round-Robin調度。
VxWorks提供了完善的機制解決搶占式調度帶來的優(yōu)先級逆轉(Priority Invert)問題。
可嵌套、分優(yōu)先級的中斷方式。所有中斷響應在特殊的中斷上下文中執(zhí)行,與任務上下文無關。所有中斷使用同一中斷棧。中斷棧的大小必須考慮到所有的中斷嵌套情況。
中斷與任務間的通信有多種方式:共享內(nèi)存,環(huán)形緩沖區(qū),信號量,消息隊列,管道。
VxWorks缺少內(nèi)存保護機制,導致了系統(tǒng)的不穩(wěn)定性。
VxWorks的網(wǎng)絡系統(tǒng)基本上是移植了BSD4.4 Unix的TCP/IP協(xié)議族,僅在實時性上進行了較大的修改,如用Semaphores代替原TCP/IP實現(xiàn)中的Interrupt Lock和修改Socket代碼中無Timeout的部分。這使得網(wǎng)絡應用層的開發(fā)和移植都非常方便。VxWorks支持工業(yè)標準TCP/IP協(xié)議族,具體包括:
l        IP、IGMP、CIDR、TCP、UDP、ARP、RARP、RIPV1/V2
l        Standard Berkeley Sockets
l        Z-bufs、NFS、RPC
l        PPP、BOOTP、DNS、DHCP、TFTP、FTP
l        RLOGIN、TELNET、RSH
VxWorks還支持可選的Windnet產(chǎn)品,包括SNMP、OSPF、STREAMS等。但是VxWorks的網(wǎng)絡功能還有一定的缺陷,比如目前版本的PPP協(xié)議還有一定的局限性,最多只能支持16路鏈路。
VxWorks的優(yōu)勢在于多任務和實時性,做圖形界面不是很出色。目前VxWorks上的GUI主要有三種選擇:windML、ZINC和Tilcon。
WindML即Wind Media Library(媒體庫),是Wind River的專業(yè)圖形化環(huán)境,它主要是為了滿足較簡單的單功能設備的圖像要求用來提供基本的圖形、視頻和聲頻技術以及提供一個設計標準設備驅動程序框架。WindML API庫提供了一個統(tǒng)一的圖形硬件接口以及處理輸入設備和輸入設備事件的能力。WindML包括兩個組件:軟件開發(fā)包(SDK)和驅動程序開發(fā)包(DDK)。SDK組件用來開發(fā)應用程序,它提供了一個全面的API集,包括圖形、輸入處理、多媒體、字體和內(nèi)存管理。DDK組件是用來實現(xiàn)驅動程序的,它提供了一個完整的驅動程序參考集,包括硬件配置和API集,以使得開發(fā)者能夠迅速的引導和使用自己的驅動程序。
Zinc是一個面向對象和平臺獨立的GUI(圖形化用戶界面)設計框架。Wind River提供兩個不同版本的Zinc,分別是運行于桌面系統(tǒng)(比如windows和UNIX系統(tǒng))的版本和運行于嵌入式系統(tǒng)(比如Vxworks和pSOS)的版本。
Tilcon是一個實時操作系統(tǒng)圖形開發(fā)工具。同步支持最新版本的Tornado/VxWorks以及WindML多媒體庫。適用與VxWorks實時環(huán)境下構建虛擬儀表,實時控制,分布式控制等高級圖形應用。Tilcon本身已經(jīng)集成大量成熟控件,用戶再無需調用低級的圖形函數(shù)去畫線填充,可以象Windows下VB可視化編程一樣用拖動控件的方式構造自己的圖形應用。Tilcon開發(fā)的圖形界面同時支持本地和分布式顯示。圖形界面開發(fā)完成后就可以自動的顯示在本地或通過TCP/IP網(wǎng)絡顯示到其他網(wǎng)絡平臺上。支持OPC,XML,SOAP等標準工業(yè)協(xié)議。
VxWorks支持POSIX 1003.1b的規(guī)定和1003.1中有關基本系統(tǒng)調用的規(guī)定,其中包括進程初始化、文件和目錄、I/O初始化、語言服務、目錄管理。而且VxWorks還支持POSIX1003.1b的實時擴展,包括異步I/O、計數(shù)型信號量、消息隊列、信號、內(nèi)存管理和調度控制等。
ONX在體系結構上非常先進高效,采用的是“客戶機/服務器”結構,具備微內(nèi)核和許多可選服務器進程。微內(nèi)核只實現(xiàn)實時操作系統(tǒng)應該具備的基本功能即:任務調度,進程間通信,中斷處理,網(wǎng)絡接口[18,19,20,21,22,24,25,26,27,28]。
其它的功能都以協(xié)作進程(Cooperative Processes)的方式實現(xiàn),這些協(xié)作進程就是服務器進程,它們向客戶進程(如用戶應用進程)提供服務。在QNX中,服務器進程的例子很多,象文件管理器,進程管理器,網(wǎng)絡管理器,圖形界面管理器等等。微內(nèi)核運行在優(yōu)先級0,服務器進程和設備驅動程序運行在優(yōu)先級1或2。應用進程運行在優(yōu)先級3。QNX的優(yōu)先級保護機制使得整個系統(tǒng)的穩(wěn)定性比VxWorks有提高。
QNX是基于消息傳遞(Message Passing)的操作系統(tǒng)。消息傳遞是QNX的基本進程間通信機制(IPC)。其消息傳遞服務基于客戶機/服務器模型:客戶進程向服務進程發(fā)送消息,服務進程也用消息響應。許多QNX系統(tǒng)調用都是基于這樣的機制。比如,如果用戶進程想打開某個文件,這個系統(tǒng)調用就被轉換為一條消息,發(fā)送給文件管理器。文件管理器收到消息,打開文件后,將文件句柄通過消息返回給調用者。
由于QNX的微內(nèi)核結構中集成了消息機制和網(wǎng)絡功能,因此,QNX的分布計算能力很強,適合于分布式應用。QNX的網(wǎng)絡管理器對用戶進程屏蔽了網(wǎng)絡的存在,使得不同CPU上的用戶進程間通信時仍能采用消息機制,消息使用方式與本地用戶進程間通信完全一致。
圖2.5  QNX微內(nèi)核結構
圖2.6  QNX系統(tǒng)結溝
QNX使用進程/線程模型。QNX脫胎于UNIX操作系統(tǒng),所以它具備進程(Process)的概念。在QNX中,每個進程都享有獨立的虛擬存儲空間,使系統(tǒng)更加穩(wěn)定。而在VxWorks中,需要另外的模塊才能提供類似的功能。
QNX是多進程系統(tǒng)。其進程可以創(chuàng)建線程(Thread)。QNX的線程與POSIX定義的線程概念還是有所區(qū)別的。在QNX中,線程與父進程享受同樣的數(shù)據(jù)段和代碼段,但是,有些操作系統(tǒng)對象,如時鐘,文件句柄等,卻不能共享。并且,在父進程被殺死后,派生的線程仍可以繼續(xù)運行。
QNX提供的優(yōu)先級數(shù)目64個,系統(tǒng)能夠創(chuàng)建的進程數(shù)為4095個,每個進程能夠創(chuàng)建32767個線程。任務調度方面,提供四種調度策略:基于優(yōu)先級的FIFO調度(SCHED_FIFO),基于優(yōu)先級的Round-Robin調度(SCHED_RR),Sporadic調度(SCHED_SPORADIC)以及其他調度策略(SCHED_OTHER)。其中SCHED_OTHER的調度策略和FIFO相同,但將來會改變,所以不推薦使用。
QNX采用的也是嵌套,分優(yōu)先級的中斷方式。中斷ISR在掛接它們的進程的上下文中執(zhí)行。每個ISR具有它自己的堆棧。
QNX中斷與進程通信的方式有信號(Signals)和脈沖(Pulses)。
QNX的內(nèi)存保護機制相當完善。每一個進程都在獨立的虛擬空間運行,具有獨立的數(shù)據(jù)段和代碼段。虛擬內(nèi)存由Intel處理器的分頁功能提供。為了避兔內(nèi)存碎片問題,QNX使用固定大小內(nèi)存分段。
QNX提供的內(nèi)存保護提高了系統(tǒng)穩(wěn)定性,對于系統(tǒng)調試階段也很有幫助。
QNX有QNX機器之間專用網(wǎng)絡,QNX機器自身之間通信使用的協(xié)議,將多臺QNX物理機聯(lián)成一體,在各物理機之間共享各種資源,使各物理機聯(lián)結成為一臺邏輯機。對于需要分布式并行計算的應用系統(tǒng)而言,QNX系統(tǒng)的這種特點無疑提供了極大的方便。對于處理量而分布式系統(tǒng)不能滿足需求的應用系統(tǒng)而言,QNX更提供對稱多處理器的方式的系統(tǒng)供用戶選擇。由于QNX微核及消息傳遞結構,通過QNX處理由許多具體計算機(節(jié)點)組成的網(wǎng)絡系統(tǒng)就像一臺單一的計算機。節(jié)點之間是平等的,每個節(jié)點都是網(wǎng)絡根目錄下的一個子目錄,每個節(jié)點都可以把其它節(jié)點當作一個圖表來操作,不需要專門的遠程操作命令。網(wǎng)絡允許任何進程使用網(wǎng)絡中任何計算機的任何資源。無盤節(jié)點能由網(wǎng)絡自舉,使用網(wǎng)絡中處于任何地方的任何資源。對于一些關鍵性的應用,QNX可以通過利用分布式網(wǎng)絡信息實現(xiàn)熱備份。QNX網(wǎng)絡具有透明的分布處理能力,容錯網(wǎng)絡功能,均衡負荷功能,可擴充的結構。網(wǎng)絡節(jié)點之間多重冗余連結保證了某一局部網(wǎng)絡發(fā)生故障時系統(tǒng)能正常工作。
QNX節(jié)點也能通過約定的網(wǎng)絡協(xié)議(TCP/IP,SL/IP,RPC,NFS,F(xiàn)TP,Telnet,DOSLAN協(xié)議等)與非QNX系統(tǒng)通訊。
QNX是少數(shù)支持圖形用戶界面的實時操作系統(tǒng)之一。不同于一些實時操作系統(tǒng),QNX對圖形用戶界面的支持不是通過用戶可以使用的C/C++圖形函數(shù)庫的方式提供給用戶自己編寫圖形界面,而是“立即”提供的。圖形用戶界面以一組運行模塊的方式,用戶只要運行這些模塊,就“立即”獲得了圖形用戶界面,本身不需編寫一條程序。具體優(yōu)勢將會在下文討論。
QNX的Photon microGUI窗口系統(tǒng),參照在QNX微內(nèi)核體系中為實現(xiàn)嵌入式系統(tǒng)的POSIX OS環(huán)境所成功采用的方法,遵循類似的原則建立起了具有自己獨特風格的窗口體系,即Photon微內(nèi)核機制。Photon微內(nèi)核本身是一個小進程(有45KB代碼)。概括說來,Photon為建立GUI提供了一種新方法――使用微內(nèi)核和一組共同操作的進程來實現(xiàn)圖形用戶界面。其特有的能力有:
l        支持低內(nèi)存要求,允許Photon為那些因內(nèi)存容量的限制只能支持一個圖形庫的環(huán)境提供高級的窗口功能。
l        提供了非常靈活的、用戶可以擴展的體系結構,這種體系結構允許開發(fā)者按照自己的需要擴充GUI。
l        由于能夠實現(xiàn)跨平臺的靈活連接,事實上人們可以從任何被連接的桌面環(huán)境中調用任何平臺中的Photon窗口應用。
PhAB(Photon Application Builder)是QNX下的一個可視化圖形界面程序開發(fā)工具,包括豐富的易于定制的用戶控件和語言編輯器。利用PhAB開發(fā)應用程序的一般過程如圖2.7:
圖2.7  PhAB應用程序開發(fā)過程圖
QNX也是一個遵循POSIX 1003.1標準及POSIX實時標準的實時操作系統(tǒng)。但在系統(tǒng)實現(xiàn)上與UNIX不同,因此,QNX雖然在外觀上很像UNIX,但并不屬于類UNIX操作系統(tǒng)。
VxWorks程序可以移植到QNX,為QNX的開發(fā)帶來了很大的方便。
作為對上面的詳細分析的一個總結,做了一個簡單的比較表格,見表2.1:
表2.1  四種實時操作系統(tǒng)比較表
Windows CE
RT-Linux
VxWorks
QNX
體系結構
coredll.dll內(nèi)核
雙內(nèi)核
不嚴格的客戶機/服務器
微內(nèi)核,客戶機/服務器
可定制性
調度算法
搶占式、基于優(yōu)先級的線程調度
搶占式優(yōu)先級調度,最早期限優(yōu)先調度(EDF)
搶占式優(yōu)先級調度,Round-Robin
FIFO,Roud-robin,Adaptive,Sporadic
最大任務數(shù)
32個進程每個進程的線程數(shù)受內(nèi)存的限制
――
受內(nèi)存大小的限制
4095個進程,每個進程可以有32767個線程
優(yōu)先級數(shù)
64
1~RT_LOWEST_PRIORITY,可編程控制
256
64
中斷處理
基于優(yōu)先級的可嵌套中斷機制
軟中斷
可嵌套、分優(yōu)先級的中斷方式
可嵌套、分優(yōu)先級的中斷方式
內(nèi)存管理
分頁虛擬內(nèi)存管理
在同一個地址空間運行所有的實時任務,使用的是內(nèi)核地址空間。存在地址越界危險。
缺少內(nèi)存保護機制
具有獨立的虛擬空間
網(wǎng)絡能力
有,且有自己特有的網(wǎng)絡文件系統(tǒng)
GUI開發(fā)
eVB、eVC和J2SDK、PJEE
有很多選擇,比如國內(nèi)的miniGUI
windML、ZINC和Tilcon
Photon微內(nèi)核機制,PhAB
開放性
Win32
POSIX
POSIX
POSIX
選擇QNX作為項目的嵌入式開發(fā)平臺主要基于以下幾條理由:
1)實時性。QNX提供用戶可控制的、優(yōu)先級驅動、搶占式的調度方式,特殊的內(nèi)核機制保證了其實時性非常強。上下文切換和中斷延時是操作系統(tǒng)實時性的兩個主要指標,QNX的時間指標都在微秒一級,如表2-1和表2-2所示[29]:
表2.2  典型中斷延遲時間
表2.3  典型上下文切換時間
處  理  器
中斷延時
處   理   器
上下文切換
166MHz Pentium
3.3 us
7400G4 PowerPC 460MHz
0.6 us
100MHz Pentium
4.4 us
R527X MIPS 166MHz
2.3 us
100MHz 486DX4
5.6 us
SH-4 200MHz
1.9 us
33MHz  386EX
22.5 us
SA-1110 StrongARM 207MHz
1.8 us
2)模塊化。QNX是一個模塊化、可裁剪的實時操作系統(tǒng)。它由微內(nèi)核和一組協(xié)同工作的進程構成,具有高度的可伸縮性。這個靈活的結構可以使用戶根據(jù)實際的需求,將系統(tǒng)配置成微小的(小至32K存儲空間)嵌入式操作系統(tǒng)或是包括幾百個處理器的超級(大至4G存儲空間)虛擬機操作系統(tǒng)。
3)穩(wěn)定性。QNX建立在完全地址空間保護基礎之上的實時操作系統(tǒng),具有很強的穩(wěn)定性。
4)網(wǎng)絡能力。QNX是一個分布式操作系統(tǒng)。從用戶角度來看,運行QNX的局域網(wǎng)就像一臺集中式的多用戶計算機。除了其自身的網(wǎng)絡外,還支持與異型機器之間網(wǎng)絡通信的協(xié)議,如TCP/IP族的各種協(xié)議。
5)開放性。QNX實時操作系統(tǒng)還是一個開放的系統(tǒng),其應用程序接口符合POSIX標準。使Linux/UNIX程序能夠方便地移植到QNX系統(tǒng)上來,極大地擴展了QNX系統(tǒng)的可用資源。而且VxWorks上的程序也可以移植到QNX。因此,對于熟悉UNIX/LINUX或者VxWorks程序設計的人,更為方便從事QNX開發(fā)。
6)功能強大的IDE。QNX Memontics新動力開發(fā)系統(tǒng)集成環(huán)境提供了各種方便的工具鏈、各種板級支持包、庫函數(shù)、源代碼開發(fā)工具等。QNX還提供了多種宿主操作系統(tǒng)上Memontics集成開發(fā)環(huán)境,如MS Windows,Linux,Solaris,QNX NEUTRINO等。
7)方便的GUI開發(fā)。QNX提供了非常強大易用的Photon圖形用戶程序開發(fā)工PhAB,采用所見即所得的方式,非常容易就可以開發(fā)出靈活復雜優(yōu)美的用戶界面程序。對漢字編碼的支持也很完美。
8)非常廣泛的硬件支持。從PC/104到CompactPCI的最新的PC硬件,實際上QNX比其它操作系統(tǒng)支持更多的PC硬件,包括多達數(shù)百種的外圍器件。與美國AMD公司,英特爾和國家半導體公司的同盟關系確保芯片和參考平臺兼容性。僅CPU就支持x86、PowerPC、MIPS、ARM等。
9)豐富的網(wǎng)絡資源。目前基于QNX的開發(fā)應用很廣泛,國內(nèi)外形成了很多比較好的技術交流網(wǎng)站,QNX公司本身的技術支持網(wǎng)站內(nèi)容也非常豐富。QNX系統(tǒng)的提供的幫助體系也很全面,搜索功能比較強。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
RTX與其他實時操作系統(tǒng)的比較
輕型web server比較
四種實時操作系統(tǒng)的分析比較
RTLinux的介紹—嵌入式學院(華清遠見旗下品牌)
在攻城獅眼里,傳統(tǒng)車企怎樣避免被出局?——車載操作系統(tǒng)篇
嵌入式之硬件系統(tǒng)&操作系統(tǒng)簡介
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服