首頁  >  文章  >  處理器調度的最小單位

處理器調度的最小單位

(*-*)浩
(*-*)浩原創
2019-10-26 10:59:0810012瀏覽

CPU調度的基本單位是是執行緒。執行緒是作業系統能夠進行運算調度的最小單位。

處理器調度的最小單位

一條線程指的是進程中單一順序的控制流,一個進程中可以並發多個線程,每個線程並行執行不同的任務。在Unix System V及SunOS中也稱為輕量級進程(lightweight processes),但輕量進程更指核心執行緒(kernel thread),而把用戶執行緒(user thread)稱為執行緒。 (推薦學習:web前端影片教學

CPU調度程式

每當CPU空閒時,操作就必須從就緒佇列中選擇一個行程來執行。進程選擇由短期調度程序(short-term scheduler)或CPU調度程序執行。調度程序從核心中選擇一個能夠執行的進程,並為此分配CPU。

就緒佇列不必是先進先出(FIFO)佇列。就緒佇列可實作為FIFO佇列,優先佇列,樹或簡單的無序鍊錶。不過從概念上來說,就緒佇列內的所有行程都要排隊等待在CPU上執行。佇列中的記錄通常為進程控制區塊(PCB)。

搶佔調度

CPU調度決策可在以下4種環境下發生:

當一個行程從執行狀態切換到等待狀態(例如,I/O請求,或呼叫wait等待一個子程序的終止)。

當一個行程從運作狀態切換到就緒狀態(例如,當出現中斷時)

當一個行程從等待狀態切換到就緒狀態(例如,I/O完成)

當一個行程終止

對於第1和第4兩種情況,沒有選擇而只有調度。一個新進程(如果就緒佇列中已有一個程序存在)必須被選擇執行。不過,對於第2和第3兩種情況,可以進行選擇。

當調度只能發生在第1和第4兩種情況下時,稱調度方案是非搶佔的(nonpreemptive)的或協作的(cooperative);否則,稱調度方案是搶佔的(preemptive )。採用非搶佔調度,一旦CPU分配給一個進程,那麼該進程就會一直使用CPU知道進程終止或切換到等待狀態。

中斷能隨時發生,而且不能總是被核心所忽視,所以受中斷影響的程式碼片段必須加以保護以避免同時存取。為了這些程式碼段不被多個進程同時訪問,在進入時要禁止中斷,而在退出時要重新允許中斷。

以上是處理器調度的最小單位的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn