九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
uCos中優(yōu)先級(jí)判定表OSUnMapTbl原理
 

uCos中優(yōu)先級(jí)判定表OSUnMapTbl原理

OSOSRdyTbl[0]的bit7-bit0對(duì)應(yīng)于優(yōu)先級(jí)7-0, 
OSOSRdyTbl[1]的bit7-bit0對(duì)應(yīng)于優(yōu)先級(jí)15-8,
OSOSRdyTbl[2]的bit7-bit0對(duì)應(yīng)于優(yōu)先級(jí)23-16, 
OSOSRdyTbl[3]的bit7-bit0對(duì)應(yīng)于優(yōu)先級(jí)31-24, 
OSOSRdyTbl[4]的bit7-bit0對(duì)應(yīng)于優(yōu)先級(jí)39-32, 
OSOSRdyTbl[5]的bit7-bit0對(duì)應(yīng)于優(yōu)先級(jí)47-40, 
OSOSRdyTbl[6]的bit7-bit0對(duì)應(yīng)于優(yōu)先級(jí)55-48, 
OSOSRdyTbl[7]的bit7-bit0對(duì)應(yīng)于優(yōu)先級(jí)63-56 
OSRdyGrp確定了優(yōu)先級(jí)的次低三位(bit5-bit3),OSOSRdyTbl確定了優(yōu)先級(jí)的低三位(bit2-bit0), 

OSRdyGrp = 0x011;  //0b00010001 
OSRdyTbl[0] = 0x0a; //0b00001010 
OSRdyTbl[4] = 0x01; //0b00000001 
計(jì)算出存在的幾個(gè)優(yōu)先級(jí)為;0*8+1=1,0*8+3=3,4*8+0=32 
假設(shè)OSRdyGrp最低位為1的是X位,OSRdyTbl[X]最低為1的是Y位, 
則優(yōu)先級(jí)=X*8+Y 
因此只要知道了上述的X,Y就可算出最高優(yōu)先級(jí) 
OSUnMapTbl就是將0x00-0xff每個(gè)數(shù)據(jù)中最低位為1的位數(shù)一一列舉出來(lái) 
INT8U  const  OSUnMapTbl[256] = { 
    0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x00 to 0x0F                             */
    //OSUnMapTbl[0]     
    //OSUnMapTbl[1]    1        bit0        
    //OSUnMapTbl[2]    2        bit1  
    //OSUnMapTbl[3]    3        bit0  
    //................ 

    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x10 to 0x1F                             */
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x20 to 0x2F                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x30 to 0x3F                             */
    6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x40 to 0x4F                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x50 to 0x5F                             */
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x60 to 0x6F                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x70 to 0x7F                             */
    7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x80 to 0x8F                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x90 to 0x9F                             */
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xA0 to 0xAF                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xB0 to 0xBF                             */
    6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xC0 to 0xCF                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xD0 to 0xDF                             */
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xE0 to 0xEF                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0        /* 0xF0 to 0xFF                             */
};
 
OSUnMapTbl數(shù)組中元素OSUnMapTbl[n]表示一個(gè)任意的8位無(wú)符號(hào)數(shù)n對(duì)應(yīng)的最低位為1的那個(gè)最低位數(shù),例如二進(jìn)制數(shù)00000001B最低位為1的是bit0,如是OSUnMapTbl[00000001B] = 0,
又例如1000000B最低位為1的是bit7,所以O(shè)SUnMapTbl[10000000B] = 7,及OSUnMapTbl[128]也就是上面OSUnMapTbl第9行第一列為7.


X = OSUnMapTbl[OSRdyGrp]; 
Y = OSUnMapTbl[OSRdyTbl[X]]; 
最高優(yōu)先級(jí)為X*8+Y
 

1.      任務(wù)優(yōu)先級(jí)表是按照由左至右,由上至下的順序增長(zhǎng)的,且優(yōu)先級(jí)號(hào)越小優(yōu)先級(jí)越高。

2.      任務(wù)優(yōu)先級(jí)存儲(chǔ)在一個(gè)字節(jié)型數(shù)組里,數(shù)組大小為8,其還有一個(gè)行表,即一個(gè)字節(jié)單元,用于確定在數(shù)組的哪行有任務(wù)。

3.      任務(wù)優(yōu)先級(jí)由一個(gè)字節(jié)的低6個(gè)bit組成,其最低優(yōu)先級(jí)為2^6-1 = 63(優(yōu)先級(jí)范圍為0~63),其中高3bit對(duì)應(yīng)行表,低3bit對(duì)應(yīng)數(shù)組中某字節(jié)單元。

4.      位掩碼OSMapTbl[8],下標(biāo)0~7對(duì)應(yīng)值00000001、00000010、00000100、00001000、00010000、00100000、01000000、10000000,其作用是屏蔽其他bit值,下標(biāo)0~7對(duì)應(yīng)行表(高3位)和優(yōu)先級(jí)表(低3位)。

5.      OSUnMapTbl[]數(shù)組用于查找最高優(yōu)先級(jí),其經(jīng)過精心設(shè)計(jì)。

首先,找行表值在OSUnMapTbl[]中的對(duì)應(yīng)位置的值x

然后,找優(yōu)先級(jí)表第x行值在OSUnMapTbl[]中對(duì)應(yīng)位置的值y

—查找方法:由于行表值為8bit,則高4bit對(duì)應(yīng)OSUnMapTbl[]中行值,低4bit對(duì)應(yīng)OSUnMapTbl[]中列值;對(duì)應(yīng)優(yōu)先級(jí)表查找方法同行表查找方法。

最后,prio = x<<3 + y。

注:OSUnMapTbl[]數(shù)組構(gòu)造方法:

--由優(yōu)先級(jí)表的構(gòu)造,即越靠左越靠上的優(yōu)先級(jí)越高可知:

1.低4bit無(wú)值,那么就高4bit的最低為1值的位確定-例:0000-0, 0001-4, 0010-5,0011-4……

2.低4bit有值,那么就低4bit的最低為1值的位確定-例:00000000-0,10010001-0,00111010-1,00001011-0……

3.由1和2有第1列值為0,4,5,4,6,4,5,4,7,4,5,4,6,4,5,4;第2列全為0,第3列全為1,第4列全為0,第5列全為2,第6列全為0,第7列全為1,第8列全為0,第9列全為3,第10列全為0,第11列全為1,第12列全為0,第13列全為2,第14列全為0,第15列全為1,第16列全為0。


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
μC/OS
UcosII 就緒表的理解
UCOS-II 中優(yōu)先級(jí)的運(yùn)算
uC/OS-II源碼分析(五) 優(yōu)先級(jí)等級(jí)
μC/OS Ⅱ之任務(wù)就緒表的操作
優(yōu)先級(jí)位圖算法詳解
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服