1. 在時間片輪轉調度中,如果一個進程在一個時間片內就已經運行結束,那剩下的時間片時間怎麼利用
如果進程在時間片結束前阻塞或結束,則CPU當即進行切換。結束的進程會從運行隊列中清除,剩下的時間片隨進程結構的清除而清除,並不影響到其他進程的調度。
時間片由操作系統內核的調度程序分配給每個進程。首先,內核會給每個進程分配相等的初始時間片,然後每個進程輪番地執行相應的時間,當所有進程都處於時間片耗盡的狀態時,內核會重新為每個進程計算並分配時間片,如此往復。
在每個進程的task_struct結構中有以下四項:policy、priority、counter、rt_priority。這四項是選擇進程的依據。其中,policy是進程的調度策略,用來區分實時進程和普通進程,實時進程優先於普通進程運行;priority是進程(包括實時和普通)的靜態優先順序。
counter是進程剩餘的時間片,它的起始值就是priority的值;由於counter在後面計算一個處於可運行狀態的進程值得運行的程度goodness時起重要作用,因此,counter也可以看作是進程的動態優先順序。rt_priority是實時進程特有的,用於實時進程間的選擇。
(1)rr輪轉調度演算法擴展閱讀:
時間片長度的影響:
時間片輪轉調度中特別需要關注的是時間片的長度。從一個進程切換到另一個進程是需要一定時間的--保存和裝入寄存器值及內存映像,更新各種表格和隊列等。
假如進程切換(process switch) - 有時稱為上下文切換(context switch),需要5毫秒,再假設時間片設為20毫秒,則在做完20毫秒有用的工作之後,CPU將花費5毫秒來進行進程切換。CPU時間的20%被浪費在了管理開銷上。
為了提高CPU效率,我們可以將時間片設為500毫秒。假設所有其他進程都用足它們的時間片的話,最後一個不幸的進程不得不等待5秒鍾才獲得運行機會。多數用戶無法忍受一條簡短命令要5秒鍾才能做出響應。同樣的問題在一台支持多道程序的個人計算機上也會發生。
結論可以歸結如下:時間片設得太短會導致過多的進程切換,降低了CPU效率;而設得太長又可能引起對短的交互請求的響應變差。
2. 操作系統時間片輪轉演算法中,新進程到來時是插入在就緒隊列隊首還是隊尾,為什麼
那得看什麼情況了 如果是一級 那就到隊尾
如果不是一級那就復雜了
比如:我在網上看到的一道題:
設一個系統中有5個進程,他們的到達時間和服務時間如下表所示,忽略I/O以及其他開銷時間,若分別按先來先服務(FCFS)、非搶占短進程優先(SPF)、高響應比優先(HRRN)、時間片輪轉(RR,時間片=1)、多級反饋隊列(FB,第i級隊列的時間片=2i-1)調度演算法進行CPU調度,請給出各進程的完成時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間
進程 到達時間 服務時間
A 0 3
B 2 6
C 4 4
D 6 5
E 8 2
具體流程:時間片第一級1s,第二級2s,第三級4s...優先順序第一級>第二級>第三級...首先A進入第一級執行1s,進入第二級,由於此時B還沒有到達,所以A在第二級執行2s,完成,此時是第3s。B第2s已進入第一級,此時回到第一級B執行1s進入第二級,4s的時候c進入第一級,C執行1s進入第二級排在B的後面。此時候為5S,D沒有到達,第一級沒有進程,所以第二級B執行2S,進入第三級,此時為7S,D已進入第一級,D執行一S,轉入第二級排在C後面,8S,E進入第一級,執行一S,進入第二級,排在D後面。第一級沒有進程,第二級的C執行2S,進入第三級,D執行2s進入第三級,E執行1S完成,此時是14S。第二級沒有進程,由第三級的D開始,執行3S完成,此時是17S,C執行1S完成,此時是18S,D執行2S完成,此時是20S。所以答案是,3,17,18,20,14