2009-05-11

5/11 OS上課筆記

如果有一段critical section的程式碼太長,會有task被暫停過長、IO效率低落等後果。

DI

preemption point : INT/HPT(hight priority task)

EI

TaskDelete
1) 為了刪掉task 把狀態設為ready 這樣就不會被rusume叫起來繼續執行
   (髒寫法:和原來意思南轅北轍)
2)



os ctrtical section太常對系統效能不好

至於kernel tast允不允許nesting interrupt巢狀中斷,要看對kernel的設計。



當A把B殺掉後不需要重新排程,A不等於B。
因為A還在執行,最高先權還是他,所以不用排。

換言之,只有自殺才需要重新排成,因為現在執行的位置空出來了。



但是自殺也有好處,因為如果是threed自殺,會順便free掉占用的resource。
另外直接讓A砍掉B也會有問題,因為那些佔用的資源還沒有終止。


while loop內要寫一個OsTimeDelay,不然大者恆大!!



五哥曰:要理解一下喔
OS:i well try to...



傳參數進去判斷是誰要他掛:自己、TaskMenerger、HighPriorityTask

刪完之後要記得跑os_tcb,把waiting/reacy queue還有其他東西都重新整理。


將複雜運算提到criticl section外,縮短長度。


必須等到所有的事件都發生了才可以執行。

沒有留言:

張貼留言

Check for typo before sending