RTT線(xiàn)程管理
RTT線(xiàn)程管理
RRT是將一個(gè)大任務(wù)分解成多個(gè)小任務(wù),線(xiàn)程是實(shí)現任務(wù)的載體,是RTT的最基本調度單位,描述了一個(gè)任務(wù)執行的運行環(huán)境和優(yōu)先等級線(xiàn)程在運行時(shí)會(huì )認為自己是以獨占CPU的方式運行。
功能特點(diǎn):
主要功能:對線(xiàn)程進(jìn)行管理和調度將所有線(xiàn)程分為系統線(xiàn)程和用戶(hù)線(xiàn)程
系統線(xiàn)程:由RTT內核創(chuàng )建的線(xiàn)程
用戶(hù)線(xiàn)程:由應用程序創(chuàng )建的線(xiàn)程
線(xiàn)程從內核對象容器中分配線(xiàn)程對象,當線(xiàn)程被刪除時(shí)也會(huì )被從對象容器中刪除
RTT線(xiàn)程調度器為搶占式:從就緒線(xiàn)程列表中查找最高優(yōu)先級線(xiàn)程,保證它能夠被運行,最高優(yōu)先級任務(wù)一旦就緒,總能得到CPU的使用權;當一個(gè)運行著(zhù)的線(xiàn)程使一個(gè)比它優(yōu)先級高的線(xiàn)程滿(mǎn)足運行條件,當前線(xiàn)程的CPU使用權就會(huì )被讓出給更高優(yōu)先級的線(xiàn)程;當中斷服務(wù)程序讓一個(gè)高優(yōu)先級的線(xiàn)程滿(mǎn)足運行條件,中斷完成時(shí),被中斷的線(xiàn)程掛起,優(yōu)先級高的線(xiàn)程開(kāi)始運行
調度器切換線(xiàn)程的步驟:
1、保存當前線(xiàn)程上下文/掛起被中斷線(xiàn)程
2、切換到高優(yōu)先級線(xiàn)程
3、等待高優(yōu)先級線(xiàn)程運行完畢
4、切換回之前的線(xiàn)程
5、恢復當前線(xiàn)程上下文
線(xiàn)程的基本操作:創(chuàng )建/初始化線(xiàn)程、啟動(dòng)線(xiàn)程、運行線(xiàn)程、刪除/脫離線(xiàn)程。對于動(dòng)態(tài)線(xiàn)程使用rt_thread_create()創(chuàng )建,動(dòng)態(tài)線(xiàn)程會(huì )自動(dòng)從動(dòng)態(tài)內存堆上分配??臻g與線(xiàn)程句柄(隱含條件:初始化heap后才能使用create創(chuàng )建動(dòng)態(tài)線(xiàn)程);使用rt_thread_init()初始化靜態(tài)線(xiàn)程,由用戶(hù)為其分配??臻g和線(xiàn)程句柄。
注意分配出的??臻g是按照rtconfig.h中配置的RT_ALIGN_SIZE方式對齊。
線(xiàn)程創(chuàng )建成功返回線(xiàn)程句柄,失敗則返回RT_NULL。
使用rt_thread_delete()刪除線(xiàn)程。
這個(gè)函數僅在使能了系統動(dòng)態(tài)堆時(shí)才有效(即已經(jīng)定義RT_USING_HEAP)。
用此函數刪除線(xiàn)程接口僅僅釋放掉了部分控制資源,讓線(xiàn)程變?yōu)殛P(guān)閉態(tài),不讓它再使用CPU,真正釋放線(xiàn)程控制塊和釋放線(xiàn)程棧要到下次執行空閑線(xiàn)程時(shí),由空閑線(xiàn)程執行最后的線(xiàn)程刪除任務(wù)。
也就是說(shuō)rt_thread_delete()負責把線(xiàn)程弄死,但尸體還堆在內存里,空閑線(xiàn)程會(huì )完成收尸工作。
RT-Thread 線(xiàn)程的優(yōu)先級是表示線(xiàn)程被調度的優(yōu)先程度。每個(gè)線(xiàn)程都具有優(yōu)先級,線(xiàn)程越重要,賦予的優(yōu)先級就應越高,線(xiàn)程被調度的可能才會(huì )越大。
RT-Thread 最大支持 256 個(gè)線(xiàn)程優(yōu)先級 (0~255),數值越小的優(yōu)先級越高,0 為最高優(yōu)先級。在一些資源比較緊張的系統中,可以根據實(shí)際情況選擇只支持 8 個(gè)或 32 個(gè)優(yōu)先級的系統配置;對于 ARM Cortex-M 系列,普遍采用 32 個(gè)優(yōu)先級。最低優(yōu)先級默認分配給空閑線(xiàn)程使用,用戶(hù)一般不使用。在系統中,當有比當前線(xiàn)程優(yōu)先級更高的線(xiàn)程就緒時(shí),當前線(xiàn)程將立刻被換出,高優(yōu)先級線(xiàn)程搶占處理器運行。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。