就續表之我見

2021-04-28 05:22:10 字數 1386 閱讀 7426

就續表之我見

理解三個變數:

osrdygrp

、osrdytbl

、osmaptbl

所謂就緒表,就是定義了兩個變數,

osrdygrp

是組向量,它就是乙個八位二進位制數(如:

10000100

),osrdytbl

是位向量,它就是乙個有八個元素的陣列,每個元素也是乙個八位二進位制數(如:

01100100

),osmaptbl是uc

為加快運算速度定義的乙個陣列,每個元素也是乙個八位二進位制數(為啥說它就加快運算了呢?若我們想使某個任務就緒,我們要把

osrdygrp

、osrdytbl

的某位上置

1,正好與2的

n次方(如

00000010是2

的1次方)相「或」,而

uc把用到的八個值計算好了存放在乙個陣列裡,用的時候只需要查就行了)

想讓乙個任務就緒:

osrdygrp |= osmaptbl[prio>> 3];

osrdytbl[prio>> 3] |= osmaptbl[prio & 0x07]

我們來看,乙個任務優先順序將它化成二進位制數,它的低三位與它在哪一組沒有任務關係!因為逢八才換組,而低三位最大才是七!但它能決定這個任務在一組的某個地方(即能決定

x的值)而它的接下去三位與它在一組中的哪個位置沒有任何關係!因為去掉低三位,接下去三位始終是八的倍數,始終指向組的首位址!但它能決定

y的值!這樣,在乙個矩陣中,

x的值和

y的值都決定了,那麼這個任務所在的位置就決定了。這樣,使乙個任務進入就緒狀態和脫離就緒狀態也就簡單了。

讓任務脫離就緒狀態:

if((

osrdytbl[prio>> 3] &= ~osmaptbl[prio & 0x07]

)== 0x00

)osrdygrp &= ~osmaptbl[prio >> 0]

找出處於就緒狀態的優先順序最高的任務:

y = osunmaptbl[osrdygrp];

x = osunmaptbl[osrdytbl[y]];

prio = y << 3 + x ;

如果不用查表的話,如入是

osrdygrp = 00000010

,osrdytbl = 00010000

,通過觀察可以口算出

prio = 8*1 + 4 = 12

,即:osrdygrp

右移一位得到1,

osrdygrp右移4

位得到1

osunmaptbl

如何確定的呢??????????????????????????

佈線之我見

前段時間參與了網路實驗室的整個實施過程,有些感想,在此涼涼,一起學習下。在這之前,佈線給我的認識就是 網線連電腦,通了就成!現在看來我真是把機房佈線想的過於簡單了。事實上機房建設是一項集網路技術 裝飾 安全防範 防火 抗乾攏等多學科的綜合系統工程,在實施的過程中,不光要講究能保證業務,更要講究美觀與...

需求之我見

更換手機,前乙個手機花了不少錢,但是用的不爽,介面難看 電池用的快 訊號不好 攝像頭畫素低 掉漆快,任何乙個小小的問題點,都成為了我不再使用這個品牌的理由。低階 花很多錢,還受氣 在親自辦理寬頻的過程中,電信提出了強制打包的其他產品,比如 我只要寬頻,卻推出寬頻 網路電視的 除此之外沒有其他 買不買...

看書之我見

宋皇帝趙恆說過 富家不用買良田,書中自有千鍾粟 安居不用架高堂,書中自有 屋 出門莫恨無人隨,書中車馬多如簇 娶妻莫恨無良媒,書中自有顏如玉 男兒若遂平生志。六經勤向窗前讀。表示的意思是 讀書考取功名是當時人生的一條絕佳出路,考取功名後,才能得到財富和美女。可是書中真的有 屋嗎?真的有顏如玉嗎?我暫...