linux内核信号的实现原理?
生活随笔
收集整理的這篇文章主要介紹了
linux内核信号的实现原理?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
從最初的原子操作,到后來的信號量,從大內核鎖到今天的自旋鎖。這些同步機制的發展伴隨Linux從單處理器到對稱多處理器的過渡;伴隨著從非搶占內核到搶占內核的過度。Linux的鎖機制越來越有效,也越來越復雜。Linux的內核鎖主要是自旋鎖和信號量。自旋鎖最多只能被一個可執行線程持有,如果一個執行線程試圖請求一個已被爭用(已經被持有)的自旋鎖,那么這個線程就會一直進行忙循環——旋轉——等待鎖重新可用。要是鎖未被爭用,請求它的執行線程便能立刻得到它并且繼續進行。自旋鎖可以在任何時刻防止多于一個的執行線程同時進入臨界區。Linux中的信號量是一種睡眠鎖。如果有一個任務試圖獲得一個已被持有的信號量時,信號量會將其推入等待隊列,然后讓其睡眠。這時處理器獲得自由去執行其它代碼。當持有信號量的進程將信號量釋放后,在等待隊列中的一個任務將被喚醒,從而便可以獲得這個信號量。
總結
以上是生活随笔為你收集整理的linux内核信号的实现原理?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车子改色贴膜以后能通过年审吗?
- 下一篇: spinlock和Semaphore信号