2009-04-29

4/29 OS上課筆記

interrupt under uC/OSII

p.62

這個地方用驅動程式底層當例子。

基本上很難看出有interrupt過,除非詳細看過時間。

使中斷enable的code出現在程式開始沒多少。


水藍色:

橘紅色:



(2)的OSInNesting是因為中斷可巢狀,但在OSInNesting==1才需要寫irt。

排程器如果發現目前task和要切過去的task相同,則直接return,不動作。跳(8)

(5)中斷

(6)沒有這行就不能巢狀中斷

同一類的中斷不要用nesting發生第二次,會rest condition。因為重要性一樣,就FIFO就好了。


巢狀是為了在優先權低的中斷發生時,讓高權重的中斷可以搶先。

通常低優先權的中斷不能在高優先權中段時搶先,不論軟硬體皆然。不過也只是"通常"。

例外:Timer沒那麼重要,但是對系統架構很重要,所以可搶先。



窩窩窩喔喔 ch3結束



ch4開始


規定"ISR內不可以create task"

OSTCBInit()用來填參數,沒有就塞0。

OSTaskCreatHook() 方便大家使用的plug-in,本身就是空的大括號。

2009-04-13

4/13 OS上課筆記

heap uc/osII
ins O(logN) O(1)
del O(logN) O(1)
min O(logN) O(1)

why 查表? 因為用雙for loop時間複雜度會變高。

2009-04-08

4/08 OS上課筆記

p.34~35

全部都放在critical section內一定不會出錯(沒保護到),但是在多序執行時速度會變慢,網路傳輸狀況就是封包會掉。

這邊的保護可否用semephor來取代?

DI semlock EI semunlock
台灣的劉小姐:最好不要,因為.....

重點:要保護的東西在哪?有誰會讀取?
這邊的物件在ready queue內,只有ap本身可以存取。

後面這邊(p.35)
老師認為不可以
ISR結束後會去抓,.....


Linux:比較短的寫在前面,比較長的寫後面。方便閱讀。


p.36
Ready Queue

p.37
電腦如何知道在表中找到ready(1)者?
1)for loop

p.40 41
會考算法,必考。