動態

詳情 返回 返回

每日一篇-7.30-進程調度算法 - 動態 詳情

調度算法的意義

程序運行時,通常會有多個進程或線程同時競爭CPU,但是如果只有一個CPU可用,那就必須選擇下一個要運行的進程。在操作系統中完成選擇工作的一部分叫做調度程序。
但是進程也有區分,
CPU密集型:大多時間在計算
IO密集型:大多時間在IO等待切換(由於現在CPU的性能提高 ,主要是IO密集型)
image.png
調度算法的目的就是為了保持系統所有部分儘可能忙碌
主要有四個指標衡量調度算法的好壞,吞吐量、週轉時間、CPU利用率、響應時間。
並且調度程序需要考慮到CPU利用率,因為進程的切換比較高,用户態必須切換到內核態,然後保存當前進程的狀態,包括在進程表中存儲寄存器值以便以後重新裝載。
調度算法分類:批處理、交互式、實時
image.png

批處理系統的調度

先來先服務

First-come first-served,按照進程請求的順序使用CPU。相當於有一個就緒進程的單一隊列。
優點:易於理解便於在程序中運用。
缺點:如果某個進程過大,會導致後面進程飢餓。

短作業優先:

缺點:對長進程不友好。

最短剩餘時間優先

是短作業優先的搶佔式版本,總是選擇剩餘運行時間最短的那個進程運行,需要對整個事件同當前進程的剩餘時間比較,如果右小於當前進程的,當前進程就會被掛起,運行新的進程。

交互式系統的調度

輪轉調度

每個進程都會被分一個時間段,即時間片,允許該進程在該時間片內運行。調度程序需要維護一張可運行進程列表。:
缺點:時間片設置的過長會導致短的交互請求的響應時間變長,過短會導致過多進程切換降低CPU效率。
image.png

優先級調度

優先級可以是靜態賦予也可以是動態賦予。比如將優先級設為該進程在上一時間片所佔部分的倒數。
缺點:可能會導致低優先級進程產生飢餓現象。需要偶爾堆優先級進行調整。

彩票調度

實時系統的調度

實時系統是時間起主導作用的系統。

硬實時

即必須滿足絕對的截止時間。將程序劃分為一組進程實現,每個進程的行為都是可以預測和提前掌握的。

軟實時

Add a new 評論

Some HTML is okay.