2013-07-04 94 views

回答

1

不,它們可以在你允許睡覺的任何內核環境中使用。例如,內核線程可能會做down()。當然,定時器功能不能,因爲down()可能會睡眠。您絕對不需要直接處理系統調用。

順便說一句,在現代內核,struct mutexmutex_lock()是首選struct semaphore併除外,你真正需要的計數信號,還是需要從不同的環境比在那裏獲得釋放信號量的情況下down()

0

不一定。除了中斷上下文之外,您可以嘗試鎖定內核中的任何位置的信號量。沒有獲得一個信號量會讓你的任務進入睡眠狀態,你不能讓你的中斷處理程序進入睡眠狀態並導致死鎖。

您可以使用