CPU 時間片 分時 輪轉調度


時間片即CPU分配給各個程序的時間,每個線程被分配一個時間段,稱作它的時間片,即該進程允許運行的時間,使各個程序從表面上看是同時進行的。如果在時間片結束時進程還在運行,則CPU將被剝奪並分配給另一個進程。如果進程在時間片結束前阻塞或結束,則CPU當即進行切換。而不會造成CPU資源浪費。在宏觀上:我們可以同時打開多個應用程序,每個程序並行不悖,同時運行。但在微觀上:由於只有一個CPU,一次只能處理程序要求的一部分,如何處理公平,一種方法就是引入時間片,每個程序輪流執行。

 

舉例

編輯

你同時輸入兩篇文檔:A.txt和B.txt;

你在A中輸入一個字之后,再在B中輸入一個字,輪流輸入,直至完成。總的看來你似乎在同時進行兩篇文章的錄入,你可以說我一邊寫A一邊寫B。但是具體到某個字時,就是沿着時間的前進,AB交替進行了。而你每個字輸入所占用的這段時間,我們就可以稱之為時間片。

 

 

 

操作系統

編輯

嵌入式操作系統可以分為實時操作系統和分時操作系統兩類。

 

 

 

實時

實時操作系統是指具有實時性,能支持實時控制系統工作的操作系統。實時操作系統的首要任務是調度一切可利用的資源完成實時控制任務;其次才着眼於提高計算機系統的使用效率,其重要特點是通過任務調度來滿足對於重要事件在規定的時間內做出正確的響應。實時操作系統與分時操作系統有着明顯的區別。具體地說,對於分時操作系統,軟件的執行在時間上的要求並不嚴格,時間上的延誤或者時序上的錯誤,一般不會造成災難性的后果。而對於實時操作系統,主要任務是對事件進行實時的處理,雖然事件可能在無法預知的時刻到達,但是軟件必須在事件隨機發生時,在嚴格的時限內做出響應(系統的響應時間)。即使是系統處在尖峰負荷下,也應如此,系統時間響應的超時就意味着致命的失敗。另外,實時操作系統的重要特點是具有系統的可確定性,即系統能對運行的最好和最壞情況做出精確的估計。

 

 

 

分時

分時操作系統是把CPU的時間划分成長短基本相同的時間區間,即"時間片",通過操作系統的管理,把這些時間片依次輪流地分配給各個用戶使用.如果某個作業在時間片結束之前,整個任務還沒有完成,那么該作業就被暫停下來,放棄CPU,等待下一輪循環再繼續做.此時CPU又分配給另一個作業去使用.由於計算機的處理速度很快,只要時間片的間隔取得適當,那么一個用戶作業從用完分配給它的一個時間片到獲得下一個CPU時間片,中間有所"停頓";但用戶察覺不出來,好像整個系統全由它"獨占"似的.

 

 

 

輪轉調度

編輯

時間片輪轉調度是一種最古老,最簡單,最公平且使用最廣的算法。每個進程被分配一個時間段,稱作它的時間片,即該進程允許運行的時間。如果在時間片結束時進程還在運行,則CPU將被剝奪並分配給另一個進程。如果進程在時間片結束前阻塞或結束,則CPU當即進行切換。調度程序所要做的就是維護一張就緒進程列表,當進程用完它的時間片后,它被移到隊列的末尾。

時間片輪轉調度中唯一有趣的一點是時間片的長度。從一個進程切換到另一個進程是需要一定時間的--保存和裝入寄存器值及內存映像,更新各種表格和隊列等。假如進程切換(process switch) - 有時稱為上下文切換(context switch),需要5毫秒,再假設時間片設為20毫秒,則在做完20毫秒有用的工作之后,CPU將花費5毫秒來進行進程切換。CPU時間的20%被浪費在了管理開銷上。

為了提高CPU效率,我們可以將時間片設為500毫秒。這時浪費的時間只有1%。但考慮在一個分時系統中,如果有十個交互用戶幾乎同時按下回車鍵,將發生什么情況?假設所有其他進程都用足它們的時間片的話,最后一個不幸的進程不得不等待0.5秒鍾才獲得運行機會。多數用戶無法忍受一條簡短命令要0.5秒鍾才能做出響應。同樣的問題在一台支持多道程序的個人計算機上也會發生。

通常狀況下,一個系統中所有的進程被分配到的時間片長短並不是相等的,盡管初始時間片基本相等(在Linux系統中,初始時間片也不相等,而是各自父進程的一半),系統通過測量進程處於“睡眠”和“正在運行”狀態的時間長短來計算每個進程的交互性,交互性和每個進程預設的靜態優先級(Nice值)的疊加即是動態優先級,動態優先級按比例縮放就是要分配給那個進程時間片的長短。一般地,為了獲得較快的響應速度,交互性強的進程(即趨向於IO消耗型)被分配到的時間片要長於交互性弱的(趨向於處理器消耗型)進程。

結論可以歸結如下:時間片設得太短會導致過多的進程切換,降低了CPU效率;而設得太長又可能引起對短的交互請求的響應變差。將時間片設為100毫秒通常是一個比較合理的折衷。

 

 

 

實例

編輯

Windows 95的時間片是20ms

Linux的時間片是5ms-800ms


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM