CPU時間片輪轉機制 RR排程

2021-10-09 16:21:40 字數 801 閱讀 6250

時間片輪轉法(round-robin,rr)主要用於分時系統中的程序排程。為了實現輪轉排程,系統把所有就緒程序按先入先出的原則排成乙個佇列。新來的程序加到就緒佇列末尾。每當執行程序排程時,程序排程程式總是選出就緒佇列的隊首程序,讓它在cpu上執行乙個時間片的時間。時間片是乙個小的時間單位,通常為10~100ms數量級。當程序用完分給它的時間片後,系統的計時器發出時鐘中斷,排程程式便停止該程序的執行,把它放入就緒佇列的末尾;然後,把cpu分給就緒佇列的隊首程序,同樣也讓它執行乙個時間片,如此往復。

採用此演算法的系統,其程式就緒佇列往往按程序到達的時間來排序。程序排程程式總是選擇就緒佇列中的第乙個程序,也就是說按照先來先服務原則排程,但一旦程序占用處理機則僅使用乙個時間片。在使用先乙個時間片後,程序還沒有完成其執行,它必須釋放出處理機給下乙個就緒的程序,而被搶占的程序返回到就緒佇列的末尾重新排隊等待再次執行。

處理器同乙個時間只能處理乙個任務。處理器在處理多工的時候,就要看請求的時間順序,如果時間一致,就要進行**。挑到乙個任務後,需要若干步驟才能做完,這些步驟中有些需要處理器參與,有些不需要(如磁碟控制器的儲存過程)。不需要處理器處理的時候,這部分時間就要分配給其他的程序。原來的程序就要處於等待的時間段上。經過周密分配時間,巨集觀上就象是多個任務一起執行一樣,但微觀上是有先後的,就是時間片輪換。

時間片輪轉演算法的基本思想是,系統將所有的就緒程序按先來先服務演算法的原則,排成乙個佇列,每次排程時,系統把處理機分配給佇列首程序,並讓其執行乙個時間片。當執行的時間片用完時,由乙個計時器發出時鐘中斷請求,排程程式根據這個請求停止該程序的執行,將它送到就緒佇列的末尾,再把處理機分給就緒佇列中新的佇列首程序,同時讓它也執行乙個時間片

程序排程 時間片輪轉

include include include typedef struct table node node creat void p2 next null return head 輸出函式 void print node head 對程序表按優先數從大到小排序 node insert node h...

RR時間片輪轉法排程C語言實現

什麼是rr?rr round robin 實現思想 在fcfs的基礎上,加入時間片的概念,從第乙個到達的程序開始,cpu分配其乙個時間片的長度,第乙個程序放到其餘任務後面,然後給第二個程序分配乙個時間片,第二個程序放到其餘任務後面,依次類推,直到所有程序完成。假如程序結束了,時間片沒用完,則 剩餘時...

時間片輪轉排程演算法

include define max 10 struct task struct tasks max int counter 實際程序個數 int time counter 0 int poutput 排程結果輸出 int time int charge 判斷是否所有的程序都被執行過 int tim...