嵌入式操作系統(tǒng)選型分析_第1頁(yè)
嵌入式操作系統(tǒng)選型分析_第2頁(yè)
嵌入式操作系統(tǒng)選型分析_第3頁(yè)
嵌入式操作系統(tǒng)選型分析_第4頁(yè)
嵌入式操作系統(tǒng)選型分析_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

嵌?式操作系統(tǒng)選型分析早期的嵌?式系統(tǒng)很多都不?操作系統(tǒng),它們都是為了實(shí)現(xiàn)某些特定功能,使??個(gè)簡(jiǎn)單的循環(huán)控制對(duì)外界的控制請(qǐng)求進(jìn)?處理,不具備現(xiàn)代操作系統(tǒng)的基本特征(如進(jìn)程管理、存儲(chǔ)管理、設(shè)備管理、?絡(luò)通訊等)。但隨著控制系統(tǒng)越來(lái)越復(fù)雜,應(yīng)?范圍越來(lái)越?泛的時(shí)候,缺少操作系統(tǒng)就造成了很?的限制。C語(yǔ)?的出現(xiàn)促進(jìn)了操作系統(tǒng)的發(fā)展。20世紀(jì)80年代以來(lái),出現(xiàn)了各種各樣的商業(yè)?嵌?式操作系統(tǒng)。如QNX,VxWorks,RT-Linux以及WindowsCE等。使得在嵌?式系統(tǒng)設(shè)計(jì)時(shí)有了很?的選擇余地,但選擇的操作系統(tǒng)是否恰當(dāng)對(duì)整個(gè)系統(tǒng)的開(kāi)發(fā)有著摯為關(guān)鍵的影響??偟膩?lái)說(shuō),嵌?式操作系統(tǒng)的選擇可以遵從?下?條主要原則:ll實(shí)時(shí)性。嵌?式操作系統(tǒng)的實(shí)時(shí)性主要與系統(tǒng)的結(jié)構(gòu)、任務(wù)調(diào)度策略、中斷處理?段以及內(nèi)存管理?法有關(guān)。系統(tǒng)定制能?。?業(yè)控制產(chǎn)品不同于民?PC的WinTel(微軟Windows+I(xiàn)ntel處理器)結(jié)構(gòu),后者?較簡(jiǎn)單,前者需求則是千差萬(wàn)別的,因此硬件系統(tǒng)也都不?樣,所以對(duì)系統(tǒng)的定制能?有較?的要求。l可移植性。當(dāng)進(jìn)?嵌?式軟件開(kāi)發(fā)時(shí),可移植性是要重點(diǎn)考慮的問(wèn)題。良好的軟件移植性應(yīng)該?較好,可以在不同平臺(tái)、不同系統(tǒng)上運(yùn)?,跟操作系統(tǒng)?關(guān)。l可利?資源。產(chǎn)品開(kāi)發(fā)不同于學(xué)術(shù)課題研究,它以快速、低成本、?質(zhì)量的推出適合?戶(hù)需求的產(chǎn)品為?的。集中精?研發(fā)出產(chǎn)品的特?,其他功能盡量由操作系統(tǒng)附加或采?第三?產(chǎn)品,因此操作系統(tǒng)的可利?資源對(duì)于選型是?個(gè)重要參考條件。如果有?量的資源可以利?,?疑會(huì)極?的縮短開(kāi)發(fā)周期降低成本。l?絡(luò)能?。現(xiàn)在的?業(yè)控制系統(tǒng)對(duì)聯(lián)?的要求越來(lái)越多,即使?前的產(chǎn)品不需要具有聯(lián)?的能?,也應(yīng)該為以后的升級(jí)留下余地。圖形界?開(kāi)發(fā)能?。友好的圖形界?對(duì)多數(shù)控制系統(tǒng)來(lái)說(shuō)都是必不可少的,相應(yīng)的開(kāi)發(fā)?具是否功能強(qiáng)、使?簡(jiǎn)單對(duì)開(kāi)發(fā)的影響很l?。ll中?內(nèi)核?持。畢竟,作為國(guó)內(nèi)的?業(yè)控制系統(tǒng),如果不?持中?,怎么能不說(shuō)是?個(gè)缺憾?已有的條件。在滿(mǎn)?可靠應(yīng)?的條件下,降低開(kāi)發(fā)成本是每個(gè)控制系統(tǒng)開(kāi)發(fā)考慮最多的因素之?。能根據(jù)??的實(shí)際情況,合理的利?已有的條件,將會(huì)對(duì)降低成本有很?的作?,也會(huì)縮?產(chǎn)品的上市時(shí)間。下?就四種常見(jiàn)的嵌?式操作系統(tǒng)對(duì)實(shí)時(shí)性、?絡(luò)能?、圖形界?開(kāi)發(fā)以及開(kāi)放性等??進(jìn)?分析?較,并結(jié)合課題的實(shí)際情況,闡述了選擇QNX作為本課題的嵌?式系統(tǒng)設(shè)計(jì)平臺(tái)的理由。[10,11,12,24],如圖2.1所?,它們分別是內(nèi)核模塊、對(duì)象存儲(chǔ)/?件系統(tǒng)模塊、?絡(luò)與通訊模塊、GWES模WindowsCE可分為四個(gè)主要模塊塊(圖形、窗?、事件?系統(tǒng))。此外還有三個(gè)重要的組成部分:驅(qū)動(dòng)程序、設(shè)備管理器、OAL(OEM適配層,OEMAdaptationLayer)。圖2.1WindowsCE體系結(jié)構(gòu)圖WindowsCE內(nèi)核模塊是coredll.dll表?,最?為200KB。它是WindowsCE操作系統(tǒng)的核?,并為應(yīng)?程序提供基本服務(wù):進(jìn)程管理、多任務(wù)多線(xiàn)程管理、內(nèi)存和資源管理、中斷處理、異常處理等。WindowsCE的RAM存儲(chǔ)內(nèi)存空間?被稱(chēng)為“對(duì)象存儲(chǔ)(ObjectStore)”。?般包括三種類(lèi)型的數(shù)據(jù):WindowsCE?件系統(tǒng)(包括數(shù)據(jù)?件和程序)、系統(tǒng)注冊(cè)表和WindowsCE數(shù)據(jù)庫(kù)(?種結(jié)構(gòu)化存儲(chǔ)?法,PocketPC內(nèi)置程序多使?它)。WindowsCE提供了?桌?系統(tǒng)更豐富的通訊?持。GWES模塊即圖形、窗?、事件?系統(tǒng),是?戶(hù)、應(yīng)?程序、操作系統(tǒng)之間的圖形?戶(hù)界?。?且WindowsCE?持在沒(méi)有圖形界?的設(shè)備上使?諸如窗?、消息機(jī)制和電源管理的特性。WindowsCE內(nèi)核?持按優(yōu)先級(jí)搶占的?式調(diào)度多任務(wù)。WindowsCE最多?持32個(gè)進(jìn)程,系統(tǒng)啟動(dòng)時(shí)?少創(chuàng)建4個(gè)進(jìn)程:nk.exe(內(nèi)核)、filesys.exe(?件系統(tǒng))、gwes.exe(GUI?持)、device.exe(加載維護(hù)系統(tǒng)設(shè)備驅(qū)動(dòng)程序)。?多數(shù)平臺(tái)還有exeplorer.exe(外殼)等服務(wù)進(jìn)程,?戶(hù)實(shí)際可以使?的進(jìn)程也只有20多個(gè)。進(jìn)程有??受保護(hù)的32MB虛擬地址空間,但沒(méi)有優(yōu)先級(jí)。WindowsCE?持的優(yōu)先級(jí)是線(xiàn)程的優(yōu)先級(jí)。線(xiàn)程是操作系統(tǒng)調(diào)度和運(yùn)?的基本單位。線(xiàn)程由進(jìn)程創(chuàng)建,是進(jìn)程的?個(gè)實(shí)體,總是?屬于進(jìn)程,并共享進(jìn)程的地址空間。線(xiàn)程總數(shù)只受物理內(nèi)存的限制。WindowsCE實(shí)現(xiàn)搶占式、基于優(yōu)先級(jí)的線(xiàn)程調(diào)度,線(xiàn)程之間由8個(gè)優(yōu)先級(jí)來(lái)競(jìng)爭(zhēng)CPU時(shí)間?。線(xiàn)程間的“同步”由“等待函數(shù)”和“等待對(duì)象”實(shí)現(xiàn):將等待對(duì)象作為參數(shù)傳遞給等待函數(shù),等待函數(shù)直到滿(mǎn)?條件才返回;如果不滿(mǎn)?條件,那么調(diào)?線(xiàn)程?直處于等待狀態(tài)。WindowsCE?持的“等待對(duì)象”包括:臨界區(qū)域?qū)ο?、事件?duì)象和互斥體對(duì)象。四種操作系統(tǒng)都采?同樣的傳統(tǒng)中斷模式。?戶(hù)往某?中斷源掛接特定中斷后,實(shí)時(shí)操作系統(tǒng)創(chuàng)建?條ISR(中斷服務(wù)例程)。所有的ISR地址保存在中斷向量表中,并被硬件直接調(diào)?。ISR先執(zhí)??些保護(hù)現(xiàn)場(chǎng)的操作,然后調(diào)??戶(hù)定義的中斷響應(yīng)函數(shù)。

