❶ 進程調度演算法1——FCFS、SJF、HNNR
進程的調度方式有兩種: 非剝奪調度方式(非搶占式)和剝奪調度方式(搶占方式)。
非搶占式:只允許進程主動放棄處理機。如進程運行結束、異常結束或主動請求I/O阻塞。在運行的過程中即使有更緊迫的任務到達,當前進程依然會繼續使用處理機,直到該進程終止或主動要求進入阻塞態。
搶占式:當一個進程正在處理機上執行時,如果有一個更重要更緊迫的進程需要處理機,則立即暫停正在執行的進程,將處理機分配給更重要更緊迫的那個進程。
下面介紹適用於早期操作系統幾種進程調度的演算法
先來先服務(FCFS):按照到達的先後順序調度,事實上就是等待時間越久的越優先得到服務。
下面表示按照先來先服務演算法的執行順序
計算進程的幾個衡量指標:
短作業優先演算法是非搶占式的演算法,但是也有搶占式的版本—— 最短剩餘時間優先演算法(STRN,Shortest Remaining Time Next) 。
用於進程的調度演算法稱為短進程優先調度演算法(SPF,Shortest Process First)。
短作業/進程優先調度演算法:每次調度時選擇當前已到達且運行時間最短的作業/進程.。
因為進程1最先達到,此時沒有其他線程,所以進程1先被服務。當進程1運行完後,進程2和3已經到達,此時進程3需要的運行時間比進程2少,所以進程3先被服務…
計算進程的幾個衡量指標:
最短剩餘時間優先演算法:每當有進程 加入就緒隊列改變時就需要調度 ,如果新到達的進程的所需的運行時間比當前運行的進程剩餘時間更短,則由新進程搶占處理機,當前運行進程重新回到就緒隊列。此外,當一個 進程完成時也需要調度 。
通過比較上面三組的平均周轉時間、平均帶權周轉時間和平均等待時間可以看出,短作業優先演算法可以減少進程的等待時間,對短作業有利。
高響應比優先演算法: 非搶占式的調度演算法 ,只有當前運行的進程主動放棄CPU時(正常/異常完成、或主動阻塞),才需要進行調度,調度時計算所有就緒進程的相應比,選響應比最高的進程上處理機。
響應比 = (等待時間 + 運行時間)/ 運行時間
上面的三種調度演算法一般適用於 早期的批處理系統 ,沒有考慮響應時間也不區分任務的緊急程度。因此對用戶來說交互性差。
如發現錯誤,請指正!!!