標籤:
早在20世紀60年代,就已經有人開始研究和開發嵌入式作業系統。但直到最近,它才在國內被越來越多的提及,在通訊、電子、自動化等需要即時處理的領域所曰益顯現的重要性吸引了人們越來越多的注意力。但是,人們所談論的往往是一些著名的商業核心,諸如VxWorks、PSOS等。這些商業核心效能優越,但價格昂貴,主要用於16位和32位處理器中,針對國內大部分使用者使用的51系列8位單片機,可以選擇免費的ucos ii。
ucos ii的特點
1.ucos ii是由Labrosse先生編寫的一個開放式核心,最主要的特點就是源碼公開。這一點對於使用者來說可謂利弊各半,好處在於,一方面它是免費的,另一方面使用者可以根據自己的需要對它進行修改。缺點在於它缺乏必要的支援,沒有功能強大的軟體包,使用者通常需要自己編寫驅動程式,特別是如果使用者使用的是不太常用的單片機,還必須自己編寫移植程式。
2.ucos ii是一個佔先式的核心,即已經準備就緒的高優先順序任務可以剝奪正在啟動並執行低優先順序任務的CPU使用權。這個特點使得它的即時性比非佔先式的核心要好。通常我們都是在中斷服務程式中使高優先順序任務進入就緒態(例如發訊號),這樣退出中斷服務程式後,將進行任務切換,高優先順序任務將被執行。拿51單片機為例,比較一下就可以發現這樣做的好處。假如需要用中斷方式採集一批資料並進行處理,在傳統的編程方法中不能在中斷服務程式中進行複雜的資料處理,因為這會使得關停機時間過長。所以經常採用的方法是置一標誌位,然後退出中斷。由於主程式是迴圈執行的,所以它總有機會檢測到這一標誌並轉到資料處理程式中去。但是因為無法確定發生中斷時程式到底執行到了什麼地方,也就無法判斷要經過多長時間資料處理程式才會執行,中斷回應時間無法確定,系統的即時性不強。如果使用μC/OS-II的話,只要把資料處理程式的優先順序設定得高一些,並在中斷服務程式中
使它進入就緒態,中斷結束後資料處理程式就會被立即執行。這樣可以把中斷回應時間限制在一定的範圍內。對於一些對中斷回應時間有嚴格要求的系統,這是必不可少的。但應該指出的是如果資料處理程式簡單,這樣做就未必合適。因為ucos ii要求在中斷服務程式末尾使用OSINTEXIT函數以判斷是否進行任務切換,這需要花費一定的時間。
3.ucos ii和大家所熟知的Linux等分時作業系統不同,它不支援時間片輪轉法。ucos ii是一個基於優先順序的即時作業系統,每個任務的優先順序必須不同,分析它的源碼會發現,ucos ii把任務的優先順序當做任務的標識來使用,如果優先順序相同,任務將無法區分。進入就緒態的優先順序最高的任務首先得到CPU的使用權,只有等它交出CPU的使用權後,其他任務才可以被執行。所以它只能說是多任務,不能說是多進程,至少不是我們所熟悉的那種多進程。顯而易見,如果只考慮即時性,它當然比分時系統好,它可以保證重要任務總是優先佔有CPU。但是在系統中,重要任務畢竟是有限的,這就使得劃分其他任務的優先權變成了一個讓人費神的問題。另外,有些任務交替執行反而對使用者更有利。例如,用單片機控制兩小塊顯示屏時,無論是編程者還是使用者肯定希望它們同時工作,而不是顯示完一塊顯示屏的資訊以後再顯示另一塊顯示屏的資訊。這時候,要是ucos ii即支援優先順序法又支援時間片更加合適。
4.ucos ii對共用資源提供了保護機制。正如上文所提到的,ucos ii是一個支援多任務的作業系統。一個完整的程式可以劃分成幾個任務,不同的任務執行不同的功能。這樣,一個任務就相當於模組化設計中的一個子模組。在任務中添加代碼時,只要不是共用資源就不必擔心互相之間有影響。而對於共用資源(比如串口),ucos ii也提供了很好的解決辦法。一般情況下使用的是訊號量的方法。簡單地說,先建立一個訊號量並對它進行初始化。當一個任務需要使用一個共用資源時,它必須先申請得到這個訊號量,而一旦得到了此訊號量,那就只有等使用完了該資源,訊號量才會被釋放。在這個過程中即使有優先權更高的任務進入了就緒態,因為無法得到此訊號量,也不能使用該資源。這個特點的好處顯而易見,例如當顯示屏正在顯示資訊的時候,外部產生了一個中斷,而在中斷服務程式中需要顯示屏顯示其他資訊。這樣,退出中斷服務程式後,原有的資訊就可能被破壞了。而在μC/OS-II中採用訊號量的方法時,只有顯示屏把原有資訊顯示完畢後才可以顯示新資訊,從而可以避免這個現象。不過,採用這種方法是以犧牲系統的即時性為代價的。如果顯示原有資訊需要耗費大量時間,系統只好等待。從結果上看,等於延長了中斷回應時間,這對於未顯示資訊是警示資訊的情況,無疑是致命的。發生這種情況,在μC/OS-II中稱為優先順序反轉,就是高優先順序任務必須等待低優先順序任務的完成。在上述情況下,在兩個任務之間發生優先順序反轉是無法避免的。所以在使用ucos ii時,必須對所開發的系統瞭解清楚,才能決定對於某種共用資源是否使用訊號量。
嵌入式即時作業系統ucos-II