優先順序判定表解讀

2021-06-07 07:29:46 字數 1440 閱讀 5463

優先順序判定表osunmabtbl,其內容如下:

int8u  const  osunmaptbl = {

0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,  

5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 

因為8位引數的取值為0—255,所以它一共有256個值。陣列的下標是優先順序,8位正好256個狀態,256個下標。每個下標對應的數字的第幾個二進位制數字先是一,就為幾(因為這個是我們最關心的).例如

1二進位制表示為00000001,第0個數字為1,就為0;

2二進位制表示為00000010,第1個數字為1,就為1;

3二進位制表示為00000011,第0個數字為1,就為0;

4二進位制表示為00000100,第3個數字為1,就為3;

依次類推,當8位引數(n)最低位為1時,即奇數的表示都為0.

此表作用是找出8位引數中邏輯1所在的最低位,即將8位引數轉換為二進位制,然後從第0為開始查詢,看第幾位首先出現邏輯1。此表中元素的取值從0—7,用其查詢最高優先順序任務的演算法如下:

y  =osunmaptbl[osrdygrp];

x  =osunmaptbl[osrdytbl[y]];

prio =(y<<3)+x;

解讀uCos中優先順序判定表OSUnMapTbl原理

ososrdytbl 0 的bit7 bit0對應於優先順序7 0,ososrdytbl 1 的bit7 bit0對應於優先順序15 8,ososrdytbl 2 的bit7 bit0對應於優先順序23 16,ososrdytbl 3 的bit7 bit0對應於優先順序31 24,ososrdytb...

python優先順序佇列 python 優先順序佇列

簡介 優先順序佇列是基於堆的,關於堆的時候可以參考文章堆,優先順序佇列就是入隊時,會分配乙個優先順序,之後出隊時,根據優先順序出列。如,入隊時 4,a 6,r 3 d 則出隊順序 6,r 4,a 3 d 優先順序佇列的python實現 class priorityqueue object def i...

Linux程序優先順序和調整優先順序

linux 是乙個多使用者 多工的作業系統,系統中通常執行著非常多的程序。但是 cpu 在乙個時鐘週期內只能運算一條指令 現在的 cpu 採用了多執行緒 多核心技術,所以在乙個時鐘週期內可以運算多條指令。但是同時運算的指令數也遠遠小於系統中的程序總數 那問題來了 誰應該先運算,誰應該後運算呢?這就需...