回覆列表
  • 1 # 使用者674626316078

    在宏觀上:我們可以同時開啟多個應用程式,每個程式並行不悖,同時執行。但是在微觀上:由於只有一個CPU,一次只能處理程式要求的一部分,如何處理公平,一種方法就是引入時間片,每個程式輪流執行。

    舉個例子:

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

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

    舉個多執行緒程式的例子,說明時間片是怎樣工作的(java)

    如上:

    由此可見:兩個執行緒是交替執行的(數字的變化),從宏觀上(同時輸出)。

    以下是搜的資料:

    1,什麼是時間片輪轉:

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

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

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

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

  • 中秋節和大豐收的關聯?
  • 有人說女人要嫁個好公婆,有道理麼?