標籤:必須 決策 linux進程 如何 其他 解決辦法 algorithm cfs演算法 阻塞
一 基本概念
1 隊列中的記錄通常是進程的進程式控制制塊。
2 CPU調度決策可在如下四種環境下發生a 當一個進程從運行狀態切換到等待狀態 例如,I/O請求或調用wait以等待一個子進程的終止b 黨一個進程從運行狀態切換到就需狀態 例如,當出現中斷c 當一個進程從等待狀態切換到就需狀態 例如,I/O完成d 當一個進程終止
當調度只能發生在第一和第四種種情況時,稱調度方案是非搶佔的,否則調度方案是可搶佔的。
採用非搶佔調度,一旦CPU被分配給一個進程,那麼該進程會一直使用CPU直到進程終止或切換到等待狀態時釋放CPU
3 指派程式功能包括:切換環境切換到使用者模式跳轉到使用者程式的合適位置以重新啟動這個程式
二 調度準則CPU使用率: 40%到90%
輸送量:一個時間單元內所完成進程的數量。
周轉時間:從進程提交到進程完成的時間間隔稱為周轉時間。周轉時間是所有時間段之和,包括等待進入記憶體、在就緒隊列中等待
,在cpu上執行和I/O執行
等待時間:CPU調度演算法並不影響進程運行和執行I/O的時間量。它隻影響進程在就需隊列中等待所花費的時間。
回應時間:從提交請求到產生第一響應的時間。是開始響應所需要的時間,而不是輸出該響應所需要的時間。
CPU使用率和輸送量最大化,周轉時間、等待時間和相應時間最小化
三 CPU調度演算法
1 先到先服務調度FCFS(first-come,first-served)當一個進程進入到就需隊列,其pcb就被連結到隊列的尾部,當CPU空閑時,CPU被分配給位於隊列頭的進程。接著,該運行進程從隊
列中被刪除。
FCFS策略的平均等待時間相當長
FCFS調度演算法是非搶佔式的。
2 最短作業優先調度SJF(shortest-job-first)SJF演算法的真正困難時如何知道下一個CPU請求的長度。SJF調度經常用於長期調度。
3 優先權調度每個進程都有一個優先權與其關聯,具有最高優先權的進程會被分配到CPU。具有相同優先權的進程按FCFS順序調度。
優先權可以通過內部或外部方式來定義。
優先權調度可以使可搶佔的或者非搶佔的。
優先權調度演算法的一個主要問題是無窮阻塞。解決辦法是老化,老化是一種技術,以逐漸增加在系統中等待很長時間的進程的優先
權。
4 輪轉法調度輪轉法(RR)調度演算法是專門為分時系統設計的。定義一個小時間單元,稱為時間量或時間片。時間片通常為10ms到100ms。就緒隊
列作為迴圈隊列處理。CPU發送器迴圈就需隊列,為每個進程分配不超過一個時間片間隔的CPU。
如果環境切換時間約為時間片的10%,那麼約10%的CPU時間會浪費在環境切換上。
5 多級隊列調度(multilevel queue-scheduling algorithm)不同隊列可用於前台和後台進程,前台隊列可能使用RR演算法調度,而後台隊列可能使用FCFS演算法調度。
6 多級反饋隊列調度對於多級隊列調度演算法,通常進程進入系統時,被永久地分配到一個隊列,進程並不在隊列之間移動。
四 多處理器調度
堆成多處理器非對稱式多處理器
五 即時調度即時計算分為兩種類型:硬即時,軟即時硬即時:系統需要在保證的時間內完成關鍵任務。通常,在提交進程時,同時有一條語句告訴系統用來完成或執行I/O所需要的時間
。軟即時:要求關鍵進程要比其他較弱進程擁有更高的優先權。實現軟即時要求自習設計發送器和作業系統的有關方面:第一,系統必須有優先權調度,且即時進程必須有最高的優先權。即時進程的優先權不隨時間而下降,儘管非即時進程的優先權可
以。第二,分配延遲必須小
指派程式停止一個進程而啟動另一個進程執行所需要花費的時間成為指派延遲
六 linuxlinux提供了兩種獨立進程調度演算法。一種是分時演算法,用於在多個進程之間進行公平可搶佔調度一種是為即時任務設計的,linux只允許在使用者模式下啟動並執行進程被搶佔
第一種調度類型是用於分時進程的,對於傳統的分時進程,linux使用了優先權的、基於信用度的演算法。每個進程都有一定數量的調
度信用度,黨要選擇一個新任務運行時,具有最多信用的進程會被選擇。每次出現定時器中斷時,當前運行進程會失去一個信用,
黨其信用為0時,它會被暫停且另一個進程會被選擇。
linux使用兩種即時調度類型:先到先處理和輪轉。
時間片輪轉(RR)調度對於分時系統更為適合。FCFS演算法是非搶佔的,RR演算法是可搶佔的。SJF和優先順序演算法可以使可搶佔的也可以使非搶佔的。
多級隊列演算法允許多個不同演算法用於各種類型的進程,最為常用的是前台互動隊列(RR)和後台批處理隊列(FCFS)。多級反饋隊
列允許進程在隊列之間遷移。
solaris 2和windows2000都採用可搶佔的、基於優先順序的調度演算法,包括支援即時線程,來調度線程linux進程發送器也使用基於優先順序的演算法,並提供即時支援。
作業系統概念學習筆記三 cpu調度演算法