WindowsCE采?的是基于優(yōu)先級(jí)的可嵌套中斷機(jī)制。WindowsCE的中斷處理分為兩部分:ISR和IST(中斷服務(wù)線(xiàn)程)。ISR是核?代碼部分,IST是?戶(hù)代碼部分。WindowsCE可以將中斷請(qǐng)求(ISR)映射為硬件中斷,并且實(shí)現(xiàn)相應(yīng)的ISR和IST。WindowsCE的中斷機(jī)制是:當(dāng)ISR被觸發(fā)時(shí),ISR只負(fù)責(zé)啟動(dòng)IST,?旦IST啟動(dòng)后,ISR?即就返回,以便響應(yīng)新的中斷。IST負(fù)責(zé)處理實(shí)際的中斷處理。ISR運(yùn)?在特殊的上下?中。IST是?個(gè)普通的應(yīng)?程序線(xiàn)程,具有它??的上下?和堆棧。WindowsCE實(shí)現(xiàn)了“分頁(yè)虛擬內(nèi)存管理系統(tǒng)”。實(shí)現(xiàn)虛擬內(nèi)存機(jī)制需要設(shè)備中的CPU具有MMU(MemoryManagerUnit)。WindowsCE使?CPU的MMU來(lái)實(shí)時(shí)地將虛擬地址轉(zhuǎn)換為物理地址。WindowsCE為全部應(yīng)?程序?qū)崿F(xiàn)的虛擬地址空間為2GB,為每個(gè)應(yīng)?程序?qū)崿F(xiàn)的虛擬地址空間為32MB。虛擬頁(yè)?可以處于三種狀態(tài):空閑、保留、提交(占?)??臻e頁(yè)(free)是可以被保留或提交的可?頁(yè)。保留頁(yè)(reserved)是邏輯頁(yè)已分配但沒(méi)有分配物理存儲(chǔ)的頁(yè)。提交/占?頁(yè)(committed)是物理存儲(chǔ)已分配的頁(yè)。WindowsCE提供了豐富的通訊?持,主要有:串?通訊(?持PPP/SLIP協(xié)議實(shí)現(xiàn)的串?直接連接和撥號(hào)連接),TCP/IP、FTP、HTTP協(xié)議和Winsock1.1的?個(gè)?集合,紅外通訊協(xié)議IrDA、IrSock和IrComm,通過(guò)?絡(luò)驅(qū)動(dòng)程序接?規(guī)范(NDIS)?持局域?,?持遠(yuǎn)程訪(fǎng)問(wèn)RAS、USB連接、藍(lán)?連接和?線(xiàn)局域?連接等,?持SSPI(“安全?持提供者接?”)、CAPI(密碼API)、TAPI(電話(huà)API)等。WindowsCE程序開(kāi)發(fā)語(yǔ)?主要是eVB和eVC。程序開(kāi)發(fā)?具重要由微軟提供,主要產(chǎn)品有eMbeddedVisualTools和WindowsCEPlatformBuilder。此外,也可使?Java語(yǔ)?開(kāi)發(fā)WindowsCE程序,相關(guān)?具由SUN公司提供,包括PC端的Java運(yùn)?環(huán)境J2SDKforwindows和PersonalJava的仿真器PJEE(PersonalJavaEmulationEnvironment)。這?所謂的開(kāi)放性主要指的是與POSIX標(biāo)準(zhǔn)的符合程度。POSIX表?可移植操作系統(tǒng)接?(PortableOperatingSystemInterface)。IEEE最初開(kāi)發(fā)POSIX標(biāo)準(zhǔn),是為了提?UNIX環(huán)境下應(yīng)?程序的可移植性。然?,POSIX并不局限于UNIX。許多其它的操作系統(tǒng),例如MicrosoftWindowsNT,都?持POSIX標(biāo)準(zhǔn),尤其是IEEEStd.1003.1-1990(1995年修訂)或POSIX.1,POSIX.1提供了源代碼級(jí)別的C語(yǔ)?應(yīng)?編程接?(API)給操作系統(tǒng)的服務(wù)程序,例如讀寫(xiě)?件。POSIX.1已經(jīng)被國(guó)際標(biāo)準(zhǔn)化組織(InternationalStandardsOrganization,ISO)所接受,被命名為ISO/IEC9945-1:1990標(biāo)準(zhǔn)。WindowsCE是直接從NT發(fā)展過(guò)來(lái)的,繼承了1000多個(gè)Win32API函數(shù)。Win32是WidowsNT和Windows95的編程接?。Win32對(duì)于Windows就像POSIX對(duì)于Unix?樣。RT-Linux從本質(zhì)上講是對(duì)通?操作系統(tǒng)的Linux的實(shí)時(shí)改造的變種[1,6,13,14,28,57]。Linux作為?種通?操作系統(tǒng),雖然由于其開(kāi)放性近來(lái)在嵌?式設(shè)計(jì)中有了較?的應(yīng)?,但由于其注重的是系統(tǒng)的平均性能,在很多??使得Linux不適合實(shí)時(shí)應(yīng)?。主要的?點(diǎn)包括:分時(shí)調(diào)度策略,較低的時(shí)鐘分辨率,內(nèi)核的?搶占式機(jī)制,過(guò)多的禁?中斷操作,以及虛擬內(nèi)存機(jī)制。這些對(duì)于通?操作系統(tǒng)來(lái)說(shuō)?常出?的設(shè)計(jì)在實(shí)時(shí)系統(tǒng)中都變得不合時(shí)宜。然?,RT-Linux把Linux作為新的實(shí)時(shí)內(nèi)核調(diào)度下的最低優(yōu)先級(jí)任務(wù)執(zhí)?。其本?的實(shí)現(xiàn)只需要?個(gè)實(shí)時(shí)內(nèi)核。設(shè)計(jì)中的巧妙之處是通過(guò)截獲底層中斷改造了Linux,取得CPU控制權(quán)執(zhí)?實(shí)時(shí)任務(wù)。這樣,只需對(duì)Linux進(jìn)?較?的改動(dòng)就可以實(shí)現(xiàn)實(shí)時(shí)功能,且能夠使?Linux下提供的豐富開(kāi)發(fā)?具和?有功能,如?絡(luò)功能,圖形接?等。更重要的是,RT-Linux還繼承了Linux具備的開(kāi)放性、標(biāo)準(zhǔn)化、技術(shù)?持豐富、便宜等特性。并且,Linux內(nèi)核升級(jí)與RT-Linux升級(jí)保持了彼此獨(dú)?,使得整個(gè)系統(tǒng)更容易維護(hù)。RT-Linux實(shí)現(xiàn)了?個(gè)?的實(shí)時(shí)核?,僅?持底層任務(wù)創(chuàng)建、中斷服務(wù)例程的裝?、底層任務(wù)通信隊(duì)列、中斷服務(wù)例程(ISR)和Linux進(jìn)程。原來(lái)的?實(shí)時(shí)Linux內(nèi)核作為?個(gè)可搶占的任務(wù)運(yùn)?于這個(gè)?內(nèi)核之上,所有的任務(wù)都在內(nèi)核地址空間運(yùn)?。它不同于微內(nèi)核和?型內(nèi)核,是雙內(nèi)核體系結(jié)構(gòu)。與其他RTOS相?,RT-Linux進(jìn)程間通信不夠靈活。其實(shí)時(shí)任務(wù)之間,及實(shí)時(shí)任務(wù)與其他Linux任務(wù)之間的通信?式只有?種:RT-FIFO。RT-FIFO緩沖區(qū)分配在內(nèi)核地址空間。對(duì)RT-FIFO的讀寫(xiě)操作均為原?操作,不能夠阻塞。圖2.2和圖2.3分別?出了純Linux體系結(jié)構(gòu)和RT-Linux體系結(jié)構(gòu)。圖2.2純Linux體系結(jié)構(gòu)圖圖2.3RT-Linux體系結(jié)構(gòu)圖RT-Linux在操作系統(tǒng)之下實(shí)現(xiàn)了?個(gè)簡(jiǎn)單的實(shí)時(shí)內(nèi)核,Linux本?作為?個(gè)可搶占的任務(wù)在核內(nèi)運(yùn)?,其優(yōu)先級(jí)最低,隨時(shí)會(huì)被?優(yōu)先級(jí)的實(shí)時(shí)任務(wù)搶占。RT-Linux是開(kāi)放源碼的操作系統(tǒng)。其開(kāi)放性給?戶(hù)帶來(lái)了很?便利。在任務(wù)調(diào)度??,?戶(hù)可以??編寫(xiě)調(diào)度程序,可實(shí)現(xiàn)為可加載的核?模塊。?前在實(shí)時(shí)Linux上實(shí)現(xiàn)的調(diào)度算法有:搶占式優(yōu)先級(jí)調(diào)度,最早期限優(yōu)先調(diào)度(EDF)。RT-Linux允許的實(shí)時(shí)任務(wù)優(yōu)先級(jí)范圍從1(最?)到RT_LOWEST_PRIORITY。同樣由于源碼開(kāi)放性,優(yōu)先級(jí)數(shù)?也可以由?戶(hù)在編譯核?時(shí),指定相應(yīng)的RT_LOWEST_PRIORITY值確定,這有給了?戶(hù)很多?由。

