//程序排程演算法
程序排程演算法是CPU透過程序排程演算法決定某個時刻去呼叫哪個程序到CPU上執行的演算法
1、先來先服務排程演算法
每次從就緒佇列的隊頭排程到CPU上執行,直到程序退出或被阻塞,才會繼續從佇列中排程程序執行。
特點:對短作業不利,對長作業有利,無法平衡短作業與長作業。
2、最短作業優先排程演算法
每次排程就緒佇列中執行時長最短的程序,直到程序退出或被阻塞,才會繼續從佇列中排程程序執行。
特點:增加了吞吐量,對短作業有利,但對長作業不利,無法平衡短作業與長作業。
3、高響應比優先排程演算法
每次進行程序排程時,先計算就緒佇列中的響應比,選擇響應比最高的程序排程到CPU上。
響應比=(等待時間+要求服務時間)/要求服務時間,當等待時間相同時,短作業服務時間短,則響應比高,對短作業有利。當要求服務時間相同時,等待時間越長,則響應比越大,對長作業有利。
所以高響應比優先排程演算法兼顧了短作業與長作業。
4、時間片排程演算法
最古老、最廣、最簡單、公平的方法就是時間片排程演算法
就是就緒佇列中的每個程序被排程到CPU上執行的時間都是固定的一個時間片(時鐘中斷),如果程序執行時間到了,那麼CPU就會釋放該程序,讓下一個程序排程到CPU。如果程序在時間片結束前阻塞或結束,則CPU立即進行切換。
5、優先順序排程演算法
對於計算機來說,實際應用中有些程序是更為緊迫和更為需要的,所以此時就產生了優先順序的概念,優先順序排程就是從就緒佇列中選擇優先順序高的任務排程到CPU上執行。
在訊息佇列中(kafka)中設計的有優先順序佇列這種模組,C++裡面使用priority_queue<pair<int,function<void()>>來實現任務的優先順序,第一個引數int代表優先順序,第二個引數function<void()>代表任務函式。
靜態優先順序是一開始設定好優先順序,而動態優先順序是根據執行過程中,如果執行時間增加則降低優先順序,等待時間增加就提升優先順序。
6、多級反饋佇列排程演算法
多級即多個佇列,從上到下優先順序降低的多個佇列
反饋表示當有新的程序加入優先順序較高的佇列時,執行在CPU上的程序會被阻塞,然後CPU排程新程序。
其結構如上圖所示,從上到下佇列優先順序依次降低,且優先順序越高的佇列時間片越短
小林coding學習筆記(程序排程演算法)
相關文章
- xv6學習筆記(4) : 程式排程筆記
- OS學習筆記三:處理器排程筆記
- Linux核心學習筆記(5)– 程式排程概述Linux筆記
- go lang學習筆記——channel機理及排程理解Go筆記
- 第3講:程序排程
- 大資料學習筆記(十五)-大資料排程框架大資料筆記框架
- 【Linux】核心學習筆記(一)——程序管理Linux筆記
- gevent 學習筆記 —— 協程筆記
- lua課程學習筆記筆記
- 演算法學習筆記演算法筆記
- 程序中的執行緒排程執行緒
- 北航OS課程筆記--四、程序管理筆記
- CAN匯流排協議 學習筆記協議筆記
- Kubernetes全棧架構師(資源排程上)--學習筆記全棧架構筆記
- Kubernetes全棧架構師(資源排程下)--學習筆記全棧架構筆記
- 達內課程學習筆記筆記
- LMF演算法學習筆記演算法筆記
- 機器學習演算法學習筆記機器學習演算法筆記
- 匈牙利演算法學習筆記演算法筆記
- 學習筆記----KM演算法筆記演算法
- 學習筆記----RMQ演算法筆記MQ演算法
- EM演算法學習筆記演算法筆記
- Floyd演算法學習筆記演算法筆記
- Tarjan 演算法學習筆記演算法筆記
- 演算法學習筆記:Kosaraju演算法演算法筆記
- unity學習筆記-C#協程Unity筆記C#
- Andrew ng 深度學習課程筆記深度學習筆記
- Linux排程器:程序優先順序Linux
- 類歐幾里得演算法學習筆記演算法筆記
- 《演算法導論》學習筆記演算法筆記
- 莫隊演算法學習筆記演算法筆記
- 004:ZYNQ_AXI匯流排學習筆記(1)筆記
- goroutine排程原始碼閱讀筆記Go原始碼筆記
- 演算法學習筆記(3.1): ST演算法演算法筆記
- 演算法學習筆記(1)- 演算法概述演算法筆記
- Oracle任務排程工具學習Oracle
- 程式排程演算法Linux程式排程演算法演算法Linux
- 隨機過程學習筆記——概論隨機筆記