Linux中什麼情況下會發生程式排程?

老男孩IT教育機構發表於2022-10-14

  程式排程是指作業系統按某種策略或規則選擇程式佔用CPU進行執行的過程。那麼Linux中什麼情況下會發生程式排程?以下是詳細的內容介紹。

  Linux的排程程式是一個叫Schedule()的函式,由它來決定是否要進行程式的切換。而所謂的排程時機則是在什麼情況下執行排程程式。

  Linux程式排程採用的是搶佔式多工處理,所以程式之間的掛起和繼續執行無需彼此之間的協作。

  主要分為以下幾種情況:

  1、程式狀態轉換的時刻:程式終止、程式睡眠

  程式要呼叫sleep()或exit()等函式進行狀態轉換,這些函式會主動呼叫排程程式進行程式排程。

  2、當前程式的時間片用完時(current->counter=0)

  由於程式的時間片是由時鐘中斷來更新的,因此,這種情況和時機4是一樣的。

  3、裝置驅動程式

  當裝置驅動程式執行長而重複的任務時,直接呼叫排程程式。在每次反覆迴圈中,驅動程式都檢查need_resched的值,如果必要,則呼叫排程程式schedule()主動放棄CPU。

  4、程式從中斷、異常及系統呼叫返回到使用者態時

  不管是從中斷、異常還是系統呼叫返回,最終都呼叫ret_from_sys_call(),由這個函式進行排程標誌的檢測,如果必要,則呼叫排程程式。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2918329/,如需轉載,請註明出處,否則將追究法律責任。

相關文章