排程演算法
(1)時間片輪轉排程演算法(rr)
(2)優先順序排程演算法
(3)多級反饋佇列排程演算法
tips:各種排程演算法的學習思路
1.演算法思想
2.演算法規則
3.這種排程演算法是用於作業排程還是程序排程?
4.搶占式?非搶占式?
5.優點和缺點
6.是否會導致飢餓
(1)演算法思想
公平地、輪流地為各個程序服務,讓每個程序在一-定時間間隔內都可以得到響應
(2)演算法規則
按照各程序到達就緒佇列的順序,輪流讓各個程序執行一乙個時間片(如100ms)。若程序未在乙個時間片內執行完,則剝奪處理機,將程序重新放到就緒佇列隊尾重新排隊。
(3)用於作業/程序排程
用於程序排程(只有作業放入記憶體建立了相應的程序後,才能被分配處理機時間片)
(4)是否可搶占?
若程序未能在時間片內執行完,將被強行剝奪處理機使用權,因此時間片輪轉排程演算法屬於搶占式的演算法。由時鐘裝置發出時鐘中斷來通知cpu時間片已到
(5)優缺點
優點:公平:響應快,適用於分時作業系統:
缺點:由於高頻率的程序切換,因此有一定開銷; 不區分任務的緊急程度。
(6)是否會導致飢餓
不會分析時候,時間片大小分別為2和5的情況:
(1)時間片大小為2
(2)時間片大小為5
(3)若按照先來先服務排程演算法
(1)演算法思想
隨著計算機的發展,特別是實時作業系統的出現,越來越多的應用場景需要根據任務的緊急程度來決定處理順序
(2)演算法規則
排程時選擇優先順序最高的作業/程序
(3)用於作業/程序排程
既可用於作業排程,也可用於程序排程。甚至,還會用於在之後會學習的i/o排程中
(4)是否可搶占?
搶占式、非搶占式都有。區別在於:非搶占式只需在程序主動放棄處理機時進行排程即可,而搶占式還需在就緒佇列變化時,檢查是否會發生搶占。
(5)優缺點
優點:用優先順序區分緊急程度、重要程度,適用於實時作業系統。可靈活地調整對各種作業/程序的偏好程度。
缺點:若源源不斷地有高優先順序程序到來,則可能導致飢餓
(6)是否會導致飢餓
會補充:
就緒佇列未必只有乙個,可以按照不同優先順序來組織。另外,也可以把優先順序高的程序排在更靠近隊頭的位置
根據優先順序是否可以動態改變,可將優先順序分為靜態優先順序和動態優先順序兩種。
靜態優先順序:建立程序時確定,之後一直不變。
動態優先順序:建立程序時有乙個初始值,之後會根據情況動態地調整優先順序。
通常:系統程序優先順序高於使用者程序
前台程序優先順序高於後台程序
作業系統更偏好i/o型程序(或稱i/o繁忙型程序)
注:與i/o型進 程相對的是計算型程序(或稱cpu繁忙型程序)
i/o裝置和cpu可以並行工作。如果優先讓i/o繁忙型程序優先執行的話,則越有可能讓i/o裝置盡早地投入工作,則資源利用率、系統吞吐量都會得到提公升
可以從追求公平、提公升資源利用率等角度考慮
如果某程序在就緒佇列中等待了很長時間,則可以適當提公升其優先順序
如果某程序占用處理機執行了很長時間,則可適當降低其優先順序
如果發現乙個程序頻繁地進行i/o操作,則可適當提公升其優先順序
(1)搶占式
(2)非搶占式
(1)演算法思想
對其他排程演算法的折中權衡
(2)演算法規則
1.設定多級就緒佇列,各級佇列優先順序從高到低,時間片從小到大
2.新程序到達時先進入第1級佇列,按fcfs原則排隊等待被分配時
間片,若用完時間片程序還未結束,則程序進入下一級佇列隊尾。如果此時已經是在最下級的佇列,則重新放回該隊列隊尾
3.只有第k級隊列為空時,才會為k+1級隊頭的程序分配時間片
(3)用於作業/程序排程
用於程序排程
(4)是否可搶占?
搶占式的演算法。在k級佇列的程序執行過程中,若更上級的佇列(1~k-1級)中進入了乙個新程序,則由於新程序處於優先順序更高的佇列中,因此新程序會搶占處理機,原來執行的程序放回k級佇列隊尾。
(5)優缺點
對各型別程序相對公平(fcfs的優點) ;每個新到達的程序都可以很快就得到響應(rr的優點) ;短程序只用較少的時間就可完成(spf的優點) :不必實現估計程序的執行時間(避免使用者作假) ;可靈活地調整對各類程序的偏好程度,比如cpu密集型程序、i/o密集型程序(拓展:可以將因i/o而阻塞的程序重新放回原佇列,這樣i/o型程序就可以保持較高優先順序)
(6)是否會導致飢餓
會
時間片輪轉演算法和優先順序排程演算法 C語言模擬實現
一 目的和要求 程序排程是處理機管理的核心內容。本實驗要求用高階語言編寫模擬程序排程程式,以便加深理解有關程序控制快 程序佇列等概念,並體會和了解優先數演算法和時間片輪轉演算法的具體實施辦法。二 實驗內容 1.設計程序控制塊pcb的結構,通常應包括如下資訊 程序名 程序優先數 或輪轉時間片數 程序已...
Linux優先順序時間片排程
程序的優先順序有2種度量方法,一種是nice值,一種是實時優先順序 rtprio nice值的範圍是 20 19,值越大優先順序越低,也就是說nice值為 20的程序優先順序最大。實時優先順序 rtprio 的範圍是0 99,與nice值的定義相反,實時優先順序是值越大優先順序越高。實時程序都是一些...
時間片輪轉排程演算法
include define max 10 struct task struct tasks max int counter 實際程序個數 int time counter 0 int poutput 排程結果輸出 int time int charge 判斷是否所有的程序都被執行過 int tim...