1. 程式人生 > >計算機作業系統-程序的排程演算法

計算機作業系統-程序的排程演算法

先宣告下:

      引入程序:為了描述和實現多個程式的併發執行,以改善資源利用率,即提高系統的吞吐量

     引入執行緒:減少程式併發執行時系統所付出的額外開銷,使作業系統具有更好的併發性


程序的排程是程序併發控制的關鍵環節之一。

為了使計算機系統內的多個程序協調,高效的執行,並且最大限度的提高系統的資源利用率(比如處理器,I/O,記憶體,暫存器等)。我們必須在系統的若干程序中選擇出哪些程序先執行,哪些後執行,並且被選到的程序應該執行多長時間,何時進行程序切換,何時讓新程序獲得處理機等操作。


為了解決以上問題,我們需要一個好的排程演算法,來滿足計算機系統的要求。


該演算法需要滿足以下條件:

1、防止程序長期不能獲得排程

2、儘量提高處理機的利用率

3、提高系統的吞吐量

4、儘量減少程序的響應時間

註釋:

系統的吞吐量:單位時間內系統執行的作業數,常用來評價系統的效能


按照排程的層次,分為長程排程,中程排程,短程排程以及I/O排程。

長程排程:它為被排程作業或使用者程式建立程序,分配必要的系統資源,並將新建立的程序差勁就緒佇列,等待短程排程和中程排程。

短程排程:決定就緒佇列中哪個程序將獲得處理機

中程排程:它是對換功能的一部分,當記憶體不足時,換出一個程序到外存;記憶體充足,換入一個程序進來


下面介紹幾種經典的排程演算法

1、時間片輪轉排程法

系統給每個就緒的程序分配一個時間片,當某就緒程序獲得主機時,允許它執行一個時間片的時間。若程序未執行完,強行剝奪其處理器使用權,將該程序插入到就緒佇列的隊尾。

適用:分時系統及事物處理系統

合理的時間片:能讓80%左右的程序在一個時間片內完成

對於短的,計算性的程序有利,但不適合i/o型的程序

改進方法:將i/o阻塞事件的程序單獨組織一個就緒佇列


2、先來先服務(FCFS)

先來的程序先執行,並且不會被剝奪處理器的使用權,一直等程序執行完,再執行下一個


3、基於優先順序的排程演算法

為每個程序定義一個優先順序,優先順序越高,則先處理。

優先順序的確定由:程序完成功能的重要性,急迫性,均衡系統資源的使用等等

可以設定為:靜態優先順序和動態優先順序

動態優先順序的兩種排程演算法:

1、剩餘時間最短者優先

2、響應比高者優先


4、短程序優先

該演算法 從就緒佇列中選出下一個“CPU執行期最短”的程序,為之分配處理機 該演算法雖可獲得較好的排程效能,但難以準確地知道下一個CPU執行期,而只能根據每一個程序的執行歷史來預測。