在程序的生命週期中,當程序從乙個執行狀態到另乙個狀態變化的時候,會觸發一次排程。
這些狀態變化的時候,作業系統需要考慮是否要讓新的程序給cpu執行,或者是否讓當前程序從cpu上退出而換另乙個程序執行。
如果硬體時鐘提供某個頻率的週期性中斷,那麼可以根據如何處理時鐘中斷,把排程方法分為兩類
非搶占排程演算法
挑選乙個程序,然後讓該程序執行直到被阻塞,或者直到該程序退出,才會呼叫另外乙個程序,也就是說不理會時鐘中斷這個事情
搶占式排程演算法
挑選乙個程序,然後讓程序只執行某段時間,時段結束時,把其掛起,然後再挑選另外乙個程序。
需要在時間間隔的末端發生時鐘中斷,以便把cpu控制返回給排程程式進行排程。也就是時間片機制
採用這種方式主要是為了避免因為某個執行緒的原因阻塞整個程序
在單核cpu系統中常見的排程演算法
先來先服務排程演算法(fcfs)
每次排程是從就緒佇列中選擇一最先進入該佇列的程序,為之分配處理機,使之投入執行。該程序一直執行到完成或發生某事件而阻塞後才放棄處理機
短作業優先排程演算法(sjf)
是從就緒佇列中選出乙個估計執行時間最短的程序,將處理機分配給它,使它立即執行並一直執行到完成,或發生某事件而被阻塞放棄處理機時再重新排程。
該演算法未照顧緊迫型作業。對長作業也不友好
高響應比優先排程演算法
為了很好的權衡短作業和長作業,而推出的演算法。
根據響應比優先順序來確定先後順序。
此時優先順序:
時間片輪轉法(rr)
最古老、最簡單、最公平且使用最廣的演算法就是時間片輪轉。
每個程序都被分配乙個時間段(時間片),即允許該程序在該時間段中執行。
時間片的長度就尤為重要一般為20ms~50ms
最高優先順序排程演算法(hpf)
所謂的最高優先順序排程演算法,就是從就緒佇列中選擇最高優先順序的程序進行執行。
分類:處理方法
多級反饋佇列排程演算法(mfq)
多級反饋佇列排程演算法是時間片輪轉演算法和最高優先順序演算法的總和和發展。
工作方式
lru排程演算法例題 FIFO排程演算法和LRU演算法
一.理論 fifo 先進先出排程演算法 lru 最近最久未使用排程演算法 兩者都是快取排程演算法,經常用作記憶體的頁面置換演算法。打乙個比方,幫助你理解。你有很多的書,比如說10000本。由於你的書實在太多了,你只能放在地下室裡面。你看書的時候不會在地下室看書,而是在書房看書。每次,你想看書都必須跑...
作業系統短作業優先排程演算法
短作業優先排程演算法 sjf 是以作業的長度來計算優先順序,作業越短,優先度越高。作業的長短是作業的執行時間來衡量的。源程式c 編寫,由老師提供的參考 網上查詢 同學之間討論之後完善,非誠勿擾!includeusing namespace std struct node job 10 按服務時間排序...
非搶占式優先排程演算法例題 Linux 程序排程
linux公平排程cfs completely fair schedule 基於linux版本2.6.34。看原始碼所感 而世之奇偉 瑰怪,非常之觀,常在於險遠,而人之所罕至焉,故非有志者不能至也。排程程式即 scheduler 決定了多個程式執行策略,排程程式的最大原則在於能夠最大限度的利用計算資...