對(duì)于RT-Linux,中斷處理?式有著更重要的意義。那就是同時(shí)要保證作為實(shí)時(shí)系統(tǒng)?個(gè)任務(wù)的原有Linux內(nèi)核仍正常運(yùn)?。為此,RT-Linux在Linux內(nèi)核與中斷控制器硬件之間,加?了?層仿真軟件。所有的硬件中斷都被送往這層仿真軟件先做處理。在Linux源碼中,所有出現(xiàn)的cli,sti,iret指令,都被相應(yīng)的仿真宏定義取代,這些宏是S_CLI,S_STI,S_IRET。當(dāng)Linux執(zhí)?禁?中斷指令時(shí),仿真軟件中的?個(gè)變量被重置。?論何時(shí),當(dāng)中斷發(fā)?時(shí),仿真軟件都會(huì)檢查此變量。如果變量被置位(Linux允許中斷),則Linux中斷處理函數(shù)被?即調(diào)?。如果變量沒(méi)有被置位(Linux禁?中斷),則中斷處理函數(shù)不被調(diào)?。但是,此變量中相應(yīng)的某個(gè)?特會(huì)被置位,以記錄下有中斷等待處理。當(dāng)Linux重新使能中斷后,所有等待處理中斷的處理函數(shù)會(huì)依次執(zhí)?。這種仿真中斷的技術(shù)稱(chēng)為軟中斷。這樣的結(jié)構(gòu)下,Linux失去了對(duì)中斷的直接控制,因此它不會(huì)影響那些不通過(guò)仿真軟件的實(shí)時(shí)中斷,保證了RT-Linux的實(shí)時(shí)性。Linux使?由Intel80x86系列處理器提供的頁(yè)?機(jī)制,為每?任務(wù)提供互相獨(dú)?的內(nèi)存空間,并有內(nèi)存保護(hù)。在實(shí)時(shí)系統(tǒng)中,這樣做帶來(lái)的直接問(wèn)題是任務(wù)切換時(shí)間過(guò)長(zhǎng)。因此,后來(lái)的RT-Linux設(shè)計(jì)采?的?法是在同?個(gè)地址空間運(yùn)?所有的實(shí)時(shí)任務(wù)。并且,使?的是內(nèi)核地址空間。之所以使?內(nèi)核地址空間,是為了把由內(nèi)存保護(hù)級(jí)別變化所引起的額外開(kāi)銷(xiāo)消除。并且,Linux提供動(dòng)態(tài)裝載內(nèi)核模塊(ladablekernelmodules)功能也可以?在實(shí)時(shí)系統(tǒng)中。?法是把實(shí)時(shí)任務(wù)作為可裝載內(nèi)核模塊創(chuàng)建,運(yùn)?,及刪除。RT-Linux使?內(nèi)核地址空間運(yùn)?的?案,與不使?內(nèi)存保護(hù)的VxWorks?樣,同樣存在地址越界引起的危險(xiǎn)。任何錯(cuò)誤的實(shí)時(shí)任務(wù)都可能破壞整個(gè)系統(tǒng)。Linux系統(tǒng)的?個(gè)主要特點(diǎn)是他的?絡(luò)功能?常強(qiáng)?。RT-Linux由于具有雙內(nèi)核,可以很好的利?linux的?絡(luò)功能。嵌?式Linux的圖形?戶(hù)界?有很多選擇,?如MicroWidows、緊縮的XWidow、tinyX等,國(guó)內(nèi)做的?較出?的是miniGUI。miniGUI最初是為了滿(mǎn)??個(gè)?業(yè)控制系統(tǒng)(計(jì)算機(jī)數(shù)控系統(tǒng))?設(shè)計(jì)和開(kāi)發(fā)的,該系統(tǒng)就是采?RT-Linux作為實(shí)時(shí)操作系統(tǒng)。由于可以利?Linux?由開(kāi)放的豐富資源,相應(yīng)的開(kāi)發(fā)?具也很豐富。RTLinux是?個(gè)嚴(yán)格遵守POSIX1003.13技術(shù)規(guī)范的硬實(shí)時(shí)操作系統(tǒng),運(yùn)?在Linux或者BSDUnix之上。RTLinux堅(jiān)持分離實(shí)時(shí)和?實(shí)時(shí)代碼,操作系統(tǒng)和應(yīng)?軟件中的關(guān)鍵實(shí)時(shí)組件將給予絕對(duì)的優(yōu)先權(quán),以避免?實(shí)時(shí)組件影響實(shí)時(shí)組件的響應(yīng)時(shí)間。實(shí)時(shí)內(nèi)核為需要微秒級(jí)中斷延遲的軟件提供了?個(gè)熟悉的POSIX線(xiàn)程和精確調(diào)度。VxWorks在體系結(jié)構(gòu)上屬?“客戶(hù)機(jī)/服務(wù)器”結(jié)構(gòu)。也有另?種觀(guān)點(diǎn)認(rèn)為它是統(tǒng)?模型結(jié)構(gòu)[15,16,17,24,28,57]。與QNX相?,VxWorks的“客戶(hù)機(jī)/服務(wù)器”概念要模糊?些。VxWorks運(yùn)?系統(tǒng)的核?是“wind”微內(nèi)核。wind微內(nèi)核?持全部的實(shí)時(shí)功能,包括多任務(wù),任務(wù)調(diào)度,任務(wù)間同步/通信和內(nèi)存管理四項(xiàng)主要功能。核?以外的其它功能都作為任務(wù)運(yùn)?。?如?件系統(tǒng),調(diào)試任務(wù),TCP/IP協(xié)議模塊等。VxWorks缺少必要的存儲(chǔ)保護(hù)機(jī)制。最?優(yōu)先級(jí)的任務(wù)和?戶(hù)定義的任務(wù)在同?個(gè)地址空間運(yùn)?。這樣做的好處是VxWorks任務(wù)切換時(shí)的時(shí)間?常短。缺點(diǎn)也是明顯的,增加了系統(tǒng)的不穩(wěn)定性。不過(guò),VxWorks也提供了替代?案,另?個(gè)可選模塊(VxVMI)為系統(tǒng)任務(wù)提供了保護(hù)。VxWorks另?缺點(diǎn)是多CPU協(xié)同?作能?差。不同CPU上運(yùn)?的任務(wù)間通信只能通過(guò)消息隊(duì)列(messagequeue),并且這類(lèi)消息隊(duì)列必須在CPU之間有共享內(nèi)存時(shí)才可?。?持共享內(nèi)存的模塊(VxMP)還必須另外購(gòu)買(mǎi)。當(dāng)然,Socket機(jī)制可?于類(lèi)似的應(yīng)?中(VxWorks的?絡(luò)功能很強(qiáng))。但是,在可靠的連路上使?TCP/IP協(xié)議給系統(tǒng)增加了許多延時(shí)和額外處理開(kāi)銷(xiāo)。圖2.4VxWorks系統(tǒng)結(jié)構(gòu)圖VxWorks中,所有的任務(wù)運(yùn)?在同?內(nèi)存空間,彼此間缺少保護(hù)。為?戶(hù)提供的優(yōu)先級(jí)數(shù)?256,能夠滿(mǎn)?較為復(fù)雜的實(shí)時(shí)應(yīng)?需求。系統(tǒng)所能夠創(chuàng)建的任務(wù)數(shù)?與VxWorks?關(guān),只受制于內(nèi)存??。在任務(wù)調(diào)度??,?持搶占式優(yōu)先級(jí)調(diào)度策略。并且,可以選擇使?Round-Robin調(diào)度。VxWorks提供了完善的機(jī)制解決搶占式調(diào)度帶來(lái)的優(yōu)先級(jí)逆轉(zhuǎn)(PriorityInvert)問(wèn)題??汕短?、分優(yōu)先級(jí)的中斷?式。所有中斷響應(yīng)在特殊的中斷上下?中執(zhí)?,與任務(wù)上下??關(guān)。所有中斷使?同?中斷棧。中斷棧的??必須考慮到所有的中斷嵌套情況。中斷與任務(wù)間的通信有多種?式:共享內(nèi)存,環(huán)形緩沖區(qū),信號(hào)量,消息隊(duì)列,管道。VxWorks缺少內(nèi)存保護(hù)機(jī)制,導(dǎo)致了系統(tǒng)的不穩(wěn)定性。

