亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vxworks中Task是什么意思

發布時間:2021-12-22 10:04:49 來源:億速云 閱讀:286 作者:小新 欄目:互聯網科技

這篇文章主要為大家展示了“vxworks中Task是什么意思”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“vxworks中Task是什么意思”這篇文章吧。

Task是啥?

VxWorks的Task,也就是任務,是系統里最基本的執行單元,類似于其它操作系統的Thread(線程)。現代的RTOS基本都通過提供一個多任務環境來支撐上層的應用程序。而上層的應用程序則使用不同的任務來模擬真實世界里各種各樣的分離事件。每個任務就是一個執行線程,使用著自己的系統資源。

那如果不使用多任務呢?也就是單任務系統又是如何工作的?我們看看這個案例:假設需要實現一個控制多節機械手臂的程序。

vxworks中Task是什么意思

在單任務環境下,通常的代碼實現就是一個無限循環,循環里輪詢每節的狀態。偽代碼如下:

vxworks中Task是什么意思

代碼結構比較簡單,很容易理解,這就是它的優勢。另外,因為只有一個任務,也就不需要切換任務了,CPU就可以專注于執行這個任務。

但是,單任務的缺點也很明顯。從代碼來看,每一節的地位平等,沒有輕重緩急的概念,而真實世界里,每一節的重要程度可能是有區別的。也就是說,這種代碼結構,不具備搶占能力,每一節必須等到被輪詢時,才有可能去執行。而且,每一節的執行頻率也不容易控制,很多條件語句會經常出現假值判斷的情況,這種代碼就是在浪費CPU了。

如果在多任務環境里,代碼大致如下:

vxworks中Task是什么意思

需要給每一節制作一個任務,每個任務等待一個通知,然后才能執行,也就是說每個任務都是一直在Waiting和Ready兩種狀態之間切換。Waiting表示它正在等待通知;Ready表示它等到通知了,可以去執行了,這個時候操作系統可以決定是不是要把CPU分配給它了。

可以看到,這種實現對操作系統的要求就高一些了。需要操作系統提供通知機制,讓不同的任務等待不同的通知。另外,如果有多個任務都等到通知了,操作系統還得提供排隊機制,以便于安排哪個任務可以使用CPU來執行了。

這種多任務的優點有很多:

1 任意頻率,每個任務的頻率取決于自己被通知的頻率,與其它任務關系不大;

2 可以排隊,給每個任務分配不同的優先級,這樣高優先級的任務就可以搶占正在執行的低優先級任務;

3 易于擴展,不同任務代碼之間的耦合性比較小,增加新任務時,對已有任務的影響比較小。

正所謂,春蘭秋菊,各擅勝場。而我們的真實世界,本身是一個并行的世界,許許多多事件都是同時在發生的。在模擬真實世界的軟件世界里,大量的場景也是更適合于用多任務來實現,例如下圖:

vxworks中Task是什么意思

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分配給另一個任務來執行。這個過程就叫做上下文切換。

vxworks中Task是什么意思

可以看到,上下文切換就是對兩個任務Context的讀寫操作。為了保證實時性,這個切換過程必須準確、快速。

以上是“vxworks中Task是什么意思”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹤壁市| 广汉市| 平乐县| 龙南县| 西吉县| 县级市| 南宁市| 海林市| 尼木县| 建湖县| 萨迦县| 土默特右旗| 兴隆县| 上杭县| 萨嘎县| 阿拉善左旗| 郧西县| 玉树县| 民和| 乐业县| 彰化市| 通化县| 荆门市| 阳朔县| 柘荣县| 柳林县| 呼和浩特市| 临江市| 介休市| 乌兰县| 江北区| 天镇县| 清河县| 新源县| 灌阳县| 葫芦岛市| 囊谦县| 潍坊市| 库尔勒市| 淮安市| 府谷县|