Linux內核-內核同步

1、內核

看做是不斷對請求進行響應的服務器

內核服務

2 內核搶佔

內核搶佔特點:一個內核態運行的進程,可能在執行內核函數期間被另外一個進程取代

用戶搶佔:內核即將返回用戶空間的時候,如果need resched標誌被設置,會導致schedule()被調用,此時就會發生用戶搶佔。在內核返回用戶空間的時候,它知道自己是安全的。所以,內核無論是在從中斷處理程序還是在系統調用後返回,都會檢查need resched標誌。如果它被設置了,那麼,內核會選擇一個其他(更合適的)進程投入運行。

簡而言之,用戶搶佔在以下情況時產生

1從系統調返回用戶空間

2從中斷處理程序返回用戶空間

內核搶佔目的:

       減少用戶態進程的分派延遲diapatch tatency,即從進程變爲可執行狀態到它實際開始運行之間的時間間隔。

什麼情況不允許內核搶佔:當被current_thread_info()宏所引用的thread_info描述符的preempt_count字段大於0時,就禁止內核搶佔。

 

 

內核搶佔時機:只有當內核正在執行異常處理程序(尤其是系統調用),而且內核搶佔沒有被顯式的禁用時(即preempt_count=0),纔可能搶佔內核。本地CPU必須打開本地中斷,否則無法完成內核搶佔。 

 

 3 同步原語

 

                     

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章