VxWorks的?絡(luò)系統(tǒng)基本上是移植了BSD4.4Unix的TCP/IP協(xié)議族,僅在實(shí)時(shí)性上進(jìn)?了較?的修改,如?Semaphores代替原TCP/IP實(shí)現(xiàn)中的InterruptLock和修改Socket代碼中?Timeout的部分。這使得?絡(luò)應(yīng)?層的開(kāi)發(fā)和移植都?常?便。VxWorks?持?業(yè)標(biāo)準(zhǔn)TCP/IP協(xié)議族,具體包括:lllllIP、IGMP、CIDR、TCP、UDP、ARP、RARP、RIPV1/V2StandardBerkeleySocketsZ-bufs、NFS、RPCPPP、BOOTP、DNS、DHCP、TFTP、FTPRLOGIN、TELNET、RSHVxWorks還?持可選的Windnet產(chǎn)品,包括SNMP、OSPF、STREAMS等。但是VxWorks的?絡(luò)功能還有?定的缺陷,?如?前版本的PPP協(xié)議還有?定的局限性,最多只能?持16路鏈路。VxWorks的優(yōu)勢(shì)在于多任務(wù)和實(shí)時(shí)性,做圖形界?不是很出?。?前VxWorks上的GUI主要有三種選擇:windML、ZINC和Tilcon。WindML即WindMediaLibrary(媒體庫(kù)),是WindRiver的專(zhuān)業(yè)圖形化環(huán)境,它主要是為了滿(mǎn)?較簡(jiǎn)單的單功能設(shè)備的圖像要求?來(lái)提供基本的圖形、視頻和聲頻技術(shù)以及提供?個(gè)設(shè)計(jì)標(biāo)準(zhǔn)設(shè)備驅(qū)動(dòng)程序框架。WindMLAPI庫(kù)提供了?個(gè)統(tǒng)?的圖形硬件接?以及處理輸?設(shè)備和輸?設(shè)備事件的能?。WindML包括兩個(gè)組件:軟件開(kāi)發(fā)包(SDK)和驅(qū)動(dòng)程序開(kāi)發(fā)包(DDK)。SDK組件?來(lái)開(kāi)發(fā)應(yīng)?程序,它提供了?個(gè)全?的API集,包括圖形、輸?處理、多媒體、字體和內(nèi)存管理。DDK組件是?來(lái)實(shí)現(xiàn)驅(qū)動(dòng)程序的,它提供了?個(gè)完整的驅(qū)動(dòng)程序參考集,包括硬件配置和API集,以使得開(kāi)發(fā)者能夠迅速的引導(dǎo)和使???的驅(qū)動(dòng)程序。Zinc是?個(gè)?向?qū)ο蠛推脚_(tái)獨(dú)?的GUI(圖形化?戶(hù)界?)設(shè)計(jì)框架。WindRiver提供兩個(gè)不同版本的Zinc,分別是運(yùn)?于桌?系統(tǒng)(?如windows和UNIX系統(tǒng))的版本和運(yùn)?于嵌?式系統(tǒng)(?如Vxworks和pSOS)的版本。Tilcon是?個(gè)實(shí)時(shí)操作系統(tǒng)圖形開(kāi)發(fā)?具。同步?持最新版本的Tornado/VxWorks以及WindML多媒體庫(kù)。適?與VxWorks實(shí)時(shí)環(huán)境下構(gòu)建虛擬儀表,實(shí)時(shí)控制,分布式控制等?級(jí)圖形應(yīng)?。Tilcon本?已經(jīng)集成?量成熟控件,?戶(hù)再?需調(diào)?低級(jí)的圖形函數(shù)去畫(huà)線(xiàn)填充,可以象Windows下VB可視化編程?樣?拖動(dòng)控件的?式構(gòu)造??的圖形應(yīng)?。Tilcon開(kāi)發(fā)的圖形界?同時(shí)?持本地和分布式顯?。圖形界?開(kāi)發(fā)完成后就可以?動(dòng)的顯?在本地或通過(guò)TCP/IP?絡(luò)顯?到其他?絡(luò)平臺(tái)上。?持OPC,XML,SOAP等標(biāo)準(zhǔn)?業(yè)協(xié)議。VxWorks?持POSIX1003.1b的規(guī)定和1003.1中有關(guān)基本系統(tǒng)調(diào)?的規(guī)定,其中包括進(jìn)程初始化、?件和?錄、I/O初始化、語(yǔ)?服務(wù)、?錄管理。?且VxWorks還?持POSIX1003.1b的實(shí)時(shí)擴(kuò)展,包括異步I/O、計(jì)數(shù)型信號(hào)量、消息隊(duì)列、信號(hào)、內(nèi)存管理和調(diào)度控制等。ONX在體系結(jié)構(gòu)上?常先進(jìn)?效,采?的是“客戶(hù)機(jī)/服務(wù)器”結(jié)構(gòu),具備微內(nèi)核和許多可選服務(wù)器進(jìn)程。微內(nèi)核只實(shí)現(xiàn)實(shí)時(shí)操作系統(tǒng)應(yīng)該具備的基本功能即:任務(wù)調(diào)度,進(jìn)程間通信,中斷處理,?絡(luò)接?[18,19,20,21,22,24,25,26,27,28]。其它的功能都以協(xié)作進(jìn)程(CooperativeProcesses)的?式實(shí)現(xiàn),這些協(xié)作進(jìn)程就是服務(wù)器進(jìn)程,它們向客戶(hù)進(jìn)程(如?戶(hù)應(yīng)?進(jìn)程)提供服務(wù)。在QNX中,服務(wù)器進(jìn)程的例?很多,象?件管理器,進(jìn)程管理器,?絡(luò)管理器,圖形界?管理器等等。微內(nèi)核運(yùn)?在優(yōu)先級(jí)0,服務(wù)器進(jìn)程和設(shè)備驅(qū)動(dòng)程序運(yùn)?在優(yōu)先級(jí)1或2。應(yīng)?進(jìn)程運(yùn)?在優(yōu)先級(jí)3。QNX的優(yōu)先級(jí)保護(hù)機(jī)制使得整個(gè)系統(tǒng)的穩(wěn)定性?VxWorks有提?。QNX是基于消息傳遞(MessagePassing)的操作系統(tǒng)。消息傳遞是QNX的基本進(jìn)程間通信機(jī)制(IPC)。其消息傳遞服務(wù)基于客戶(hù)機(jī)/服務(wù)器模型:客戶(hù)進(jìn)程向服務(wù)進(jìn)程發(fā)送消息,服務(wù)進(jìn)程也?消息響應(yīng)。許多QNX系統(tǒng)調(diào)?都是基于這樣的機(jī)制。?如,如果?戶(hù)進(jìn)程想打開(kāi)某個(gè)?件,這個(gè)系統(tǒng)調(diào)?就被轉(zhuǎn)換為?條消息,發(fā)送給?件管理器。?件管理器收到消息,打開(kāi)?件后,將?件句柄通過(guò)消息返回給調(diào)?者。由于QNX的微內(nèi)核結(jié)構(gòu)中集成了消息機(jī)制和?絡(luò)功能,因此,QNX的分布計(jì)算能?很強(qiáng),適合于分布式應(yīng)?。QNX的?絡(luò)管理器對(duì)?戶(hù)進(jìn)程屏蔽了?絡(luò)的存在,使得不同CPU上的?戶(hù)進(jìn)程間通信時(shí)仍能采?消息機(jī)制,消息使??式與本地?戶(hù)進(jìn)程間通信完全?致。圖2.5QNX微內(nèi)核結(jié)構(gòu)圖2.6QNX系統(tǒng)結(jié)溝QNX使?進(jìn)程/線(xiàn)程模型。QNX脫胎于UNIX操作系統(tǒng),所以它具備進(jìn)程(Process)的概念。在QNX中,每個(gè)進(jìn)程都享有獨(dú)?的虛擬存儲(chǔ)空間,使系統(tǒng)更加穩(wěn)定。?在VxWorks中,需要另外的模塊才能提供類(lèi)似的功能。

