歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

內核搶占的理解

內核是否能被搶占在內核編譯的時候是可選的,看了《深入理解Linux內核》一書,作者認為很難對內核搶占下一個定義,我也不想強行下一個定義,始終是新手嘛,那就說一下內核搶占的現象,通過現象來理解內核搶占機制

內核搶占的一個現象:正在內核態運行的進程。可能在運行期間被另外一個進程替代。

深入理解Linux內核(第三版)(英文版+中文版)  下載見 http://www.linuxidc.com/Linux/2011-08/41228.htm

上述現象是允許內核搶占的情況,但並不能說內核搶占就是上述現象,大家都知道在執行中斷處理程序的時候,是不能被別的進程搶到當前中斷處理程序擁有的cpu的,這就是個例外。

總結一下,在允許內核搶占的情況下,下列情況不允許內核搶占:

  1. 內核正在執行中斷處理程序
  2. 可延遲函數被禁止(當內核在執行軟中斷或tasklet的時候時常如此)
  3. 直接把搶占計數器preempt_count置為正數,從而顯式的進制內核搶占

關於內核搶占計數器變化之後的調度詳見下圖

Copyright © Linux教程網 All Rights Reserved