什麼是rr?
rr=round-robin;
實現思想:
在fcfs的基礎上,加入時間片的概念,從第乙個到達的程序開始,cpu分配其乙個時間片的長度,第乙個程序放到其餘任務後面,然後給第二個程序分配乙個時間片,第二個程序放到其餘任務後面,依次類推,直到所有程序完成。假如程序結束了,時間片沒用完,則**剩餘時間片。
完整**:
#include
#include
#define circletime 5
typedef
struct pcb
*task, pcb;
pcb*
creattask
(int x,
int y,
int z)
void
deltask
(pcb* n,
int x)
d = n->next;
n->next = d->next;
free
(d);}}
void
count
(pcb* n,
int t)
p = p->next;
} p = n->next;
last = p;
while
(p !=
null
) p = p->next;}if
(time < q->aetime)
time = q->aetime;
printf
("當前執行的是任務%d\n"
, q->id);if
(q->counttime <= circletime)
else
if(q->counttime ==0)
}printf
("\n");
printf
("平均周轉時間為 %.2f \n"
, zt / temp)
;printf
("平均帶權周轉時間為 %.2f \n"
, dt / temp);}
intmain()
count
(head, n)
;}
如果時間片過長,則退化為fcfs,程序在乙個時間片就可以完成。
如果時間片過短,使用者的一次請求需要多個時間片才處理完,上下文切換次數增加。
使單個時間片內多數程序能夠完成他們的工作 ,那麼平均周轉時間會得到改進。
時間片的長短通常有一下三個因素決定:
1.系統的響應時間
2.就緒佇列裡面的程序數目
3.系統處理能力
CPU時間片輪轉機制 RR排程
時間片輪轉法 round robin,rr 主要用於分時系統中的程序排程。為了實現輪轉排程,系統把所有就緒程序按先入先出的原則排成乙個佇列。新來的程序加到就緒佇列末尾。每當執行程序排程時,程序排程程式總是選出就緒佇列的隊首程序,讓它在cpu上執行乙個時間片的時間。時間片是乙個小的時間單位,通常為10...
按時間片輪轉排程演算法(C 實現)
演算法思想 按時間片輪轉排程演算法 1 假設系統中有5個程序,每個程序有乙個程序控制塊 pcb 來標識。程序控制塊內容包括 程序名,鏈結指標,到達時間,估計執行時間,程序狀態。程序名即程序標識。鏈結指標 按照程序到達系統的時間將處於就緒狀態的程序連線成乙個就緒佇列。指標指出下乙個到達程序的程序控制塊...
時間片輪轉排程演算法的C語言模擬實現
時間片輪轉排程 是一種最古老,最簡單,最公平且使用最廣的演算法。每個程序被分配乙個時間段,稱作它的時間片,即該程序允許執行的時間。如果在時間片結束時程序還在執行,則cpu將被剝奪並分配給另乙個程序。如果程序在時間片結束前阻塞或結束,則cpu當即進行切換。以下是c演算法的模擬實現 include de...