QNX是多進(jìn)程系統(tǒng)。其進(jìn)程可以創(chuàng)建線(xiàn)程(Thread)。QNX的線(xiàn)程與POSIX定義的線(xiàn)程概念還是有所區(qū)別的。在QNX中,線(xiàn)程與?進(jìn)程享受同樣的數(shù)據(jù)段和代碼段,但是,有些操作系統(tǒng)對(duì)象,如時(shí)鐘,?件句柄等,卻不能共享。并且,在?進(jìn)程被殺死后,派?的線(xiàn)程仍可以繼續(xù)運(yùn)?。QNX提供的優(yōu)先級(jí)數(shù)?64個(gè),系統(tǒng)能夠創(chuàng)建的進(jìn)程數(shù)為4095個(gè),每個(gè)進(jìn)程能夠創(chuàng)建32767個(gè)線(xiàn)程。任務(wù)調(diào)度??,提供四種調(diào)度策略:基于優(yōu)先級(jí)的FIFO調(diào)度(SCHED_FIFO),基于優(yōu)先級(jí)的Round-Robin調(diào)度(SCHED_RR),Sporadic調(diào)度(SCHED_SPORADIC)以及其他調(diào)度策略(SCHED_OTHER)。其中SCHED_OTHER的調(diào)度策略和FIFO相同,但將來(lái)會(huì)改變,所以不推薦使?。QNX采?的也是嵌套,分優(yōu)先級(jí)的中斷?式。中斷ISR在掛接它們的進(jìn)程的上下?中執(zhí)?。每個(gè)ISR具有它??的堆棧。QNX中斷與進(jìn)程通信的?式有信號(hào)(Signals)和脈沖(Pulses)。QNX的內(nèi)存保護(hù)機(jī)制相當(dāng)完善。每?個(gè)進(jìn)程都在獨(dú)?的虛擬空間運(yùn)?,具有獨(dú)?的數(shù)據(jù)段和代碼段。虛擬內(nèi)存由Intel處理器的分頁(yè)功能提供。為了避兔內(nèi)存碎?問(wèn)題,QNX使?固定??內(nèi)存分段。QNX提供的內(nèi)存保護(hù)提?了系統(tǒng)穩(wěn)定性,對(duì)于系統(tǒng)調(diào)試階段也很有幫助。QNX有QNX機(jī)器之間專(zhuān)??絡(luò),QNX機(jī)器??之間通信使?的協(xié)議,將多臺(tái)QNX物理機(jī)聯(lián)成?體,在各物理機(jī)之間共享各種資源,使各物理機(jī)聯(lián)結(jié)成為?臺(tái)邏輯機(jī)。對(duì)于需要分布式并?計(jì)算的應(yīng)?系統(tǒng)??,QNX系統(tǒng)的這種特點(diǎn)?疑提供了極?的?便。對(duì)于處理量?分布式系統(tǒng)不能滿(mǎn)?需求的應(yīng)?系統(tǒng)??,QNX更提供對(duì)稱(chēng)多處理器的?式的系統(tǒng)供?戶(hù)選擇。由于QNX微核及消息傳遞結(jié)構(gòu),通過(guò)QNX處理由許多具體計(jì)算機(jī)(節(jié)點(diǎn))組成的?絡(luò)系統(tǒng)就像?臺(tái)單?的計(jì)算機(jī)。節(jié)點(diǎn)之間是平等的,每個(gè)節(jié)點(diǎn)都是?絡(luò)根?錄下的?個(gè)??錄,每個(gè)節(jié)點(diǎn)都可以把其它節(jié)點(diǎn)當(dāng)作?個(gè)圖表來(lái)操作,不需要專(zhuān)門(mén)的遠(yuǎn)程操作命令。?絡(luò)允許任何進(jìn)程使??絡(luò)中任何計(jì)算機(jī)的任何資源。?盤(pán)節(jié)點(diǎn)能由?絡(luò)?舉,使??絡(luò)中處于任何地?的任何資源。對(duì)于?些關(guān)鍵性的應(yīng)?,QNX可以通過(guò)利?分布式?絡(luò)信息實(shí)現(xiàn)熱備份。QNX?絡(luò)具有透明的分布處理能?,容錯(cuò)?絡(luò)功能,均衡負(fù)荷功能,可擴(kuò)充的結(jié)構(gòu)。?絡(luò)節(jié)點(diǎn)之間多重冗余連結(jié)保證了某?局部?絡(luò)發(fā)?故障時(shí)系統(tǒng)能正常?作。QNX節(jié)點(diǎn)也能通過(guò)約定的?絡(luò)協(xié)議(TCP/IP,SL/IP,RPC,NFS,F(xiàn)TP,Telnet,DOSLAN協(xié)議等)與?QNX系統(tǒng)通訊。QNX是少數(shù)?持圖形?戶(hù)界?的實(shí)時(shí)操作系統(tǒng)之?。不同于?些實(shí)時(shí)操作系統(tǒng),QNX對(duì)圖形?戶(hù)界?的?持不是通過(guò)?戶(hù)可以使?的C/C++圖形函數(shù)庫(kù)的?式提供給?戶(hù)??編寫(xiě)圖形界?,?是“?即”提供的。圖形?戶(hù)界?以?組運(yùn)?模塊的?式,?戶(hù)只要運(yùn)?這些模塊,就“?即”獲得了圖形?戶(hù)界?,本?不需編寫(xiě)?條程序。具體優(yōu)勢(shì)將會(huì)在下?討論。QNX的PhotonmicroGUI窗?系統(tǒng),參照在QNX微內(nèi)核體系中為實(shí)現(xiàn)嵌?式系統(tǒng)的POSIXOS環(huán)境所成功采?的?法,遵循類(lèi)似的原則建?起了具有??獨(dú)特風(fēng)格的窗?體系,即Photon微內(nèi)核機(jī)制。Photon微內(nèi)核本?是?個(gè)?進(jìn)程(有45KB代碼)。概括說(shuō)來(lái),Photon為建?GUI提供了?種新?法――使?微內(nèi)核和?組共同操作的進(jìn)程來(lái)實(shí)現(xiàn)圖形?戶(hù)界?。其特有的能?有:lll?持低內(nèi)存要求,允許Photon為那些因內(nèi)存容量的限制只能?持?個(gè)圖形庫(kù)的環(huán)境提供?級(jí)的窗?功能。提供了?常靈活的、?戶(hù)可以擴(kuò)展的體系結(jié)構(gòu),這種體系結(jié)構(gòu)允許開(kāi)發(fā)者按照??的需要擴(kuò)充GUI。由于能夠?qū)崿F(xiàn)跨平臺(tái)的靈活連接,事實(shí)上?們可以從任何被連接的桌?環(huán)境中調(diào)?任何平臺(tái)中的Photon窗?應(yīng)?。PhAB(PhotonApplicationBuilder)是QNX下的?個(gè)可視化圖形界?程序開(kāi)發(fā)?具,包括豐富的易于定制的?戶(hù)控件和語(yǔ)?編輯器。利?PhAB開(kāi)發(fā)應(yīng)?程序的?般過(guò)程如圖2.7:圖2.7PhAB應(yīng)?程序開(kāi)發(fā)過(guò)程圖QNX也是?個(gè)遵循POSIX1003.1標(biāo)準(zhǔn)及POSIX實(shí)時(shí)標(biāo)準(zhǔn)的實(shí)時(shí)操作系統(tǒng)。但在系統(tǒng)實(shí)現(xiàn)上與UNIX不同,因此,QNX雖然在外觀(guān)上很像UNIX,但并不屬于類(lèi)UNIX操作系統(tǒng)。VxWorks程序可以移植到QNX,為QNX的開(kāi)發(fā)帶來(lái)了很?的?便。作為對(duì)上?的詳細(xì)分析的?個(gè)總結(jié),做了?個(gè)簡(jiǎn)單的?較表格,見(jiàn)表2.1:表2.1四種實(shí)時(shí)操作系統(tǒng)?較表WindowsCERT-LinuxVxWorksQNX體系結(jié)構(gòu)不嚴(yán)格的客戶(hù)機(jī)/服務(wù)器coredll.dll內(nèi)核雙內(nèi)核微內(nèi)核,客戶(hù)機(jī)/服務(wù)器可定制性有有有強(qiáng)調(diào)度算搶占式、基于優(yōu)先級(jí)的線(xiàn)程搶占式優(yōu)先級(jí)調(diào)FIFO,Roud-搶占式優(yōu)先級(jí)調(diào)度,最早期限優(yōu)先調(diào)度(EDF)法調(diào)度度,Round-Robinrobin,Adaptive,Sporadic最?任32個(gè)進(jìn)程每個(gè)進(jìn)程的線(xiàn)程4095個(gè)進(jìn)程,每個(gè)進(jìn)程可以有32767個(gè)線(xiàn)程――受內(nèi)存??的限制務(wù)數(shù)數(shù)受內(nèi)存的限制優(yōu)先級(jí)數(shù)641~RT_LOWEST_PRIORITY,可編程控制25664中斷處基于優(yōu)先級(jí)的可嵌套中斷機(jī)可嵌套、分優(yōu)先級(jí)的中斷?式軟中斷可嵌套、分優(yōu)先級(jí)的中斷?式理制內(nèi)存管理在同?個(gè)地址空間運(yùn)?所有的實(shí)時(shí)任務(wù),使?的是內(nèi)核地址空間。存在地址越界危險(xiǎn)。分頁(yè)虛擬內(nèi)存管理缺少內(nèi)存保護(hù)機(jī)制具有獨(dú)?的虛擬空間?絡(luò)能?有,且有??特有的?絡(luò)?件系統(tǒng)有有有GUI開(kāi)eVB、eVC和J2SDK、windML、ZINC和Tilcon有很多選擇,?如國(guó)內(nèi)的miniGUIPhoton微內(nèi)核機(jī)制,PhAB發(fā)PJEE開(kāi)放性Win32POSIXPOSIXPOSIX選擇QNX作為項(xiàng)?的嵌?式開(kāi)發(fā)平臺(tái)主要基于以下?條理由:1)實(shí)時(shí)性。QNX提供?戶(hù)可控制的、優(yōu)先級(jí)驅(qū)動(dòng)、

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論