您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關VxWorks中RTP如何實現調度策略的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
VxWorks有了RTP之后,系統又是如何調度的呢?其實非常非常簡單:RTP不參與調度,VxWorks還是使用之前的調度策略,即所有Task基于優先級搶占,以及默認關閉的時間片輪轉。這確保在任何給定的時刻,系統中準備運行的最高優先級Task都將執行,而不管該Task是在內核中還是在任何進程中。相比之下,非實時系統主要使用分時調度策略,以及動態調整進程優先級,以確保沒有進程會長期無法使用CPU,并且沒有進程獨占CPU。VxWorks的時間片輪轉也是一種分時策略,但它不會干擾優先級的搶占,因此它具有確定性,保證了實時性。
如果你不打算使用pthread,現在就可以跳到文末點贊了
----------分割線---------
不過,為了更好的支持POSIX標準,VxWorks在RTP里引入了POSIX的Thread調度策略。事實上,要想在RTP里使用POSIX的Thread,必須要包含這種調度策略:INCLUDE_POSIX_PTHREAD_SCHEDULER
從名字上就可以看出來,這種策略只對RTP里的Thread有效。而Kernel里的Task和Thread,以及RTP里的Task,用的都是VxWorks的傳統策略
Thread的調度策略不能動態切換到SCHED_SPORADIC,但是可以從SCHED_SPORADIC動態切換到其它策略
如果已經使能了時間片輪轉策略,再使用kernelTimeSlice()改變時間片大小的時候,不會影響到之前使用SCHED_RR策略創建的Thread的時間片。
使用pthread_setschedprio()降低Thread的優先級后,該Thread會排到同優先級隊列的頭部;而使用taskPrioritySet()降低Task的優先級后,該Task會排到同優先級隊列的尾部
感謝各位的閱讀!關于“VxWorks中RTP如何實現調度策略”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。