作業系統學習–CPU調度(2)

來源:互聯網
上載者:User

CPU調度,是多道程式作業系統的基礎。

電腦的吞吐率指的是電腦在單位時間內所處理的進程數。

CPU調度,通過在進程之間切換CPU,從而提高電腦的輸送量。

我們知道進程的執行包括CPU執行和I/O等待周期,進程需要在這兩種狀態下不斷切換。

CPU的調度從總體上來說出現在下面四種情況下:

(1)   當一個進程從運行狀態切換到等待狀態;

(2)   當一個進程從運行狀態切換到就緒狀態;

(3)   當一個進程從等待狀態切換到就緒狀態;

(4)   當進程運行終止時;

對於上述四種情況,其中第(1)和(4)種情況只存在進程的選擇問題,一個新的進程必須被選擇執行。

現如今有很多的CPU調度演算法,那麼不同調度演算法具體效果如何,我們需要有一些評判標準,下面是一些判斷的標準:

(1)   CPU的利用率。我們需要CPU能夠儘可能高的得到使用。

(2)   輸送量。電腦在一個時間單元內所能完成的進程數量。

(3)   周轉時間。一個進程從提交到最終執行完成所需要的時間稱為周轉時間。

(4)   等待時間。指的是進程在就緒隊列中等待所花的時間。

(5)   回應時間。指的是進程從提交到產生第一響應的時間。

下面說說常見的CPU調度演算法。

(1)   先到先服務調度演算法(FCFS,first-come first served)

顧名思義,就是誰先來就先執行誰。該演算法是非搶佔的,即一旦CPU被分配給了某個進程,那麼必須等到這個進程終止或是進入等待狀態才能將CPU釋放分配給其他的進程使用。對於這個調度演算法,如果最先到的是個需要CPU區間長度較長的進程,後面跟了幾個CPU區間長度較短的進程,那麼這些較短的進程就必須等待那個長進程執行完以後才能執行,因為是非搶佔的,所以平均的等待時間就會很長。

(2)   最短作業優先調度(shortest-job-first,SJF)

針對上面FCFS提到的問題,我們可以使用最短作業優先調度來解決。這種調度是一種優先順序調度,是按照CPU區間長度來進行優先順序的劃分的。該調度演算法總是讓具有最短CPU區間長度的進程優先執行。該演算法的困難在於如何知道下一個CPU區間的長度。SJF經常用於長期調度。

(3)   優先順序調度(priority scheduling algorithm)

優先順序調度是為每個進程都分配一個優先順序別,高優先順序進程會先於低優先順序進程執行,具有相同優先順序的進程採用FCFS調度演算法進行調度。優先順序調度可以是搶佔的也可以是非搶佔的。當一個進程到達就緒隊列後,會跟正在啟動並執行進程的優先順序進行比較,如果新到的進程優先順序高於正在運行進程的優先順序,那麼搶佔優先順序調度會搶佔CPU,而非搶佔優先順序調度會將該新進程添加到就緒隊列的頭部。優先順序調度的一個主要問題是無窮阻塞或者饑餓。因為低優先順序層級的進程可能會出現一直不被執行的狀況。解決該問題的方法就是老化。老化是一種技術,它用於不斷提高在系統中等待時間很長的進程的優先順序。從而使得該進程能夠有機會被執行。

(4)   輪轉調度(round-robin scheduling algorithm)

輪轉調度是專門為分時系統設計的。在該調度演算法中引入了時間片的概念,時間片一般在10~100ms。將就緒隊列設計為一個迴圈隊列。調度演算法迴圈遍曆就緒隊列中的每一個進程,為每一個進程分配一個時間片,如果再該時間片內進程完成,則順序遍曆下一個進程就緒執行,如果再該時間片內進程未完成,則將進程添加到就緒隊列的尾部,並進行環境切換選擇就緒隊列中的下一個進程進行執行。輪轉調度演算法的效能很大程度上依賴於時間片的大小,一般時間片的長度要大於環境切換的時間,但也不能太大,否則輪轉調度就轉換為FCFS調度演算法了。

(5)   多級隊列調度

按照不同進程的不同調度需要,我們可以將就緒隊列分成若干個不同的獨立隊列,每個隊列都有自己的調度演算法。

(6)   多級反饋隊列調度

在多級隊列調度演算法中,進程會被分配給一個隊列,並且這種分配是永久性的,不能從一個隊列轉移到另外一個隊列,這種設定的優點是調度開銷較低,但是不夠靈活,與這種調度演算法相反的是多級反饋隊列調度演算法,該演算法允許在進程在隊列之間移動。其思想是當一個進程使用過多的CPU時間時,它會被轉移到更低的優先順序隊列中區。在較低優先順序隊列中等待較長時間的進程會被轉移到較高的優先順序隊列中去,這樣做是為了防止無窮阻塞或者饑餓現象的發生。

到此為止,我想你對CPU調度大概有所瞭解了吧,想要瞭解詳情,還得自己看書啊呵呵。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.