VxWorks概念
VxWorks操作系統的集成環境叫Tornado。Tornado集成環境提供了高效明晰的圖形化的實時應用開發平臺,它包括一套完整的面向嵌入式系統的開發和調測工具。Tornado環境采用主機-目標機交*開發模型,應用程序在主機的Windows環境下編譯鏈接生成可執行文件,下載到目標機,通過主機上的目標服務器(Target ? Server)與目標機上的目標代理(Target ? Agent)的通信完成對應用程序的調試、分析。它主要由以下幾部分組成: ? ??
? ??
? VxWorks高性能的實時操作系統; ? ??
? * ? 應用編譯工具; ? ??
? * ? 交互開發工具; ? ??
? ??
? 下面對Tornado集成環境的各組件功能分別介紹: ? ??
? ??
? * ? Tornado開發環境 ? ??
? Tornado是集成了編輯器、編譯器、調試器于一體的高度集成的窗口環境,同樣也可以從Shell窗口下發命令和瀏覽。 ? ??
? ??
? * ? WindConfig:Tornado系統配置 ? ??
? 通過WindConfig可選擇需要的組件組成VxWorks實時環境,并生成板級支持包BSP的配置。通過修改config.h可以實現WindConfig的所有功能,并且,可以實現WindConfig不能實現的功能。 ? ??
? ??
? * ? WindSh:Tornado外殼 ? ??
? WindSh是一個駐留在主機內的C語言解釋器,通過它可運行下載到目標機上的所有函數,包括VxWorks和應用函數。Tornado外殼還能解釋常規的工具命令語言TCL。 ? ??
? ??
? WindSh不僅可以解釋幾乎所有的C語言表達式,而且可以實現所有的調試功能。它主要有以下調試功能:下載軟件模塊;刪除軟件模塊;產生任務;刪除任務;設置斷點;刪除斷點;運行、單步、繼續執行程序;查看內存、寄存器、變量;修改內存、寄存器、變量;查看任務列表、內存使用情況、CPU利用率;查看特定的對象(任務、信號量、消息隊列、內存分區、類);復位目標機。 ? ??
? ??
? * ? 瀏覽器 ? ??
? Tornado瀏覽器可查看內存分配情況、任務列表、CPU利用率、系統目標(如任務、消息隊列、信號量等)。這些信息可周期性地進行更新。 ? ??
? ??
? * ? CrossWind:源碼級調試器 ? ??
? 源碼級調試器CrossWind提供了圖形和命令行方式來調試,可進行指定任務或系統級斷點設置、單步執行、異常處理。 ? ??
? ??
? 有些功能如修改內存、寄存器、變量的值通過菜單操作是無法實現的,需要在WindSh中執行原語操作實現。 ? ??
? ??
? * ? 駐留主機的目標服務器 ? ??
? 目標服務器管理主機與目標機的通信,所有與目標機的交互工具都通過目標服務器,它也管理主機上的目標機符號表,提供目標模塊的加載和卸載。 ? ??
? ??
? * ? Tornado注冊器 ? ??
? 所有目標服務器注冊其提供的服務在注冊器中。注冊器映射用戶定義的目標名到目標服務器網絡地址。
?
任務間通信機制?
任務間通信機制是多任務間相互同步和通信以協調各活動的主要手段,VxWorks提供的任務問通信手段按其速度由 快到慢排列為信號量、消息隊列、管道到網絡透明的套接字。 本例子中,主要采用了共享內存、信號量和消息隊列等手段實現任務間通信。任務間通信最直接、最明顯的方法是訪問共享內存數據結構,VxWorks操作系統采用的是 32位平滑內存地址空間,所有任務共存于單一的地址空間,任一程序定義的各種類型的全局變量都可以被任務直接訪問。本系統中所有的全局控制參數數組都采用這種方法來訪問,雖然這種方法不是最好的,但是卻減少了函數調用時傳遞很多參數的 環節,對于實時控制系統來說是可取的。信號量是任務間通信同步互斥的最優選擇,VxWorks提供3種信號量:二進制,互斥和計數器信號量。常用的是二進制信號量和互斥信號量。?????
通信機制還包含消息隊列、共享內存等。
調度的概念?構成應用軟件系統的程序集合中,獨立的、相互作用的程序單元,在其執行時稱之為任務。單個CPU中,多任務機制制造了一個多個任務同時執行的假象。其實系統只是根據一個多任務調度算法,將內核插入到這些任務中執行。任務由系統內核調度運行一段固定長度的時間,稱為間片。調度是指為任務分配資源和時間,使系統滿足特定的性能要求。調度算法的目的是在正常情況下,盡可能滿足所有任務的時限;在峰值負載條件下,保證強實時任務滿足時限。因為時限是區分實時系統和非實時系統的關鍵因素,因此調度算法是實時系統的基本問題。實時操作具有的運行性能,如吞吐量的大小、周轉時間的長短、相應的及時性和可預測性等在很大程度上都取決于實時調度。 調度的類型?
雖然調度的主要 目的都是為了分配處理機,但在不同的OS中所采用的調度方式是完全不同的。在執行調度時所采用的調度算法也可能不同。因此,常按照調度的層次把調度分成高級、中級和低級調度。高級調度又稱長程調度或作業調度,用于決定把外存上處于后備隊列中的哪些作業調入內存,并為它們創建進程、分配必要的資源,然后再將新創建的進程排在就緒隊列上,準備執行。然而在實時系統 中,為了能及時響應,用戶通過鍵盤輸入的數據都是直接送入內存 ,因而實時系統通常不需要作業調度。中級調度又稱中程調度,引入它的主要 目的是為了提高內存利用率和系統吞吐量。它使那些暫時不能運行的進程不再占用寶貴的內存空間,而將它們調到外存上去等待,此時的狀態稱為掛起狀態。當這些進程重新具備運行條件,且內存又有空閑,由中級調度決定,將外存上的那些重新具備運行條件的就緒進程重新調入內存,并使它
為就緒狀態,掛在就緒隊列上等待進程調度。低級調度又稱進程調度。它決定就緒隊列中的哪個進程將獲得處理機,然后由分派程序執行把處理機分配給該進程的操作。進程調度是最基本的一種調度,各種 OS中都必須配置這級調度。進程調度可采用下述兩種方式。
1)非搶占方式。采用這種調度方式,一旦把處理機分配給某進程后,便讓該進程一直執行,直到該進程完成或發生某事件而被阻塞,才再把處
理機分配給其他進程,決不允許某進程搶占已經分配出去的處理機。顯然它難于滿足緊急任務的要求 ,實時系統 中不宜采用這種調度方式。
2)搶占方式。允許調度程序根據某種原則,去停止某個正在執行的進程,將已分配給該進程的處理機 ,重新分配給另一進程。搶占的原則有:
①時間片原則。各進程按時間片運行,當一個時間片用完后,便停止該進程的執行而重新進行調度。
②優先權原則。當一個進程到來時,如果其優先級比正在執行的進程的優先級高,便停止正在執行的進程,將處理機分配給優先級高的進程,
使之執行。實時系統 中一般采用基于優先級的搶占式調度和輪轉調度的進程調度和中程調度相結合的調度策略。因此既可具有較大的靈活性,又能獲得極小的調度延遲。?
調度隊列模型?
1? 僅有進程調度的調度隊列模型就緒態的進程排在就緒隊列中,按時間片輪轉調度運行 ,每個進程執行時,都可能出現以下3種情況。?
1)任務在時間片內完成,則該任務釋放處理機,該進程完成。
2)任務在時間片內未完成,則 OS將該進程放在就緒隊列的末尾,等待下一輪調度。?
3)任務在執行期間,進程被阻塞后,OS將該進程放入阻塞隊列。
2 引入中級調度的調度隊列模型?
較完善的 OS中,除設置了進程調度外,還引入中級調度來改善內存的利用率。當在 OS引入中級調度后,可把進程的就緒狀態分為內存就緒?
態(進程在內存中就緒)、外存就緒態(進程在外存中就緒);把阻塞狀態分為內存阻塞和外存阻塞。在調出操作的作用下,可使內存就緒轉變為?
外存就緒、內存阻塞轉變為外存阻塞;在中級調度的作用下,可使外存就緒轉變為內存就緒。
?VxWorks實時內核 Wind調度分析?
Wind內核缺省調度機制為基于優先級的搶 占式調度。采用這種機制時,系統把處理機分配 給優先級最高的進程,使之執行。一旦出現了另一
個優先級更高的進程時,進程調度程序剝奪當前任務的執行,將處理機分配給高優先級任務而在相同優先級的多個任務之間,采用時間片輪轉調度機制。采用這種機制時,當一個任務到達時,它被排在輪轉隊列的后面,等待分配給自己的時間片的到來,如果在時間片內沒有結束,則再等待屬于自己的時間片的到來,直到任務完成。?
1? 基于優先級的搶占式調度?
采用基于優先級的搶 占式調度,系統中每個任務都有一個介于最高0到最低 255之間的優先級。任一時刻,系統內核一旦發現一個優先級更高的任務轉變為就緒態,內核就保存當前任務的上下文并把 當前任務狀態轉換為阻塞態,同時切換到這個高優先級任務的上下文執行。
2 輪轉調度算法?
采用輪轉調度算法,系統讓處于就緒態的優先級相同的一組任務依次輪流執行預先確定長度的時間片。這是一種處理機平均分配的方法。如果不使用輪轉調度算法,優先級相同的一組任務中第一個獲得處理機的任務將不會被阻塞而獨占處理機,如果沒有阻塞或其他情況發生,它不會放棄處理機的使用權。
3 基于優先級的搶占式調度與輪轉調度相結合?
有時 ,基于優先級的搶占式調度可與輪轉調度相結合。當優先級相同的一組任務依次輪流平均分配處理機時,若有高優先級的任務轉變為就緒態則可搶占該組任務。直到再一次符合執行條件時,該組任務才可再次共享處理機。 為了任務控制的靈活性 ,Wind內核還提供了動態優先級機制,任務的優先級在運行期間可動態地變化。同時,為了防止優先級反轉,還具有優先級繼承機制,通過使用互斥信號量可以防止高優先級的任務被迫等待一段不確定時間,直到一個低優先級任務完成。
總結
- 上一篇: 信用卡注销后还会产生费用吗
- 下一篇: 现货黄金适合定投吗?你得先了解现货黄金的