Task是啥?
VxWorks的Task,也就是任務,是系統里最基本的執行單元,類似于其它操作系統的Thread(線程)?,F代的RTOS基本都通過提供一個多任務環境來支撐上層的應用程序。而上層的應用程序則使用不同的任務來模擬真實世界里各種各樣的分離事件。每個任務就是一個執行線程,使用著自己的系統資源。
那如果不使用多任務呢?也就是單任務系統又是如何工作的?我們看看這個案例:假設需要實現一個控制多節機械手臂的程序。
在單任務環境下,通常的代碼實現就是一個無限循環,循環里輪詢每節的狀態。偽代碼如下:
代碼結構比較簡單,很容易理解,這就是它的優勢。另外,因為只有一個任務,也就不需要切換任務了,CPU就可以專注于執行這個任務。
但是,單任務的缺點也很明顯。從代碼來看,每一節的地位平等,沒有輕重緩急的概念,而真實世界里,每一節的重要程度可能是有區別的。也就是說,這種代碼結構,不具備搶占能力,每一節必須等到被輪詢時,才有可能去執行。而且,每一節的執行頻率也不容易控制,很多條件語句會經常出現假值判斷的情況,這種代碼就是在浪費CPU了。
如果在多任務環境里,代碼大致如下:
需要給每一節制作一個任務,每個任務等待一個通知,然后才能執行,也就是說每個任務都是一直在Waiting和Ready兩種狀態之間切換。Waiting表示它正在等待通知;Ready表示它等到通知了,可以去執行了,這個時候操作系統可以決定是不是要把CPU分配給它了。
可以看到,這種實現對操作系統的要求就高一些了。需要操作系統提供通知機制,讓不同的任務等待不同的通知。另外,如果有多個任務都等到通知了,操作系統還得提供排隊機制,以便于安排哪個任務可以使用CPU來執行了。
這種多任務的優點有很多:
1 任意頻率,每個任務的頻率取決于自己被通知的頻率,與其它任務關系不大;
2 可以排隊,給每個任務分配不同的優先級,這樣高優先級的任務就可以搶占正在執行的低優先級任務;
3 易于擴展,不同任務代碼之間的耦合性比較小,增加新任務時,對已有任務的影響比較小。
正所謂,春蘭秋菊,各擅勝場。而我們的真實世界,本身是一個并行的世界,許許多多事件都是同時在發生的。在模擬真實世界的軟件世界里,大量的場景也是更適合于用多任務來實現,例如下圖:
VxWorks也正是采用這種多任務方式來保證它的實時性的。使用多任務把復雜問題分解,提供多種多任務通信機制來保障任務間的協作,提供高效的調度策略來保障重要任務的及時響應。這些任務可以分別獨立地等待系統資源(包括CPU、I/O設備及內存空間等),或者使用資源一起在宏觀上并發運行。當然了,在微觀上,并發運行的任務數量取決于CPU的內核數量。不過這不影響我們對任務的理解,關于多核的內容,我們以后會有專門的SMP章節,目前我們假定CPU都是單核的。
VxWorks的任務由兩部分組成:Stack和TCB。
Stack(棧)用來存放任務的動態變量和函數調用關系。
TCB全稱是任務控制塊(Task Control Block),在代碼中用一個龐大的結構體來表示,windTcb,在target/h/taskLib.h中可以看到它的完整定義。TCB里記錄的信息是任務的Context(上下文):
任務的PC指針
CPU寄存器
協處理器的寄存器(可選)
標準IO的分配情況
延時計數器
時間片計數器
內核控制結構
信號量回調函數
任務的私有環境變量
Errno狀態
調試和性能監測信息
虛擬內存上下文(支持RTP時)
以及Stack的信息,所以也可能把Stack看作Context的一部分。
VxWorks的調度策略進行任務調度時,就是讓正在使用CPU執行的任務停下來,然后把CPU分配給另一個任務來執行。這個過程就叫做上下文切換。
可以看到,上下文切換就是對兩個任務Context的讀寫操作。為了保證實時性,這個切換過程必須準確、快速。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
徐新,Kathy Xu,被稱為中國“風投女王”,“中國女巴菲特”。2005年,她創立的今日資本,目前管理著25億美元的基金,投資過京東、美團、唯品會、攜程、叮咚買菜、興盛優選、蔚來等知名企業。徐新1988年南京大學外語系畢業,就職于中國銀行總行的營業部,不到一年當選三八紅旗手,不久被提升為副科長??忌嫌詴嫀熤?,進普華會計師事務所工作。三年后...
(相關資料圖)今日(11月9日)早盤,東方財富APP部分行情頁面數據出現顯示異常。東方財富客服在午后回應稱:“今天行情數據源頭出現異常,導致部分行情走勢圖受到影響,目前已恢復正常。”同樣有不少投資者反映同花順(300033)app等炒股軟件曾發生過“崩了”、“顯示的行情不對”等情況,該話題一度沖上熱搜。異常情況也對部分投資者的...
投資性價比夏普比率是什么意思?投資性價比夏普比率是指收益風險比,即承擔一定的風險能帶來多少收益或報酬,等于收益與風險的比值。如果夏普比率大于1則表明承擔一份風險會帶來超過一份的收益回報,小于1則表明承擔一份風險帶來的收益回報小于-份, 投資者一般都愿意 選擇夏普比率大于1的產品。夏普比率一般多大比較好?夏普比率是以資本市場線作為評價基準,對投資績效作出評估。夏普比率越高,表明基金承擔單位風險可以獲...