2009年6月18日 星期四

OSSemPend()

OSEventCnt=1

task到kernel中執行完此event再回到user mode下繼續執行


前提: task 2已經進入critical section, OSEventCnt=0,

因為OSEventCnt=0, 讓task 1進入waiting狀態 並觸發sched() 把控制權交給task 2

等待task 2執行完, 呼叫sched() 讓task 1繼續執行


前提: task 2已經進入critical section 且沒有動作, OSEventCnt=0,

因為OSEventCnt=0, 所以task 1進入waiting狀態,

又因為task 2一直沒有動作, 所以最後task 1被timer叫醒

回到user mode

沒有留言:

張貼留言