1
如果一個進程在信號量上等待並且不成功(因爲信號量的值最初爲0),我知道進程被阻塞(進入睡眠模式?)。誰在信號量值大於0時喚醒進程? 此操作系統是否特定?如果是,那麼POSIX信號如何表現?誰喚醒了一個被阻塞的進程,因爲它在信號量上執行等待失敗?
如果一個進程在信號量上等待並且不成功(因爲信號量的值最初爲0),我知道進程被阻塞(進入睡眠模式?)。誰在信號量值大於0時喚醒進程? 此操作系統是否特定?如果是,那麼POSIX信號如何表現?誰喚醒了一個被阻塞的進程,因爲它在信號量上執行等待失敗?
我想這是特定於操作系統,但沒有看到很多方法。
例如在Linux上,在信號量上執行up
會喚醒等待的任務(查找等待隊列)並將其標記爲可運行。調度程序然後決定運行哪個任務(如果有的話)。
對於POSIX信號量,這是否屬實? – 2012-02-23 09:22:19
@ajaybidari呃,這不是真的功課。 – cnicutar 2012-02-23 09:22:58
感謝您的回覆,但這不是作業問題。我在窗戶上檢查過它。 ** up **的過程使得睡眠過程可以運行。我想確保當信號值爲0時進程是否忙於等待。 – 2012-02-23 09:24:36