linux内核杂记(10)-进程调度(5)
生活随笔
收集整理的這篇文章主要介紹了
linux内核杂记(10)-进程调度(5)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、用戶搶占
1、用戶搶占時機
從系統調用返回用戶空間
從中斷處理程序返回用戶空間
2、檢查標志
內核返回后檢查need_resched標志
如果被設置了,內核會選擇一個更適合的進程投入進行
3、返回路徑與代碼
在entry.S匯編代碼中,實現了 返回路徑,并且還實現了內核入口部分程序、內核退出部分的相關代碼。
二、內核搶占
1、LINUX完整支持內核搶占
調度程序可在一個內核級任務執行時打斷它,并重新調度,否則內核要執行完成或遇到阻塞為止,在2.6版的內核中引入了搶占能力。
2、搶占時機
(1)沒持有鎖,內核就可以進行搶占,鎖是非搶占區域的標志
(2)為了完成鎖機制了,引入了preempt_cunt計數器,在進程的thread_info中。
(3)preempt_cunt加1表示加鎖,減1表示釋放鎖。為0時表示沒有持有鎖,此時,如果need_resche設置,則內核程序可被安全搶占
(4)內核搶占發生在以下時候:
中斷處理程序正在執行,且返回內核空間之前
內核代碼 再一次具有可搶占性的時候
如果內核任務顯式調用 schedule()
如果內核任務阻塞,導致調用 schedule()
總結
以上是生活随笔為你收集整理的linux内核杂记(10)-进程调度(5)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java容器解析——HashMap
- 下一篇: linux内核杂记(11)-进程调度(6