幾種嵌入式實(shí)時(shí)操作系統的分析與比較
關(guān)鍵詞 實(shí)時(shí)操作系統任務(wù)管理任務(wù)間同步與通信 內存管理 中斷管理 文件系統
VxWorks、μClinux、μC/OS-II和eCos是4種性能優(yōu)良并被廣泛應用的實(shí)時(shí)操作系統。本文通過(guò)對這4種操作系統的主要性能進(jìn)行分析與比較,歸納出它們的選型依據和適用領(lǐng)域。
1 4種操作系統的介紹
(1)VxWorks
VxWorks是美國WindRiver公司的產(chǎn)品,是目前嵌入式系統領(lǐng)域中應用很廣泛,市場(chǎng)占有率比較高的嵌入式操作系統。VxWorks實(shí)時(shí)操作系統由400多個(gè)相對獨立、短小精悍的目標模塊組成,用戶(hù)可根據需要選擇適當的模塊來(lái)裁剪和配置系統;提供基于優(yōu)先級的任務(wù)調度、任務(wù)間同步與通信、中斷處理、定時(shí)器和內存管理等功能,內建符合POSIX(可移植操作系統接口)規范的內存管理,以及多處理器控制程序;并且具有簡(jiǎn)明易懂的用戶(hù)接口,在核心方面甚至町以微縮到8 KB。
(2) μC/OS-II
μC/OS-II是在μC-OS的基礎上發(fā)展起來(lái)的,是美國嵌入式系統專(zhuān)家Jean J.Labrosse用C語(yǔ)言編寫(xiě)的一個(gè)結構小巧、搶占式的多任務(wù)實(shí)時(shí)內核。μC/OS-II能管理64個(gè)任務(wù),并提供任務(wù)調度與管理、內存管理、任務(wù)間同步與通信、時(shí)間管理和中斷服務(wù)等功能,具有執行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良和可擴展性強等特點(diǎn)。
(3)μClinux
μClinux是一種優(yōu)秀的嵌入式Linux版本,其全稱(chēng)為micro-control Linux,從字面意思看是指微控制Linux。同標準的Linux相比,μClinux的內核非常小,但是它仍然繼承了Linux操作系統的主要特性,包括良好的穩定性和移植性、強大的網(wǎng)絡(luò )功能、出色的文件系統支持、標準豐富的API,以及TCP/IP網(wǎng)絡(luò )協(xié)議等。因為沒(méi)有MMU內存管理單元,所以其多任務(wù)的實(shí)現需要一定技巧。
(4)eCos
eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個(gè)源代碼開(kāi)放的可配置、可移植、面向深度嵌入式應用的實(shí)時(shí)操作系統。最大特點(diǎn)是配置靈活,采用模塊化設計,核心部分由小同的組件構成,包括內核、C語(yǔ)言庫和底層運行包等。每個(gè)組件可提供大量的配置選項(實(shí)時(shí)內核也可作為可選配置),使用eCos提供的配置工具可以很方便地配置,并通過(guò)不同的配置使得eCos能夠滿(mǎn)足不同的嵌入式應用要求。
2 性能分析與比較
任務(wù)管理、任務(wù)及中斷間的同步與通信機制、內存管理、中斷管理、文件系統、對硬件的支持和系統移植這幾方面是實(shí)時(shí)操作系統的主要性能。下面就從這幾個(gè)方面著(zhù)手對上述4種操作系統進(jìn)行分析與比較。
2.1 任務(wù)管理
任務(wù)管理是嵌入式實(shí)時(shí)操作系統的核心和靈魂,決定了操作系統的實(shí)時(shí)性能。它通常包含優(yōu)先級設置、多任務(wù)調度機制和時(shí)間確定性等部分。
2.1.1 優(yōu)先級設置
嵌入式操作系統支持多任務(wù),每個(gè)任務(wù)都具有優(yōu)先級,任務(wù)越重要,賦予的優(yōu)先級應越高。優(yōu)先級的設置分為靜態(tài)優(yōu)先級和動(dòng)態(tài)優(yōu)先級兩種。靜態(tài)優(yōu)先級指的是每個(gè)任務(wù)在運行前都被賦予一個(gè)優(yōu)先級,而且這個(gè)優(yōu)先級在系統運行期間是不能改變的;動(dòng)態(tài)優(yōu)先級則是指每個(gè)任務(wù)的優(yōu)先級(特別是應用程序的優(yōu)先級)在系統運行時(shí)可以動(dòng)態(tài)地改變。
2.1.2 多任務(wù)調度機制
任務(wù)調度主要是協(xié)調任務(wù)對計算機系統資源的爭奪使用。對系統資源非常匱乏的嵌入式系統來(lái)說(shuō),任務(wù)調度尤為重要,它直接影響到系統的實(shí)時(shí)性能。通常,多任務(wù)調度機制分為基于優(yōu)先級搶占式調度和時(shí)間片輪轉調度。
基于優(yōu)先級搶占式調度:系統中每個(gè)任務(wù)都有一個(gè)優(yōu)先級,內核總是將CPU分配給處于就緒態(tài)的優(yōu)先級最高的任務(wù)運行。如果系統發(fā)現就緒隊列中有比當前運行任務(wù)更高的優(yōu)先級任務(wù),就把當前運行任務(wù)置于就緒隊列中,調入高優(yōu)先級任務(wù)運行。系統采用優(yōu)先級搶占方式進(jìn)行調度,可以保證重要的突發(fā)事件及時(shí)得到處理。
時(shí)間片輪轉調度:讓優(yōu)先級相同的處于就緒狀態(tài)的任務(wù)按時(shí)間片使用CPU,以防止同優(yōu)先級的某一任務(wù)長(cháng)時(shí)間獨占CPU。
在一般情況下,嵌入式實(shí)時(shí)操作系統采用基于優(yōu)先級搶占式調度與時(shí)間片輪轉調度相結合的調度機制。
2.1.3 時(shí)間的可確定性
嵌入式實(shí)時(shí)操作系統甬數調用與服務(wù)的執行時(shí)間應具有可確定性。系統服務(wù)的執行時(shí)間不依賴(lài)于應用程序任務(wù)的多少?;诖颂卣?,系統完成某個(gè)確定任務(wù)的時(shí)間是可預測的。表1具體列出了4種操作系統的調度機制。
4種嵌入式實(shí)時(shí)操作系統都支持多任務(wù),只是在支持任務(wù)數量上和任務(wù)調度機制上有所不同。VxWorks具有高效的任務(wù)管理功能,它支持多任務(wù),可分配256個(gè)優(yōu)先級,支持優(yōu)先級搶占式調試和時(shí)間片輪轉調度,實(shí)時(shí)性最好。μC/OS-II內核是針對實(shí)時(shí)系統的要求設計實(shí)現的,只支持基于固定優(yōu)先級搶占式調度;調度方法簡(jiǎn)單,可以滿(mǎn)足較高的實(shí)時(shí)性要求。μClinux在結構上繼承了標準Linux的多任務(wù)實(shí)現方式,分為實(shí)時(shí)進(jìn)程和普通進(jìn)程,分別采用先來(lái)先服務(wù)和時(shí)間片輪轉調度;僅針對中低檔嵌入式CPU特點(diǎn)進(jìn)行改良,且不支持內核搶占。eCos調度方法豐富,提供了兩種基于優(yōu)先級的調度器(即位圖調度器和多級隊列調度器),允許用戶(hù)在進(jìn)行配置時(shí)選擇其中一個(gè)凋度器,適應性好。
2.2 任務(wù)及中斷間的同步與通信機制
實(shí)時(shí)操作系統的功能一般要通過(guò)若干任務(wù)和中斷服務(wù)程序共同完成。任務(wù)與任務(wù)之間、任務(wù)與中斷間任務(wù)及中斷服務(wù)程序之間必須協(xié)調動(dòng)作,互相配合,這就涉及任務(wù)間的同步與通信問(wèn)題。嵌入式實(shí)時(shí)操作系統通常是通過(guò)信號量、互斥信號量、事件標志和異步信號來(lái)實(shí)現同步,通過(guò)消息郵箱、消息隊列、管道和共享內存來(lái)提供通信服務(wù)。由于互斥信號量的使用,帶來(lái)了實(shí)時(shí)操作系統中常見(jiàn)的優(yōu)先級反轉問(wèn)題。優(yōu)先級反轉是一種不確定的延遲形式,當高優(yōu)先級任務(wù)企圖訪(fǎng)問(wèn)已被低優(yōu)先級占有的共享資源時(shí),必須等待低優(yōu)先級任務(wù)釋放共享資源;如果這時(shí)低優(yōu)先級任務(wù)被一個(gè)或多個(gè)中優(yōu)先級任務(wù)搶占,那么高優(yōu)先級任務(wù)被延遲的時(shí)間將更進(jìn)一步延長(cháng),實(shí)時(shí)性難以保證。因此,應采取相關(guān)措施以盡鼉避免出現優(yōu)先級反轉問(wèn)題。實(shí)時(shí)系統通常采用優(yōu)先級繼承和優(yōu)先級置頂機制。
優(yōu)先級繼承足指擁有互斥量的任務(wù)被提升到與下一個(gè)在等待該互斥最的最高優(yōu)先級任務(wù)相同的優(yōu)先級;優(yōu)先級置頂是指獲得互斥量的任務(wù)將其優(yōu)先級提升到一個(gè)事先規定好的值。表2為4種操作系統的同步與通信機制的比較。
4種系統都具有靈話(huà)的任務(wù)間同步與通信機制,都可以通過(guò)信號量、消息隊列來(lái)實(shí)現同步與通信,但是VxWorks與μClinux都不支持郵箱和事件標志,而且除了μClinux和eCos中的位圖調度器,其他操作系統都采取了措施抑制優(yōu)先級反轉。
2.3 內存管理
內存管理主要包括:內存分配原則,存儲保護和內存分配方式。
2.3.1 內存分配原則
內存分配原則包括快速性、可靠性和高效性。其中,快速性要求內存分配過(guò)程要盡可能快,所以一般采用簡(jiǎn)單、快速的分配算法;可靠性指的是內存分配的請求必須得到滿(mǎn)足;系統強調高效性的要求,不僅僅是對系統成本的要求,而且由于系統本身可配置的內存容量也是很有限的,所以要盡可能地避免浪費。
2.3.2 存儲保護
通常在操作系統的內存中既有系統程序也有用戶(hù)程序,為了使兩者都能正常運行,避免程序間相互干擾,需要對內存中的程序和數據進(jìn)行保護。存儲保護通常需要硬件支持,在很多系統中都采用MMU,并結合軟件實(shí)現;但由于嵌入式系統的成本限制內核和用戶(hù)程序通常都在相同的內存空間中。
2.3.3 內存分配方式
內存分配方式可分為靜態(tài)分配和動(dòng)態(tài)分配。靜態(tài)分配是在程序運行前一次性分配給相應內存,并且在程序運行期間中不允許再申請或在內存中移動(dòng);動(dòng)態(tài)分配則允許在程序運行整個(gè)過(guò)程中進(jìn)行內存分配。靜態(tài)分配使系統失去了靈活性,但對于實(shí)時(shí)性要求比較高的系統是必需的;而動(dòng)態(tài)分配賦予了系統設計者更多自主性,可以靈活地調整系統的功能。
VxWorks對內存的使用采用的是Flat Mode,可被靜態(tài)或動(dòng)態(tài)鏈接。VxWorks為用戶(hù)提供了兩種內存區域Region和Partition。Region是變長(cháng)的內存區,用戶(hù)可以從創(chuàng )建的Region中分配Segment,其特點(diǎn)是容易產(chǎn)生碎片,但靈活并且不浪費;Partition是定長(cháng)的內存區,用戶(hù)可以從刨建的Partition中分配Buffer,其特點(diǎn)是不會(huì )產(chǎn)生碎片,技率高但是易浪費。VxWorks采用最先算法分配內存。μC/OS-II把連續的大塊內存按分區來(lái)管理,每個(gè)分區中都包含整數個(gè)大小相同的內存塊,但不同分區之間內存的太小可以不同。用戶(hù)動(dòng)態(tài)分配內存時(shí),只須選擇一個(gè)適當的分區,按塊來(lái)分配內存,釋放時(shí)將該塊放回到以前所屬的分區,這樣就消除了因多次動(dòng)態(tài)分配和釋放內存所引起的碎片問(wèn)題。μClinux是針對沒(méi)有MMU的處理器設計的,不能使用處理器的虛擬內存管理技術(shù),只能采用實(shí)存儲器管理策略。系統使用分頁(yè)內存分配方式,在啟動(dòng)時(shí)對實(shí)際存儲器進(jìn)行分頁(yè)。系統對內存的訪(fǎng)問(wèn)是直接的操作系統對內存空間沒(méi)有保護,多個(gè)進(jìn)程可共享一個(gè)運行空間,所以,即使是一個(gè)無(wú)特權進(jìn)程調用一個(gè)無(wú)效指針也會(huì )觸發(fā)一個(gè)地址錯誤,并有可能引起程序崩潰甚至系統崩潰。eCos對內存分配既不分段也不分頁(yè),而是采用一種基于內存池的動(dòng)態(tài)內存分配機制。通過(guò)兩種內存池類(lèi)來(lái)實(shí)現兩種內存管理方法:一種是變長(cháng)的內存池;另一種是定長(cháng)的內存池,類(lèi)似于VxWorb的管理方案。表3為4種操作系統內存管理的比較。
2.4 中斷管理
中斷管理是實(shí)時(shí)系統中一個(gè)很重要的部分,系統經(jīng)常通過(guò)中斷與外部事件交互。主要考慮是否支持中斷嵌套、中斷處理機制、中斷延時(shí)等。
(1)VxWorks的中斷管理
VxWorks操作系統中斷管理采用中斷處理與普通任務(wù)分別在不同棧中處理的中斷處理機制,使得中斷只會(huì )引發(fā)一些關(guān)鍵寄存器的存儲,而不會(huì )導致任務(wù)的上下文切換,從而極大地縮短了中斷延時(shí)。同時(shí),VxWorks的中斷處理程序只能在最短時(shí)間內通告中斷的發(fā)生,而將其他的非實(shí)時(shí)處理盡量放入被引發(fā)的中斷服務(wù)程序中來(lái)完成,這也縮短了中斷延時(shí)。但是凼為中斷服務(wù)程序不在一個(gè)固定的仟務(wù)上下文中執行,而目沒(méi)有任務(wù)控制塊,所以所有中斷服務(wù)程序使用相同的中斷堆棧。為了能處理最壞情況下的中斷嵌套,必須分配足夠大的中斷堆??臻g。
(2)μC/OS-II的中斷管理
μC/OS-II中斷處理比較簡(jiǎn)單。一個(gè)中斷向量上只能掛一個(gè)中斷服務(wù)子程序ISR,而且用戶(hù)代碼必須都在ISR中完成。ISR需要做的事情越多,中斷延時(shí)也就越長(cháng)。內核所能支持的最大嵌套深度為255。
(3) μClinux的中斷管理
μClinux操作系統將中斷處理分為兩部分:頂半處理和底半處理。在頂半處理中,必須關(guān)中斷運行,且僅進(jìn)行必要的、非常少、速度快的處理,其他處理交給底半處理;底半處理執行那些復雜、耗時(shí)的處理,而且接受中斷。因為系統中存在有許多中斷的底半處理,所以會(huì )引起系統中斷處理的延時(shí)。
(4)eCos的中斷管理
eCos使用了分層式中斷處理機制,把中斷處理分為傳統的ISR和滯后中斷服務(wù)程序DSR。類(lèi)似于μClinux的處理機制,這種機制可以在中斷允許時(shí)運行DSR,因此在處理較低優(yōu)先級中斷時(shí)允許高優(yōu)先級的中斷和處理。為了極大地縮短中斷延時(shí),ISR應當可以快速運行。如果中斷引起的服務(wù)量少,則ISR可以單獨處理中斷;如果中斷服務(wù)復雜,則ISR只屏蔽中斷源,然后交由DSR處理。
2.5 文件系統
所謂“文件系統”是指負責存取和管理文件信息的機構,也可以說(shuō)是負貴文件的建立、撤銷(xiāo)、組織、讀寫(xiě)、修改、復制,以及對文件管理所需的其他資源實(shí)施管理的軟件部分。VxWorks操作系統在文件系統與設備驅動(dòng)程序之間使用一種標準的I/O口操作接口,且支持MS-DOS、RT-11、RFS、CD-ROM、RAW等文件系統。這樣,在單個(gè)VxWorks操作系統中可以運行多個(gè)相同或不同種類(lèi)的文件系統。μC/OS-II是面向中小型嵌入式系統的,即使包含全部功能,編譯后內核也不到10 KB,所以系統本身并沒(méi)有提供對文件系統的支持。但是μC/OS-II具有良好的擴展性能,如果需要也可自行加入文件系統的內容。μClinux繼承了Linux完善的文件系統性能,它支持ROMFS、NFS、ext2、MS-DOS、JFFS等文件系統。但一般采用ROMFS文件系統,這種文件系統相對于一般的文件系統(如ext2)占用更少的空間。但是ROMFS文件系統不支持動(dòng)態(tài)擦寫(xiě)保存,對于系統需要動(dòng)態(tài)保存的數據須采用虛擬RAM盤(pán)/JFFS的方法進(jìn)行處理。eCos操作系統的可配置性非常強大,用戶(hù)可以自己加入所需的文件系統。
2.6 對硬件的支持
VxWorks、μC/OS-II、μClinux和eCos這4種操作系統都支持當前流行的大部分嵌入式CPU。μC/OS-II支持從8位到32位的CPU,VxWorks、μClinux和eCos可以在16位、32位和64位等不同體系結構之間移植。由于μClinux繼承了Linux的大部分性能,所以至少需要512KB的RAM空間,lMB的ROM/Flash空間;而μC/OSII和eCos由于本身內核就很小,經(jīng)過(guò)裁剪后的代碼最小可以分別為2 KB和10 KB,所需的最小數據RAM空間分別為4 KB和10 KB??偟膩?lái)說(shuō),4種系統對硬件的要求比較低,比較經(jīng)濟。具體比較如表4所列。
2.7 系統移植
嵌入式操作系統移植的目的是使嵌入式操作系統能在某個(gè)微處理器或微控制器上運行。4種系統中VxWorks是商用操作系統的有很多API函數及相關(guān)技術(shù)支持,所以移植和二次開(kāi)發(fā)比較容易,但是移植成本較高。其他3種系統的結構化設計便于把與處理器相關(guān)的部分分離出來(lái),所以被移植到新的處理器上也是可能的。μC/OS-II的移植相對比較簡(jiǎn)單,只需要修改與處理器相關(guān)的代碼就可以了。μClinux是Linux針對嵌入式系統的一種改良,其結構比較復雜。移植μClinux,目標處理器除了應滿(mǎn)足μC/OS-II移植所需的條件外,還需要足夠容量的外部ROM和RAM。eCos系統的可移植性明顯比μC/OS-II和μClinux好。在eCos系統中,每個(gè)硬件平臺都有一個(gè)單獨的目錄,用于存放引對這一硬件平臺的硬件抽象層的代碼和配置信息;而μClinux的硬件抽象層的代碼則分布在好幾個(gè)目錄中,通過(guò)命令來(lái)選擇不同硬件平臺的代碼。所以,修改eCos代碼相對簡(jiǎn)單,移植也相對容易。
結論
這4種嵌入式實(shí)時(shí)操作系統在嵌入式系統的應用非常廣泛,但是又具有各自的特點(diǎn)。根據上述比較,歸納出各自的適用領(lǐng)域。
①VxWorks是一套婁似于Unix的實(shí)時(shí)操作系統,它內建了符合POSIX規范的內存管理,以及多處理器控制程序,并且具有簡(jiǎn)明易懂的用戶(hù)接口,在核心方面甚至可以微縮到8 KB。它由400多個(gè)相對獨立的、短小精悍的目標模塊組成,用戶(hù)可根據需要選擇適當模塊來(lái)裁剪和配置系統,有效地保證了系統的安全性和可靠性。它被廣泛地應用在通信、軍事、航空、航天等高尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域,尤其是在許多關(guān)鍵應用方面,VxWorks還是一枝獨秀。例如,美國波音公司就在其最新的787客機中采用了此操作系統;而在外層空間探索領(lǐng)域,VxWorks則一直是美國太空總署NASA的最?lèi)?ài)。
②μC/OS-II是一個(gè)結構簡(jiǎn)單、功能完備和實(shí)時(shí)性很強的嵌入式操作系統內核,適合于廣大的嵌入式系統開(kāi)發(fā)人員和愛(ài)好者入門(mén)學(xué)習,以及高校教學(xué)和科研。μC/OSII很適合開(kāi)發(fā)那些對系統要求不是很苛刻,且RAM和ROM有限的各種小型嵌入式系統設備。
③μClinux最大特點(diǎn)在于針對無(wú)MMU處理器設計,可以利用功能強大的Linux資源,因此適合開(kāi)發(fā)對事件要求不高的小容量、低成本的各類(lèi)產(chǎn)品,特別適用于開(kāi)發(fā)與網(wǎng)絡(luò )應用密切相關(guān)的嵌入式設備或者PDA設備。例如,CISCO公司的2500/3000/4000路由器就是基于μClinux操作系統開(kāi)發(fā)的。
④eCos最大特點(diǎn)是配置靈活,而月是面向深度嵌入 式應用的,很適合用于一些商業(yè)級或工業(yè)級對成本敏感的
嵌入式系統,例如消費電子類(lèi)領(lǐng)域中的一些應用。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論