榮耀magic3|并發編程——基礎概念(一)( 二 )


時間片輪轉調度中唯一有趣的一點是時間片的長度 。 從一個進程切換到另一個進程是需要定時間的包括保存和裝入寄存器值及內存映像更新各種表格和隊列等 。 假如進程切(processwitch)有時稱為上下文切換( context switch)需要 5ms 再假設時間片設為 20ms則在做完 20ms 有用的工作之后CPU 將花費 5ms 來進行進程切換 。 CPU 時間的 20% 被浪費在了管理開銷上了 。
為了提高 CPU 效率我們可以將時間片設為 5000ms 。 這時浪費的時間只有 0.1% 。 但考慮到在一個分時系統中如果有 10 個交互用戶幾乎同時按下回車鍵將發生什么情況?假設所有其他進程都用足它們的時間片的話最后一個不幸的進程不得不等待 5s 才獲得運行機會 。 多數用戶無法忍受一條簡短命令要 5 才能做出響應同樣的問題在一臺支持多道程序的個人計算機上也會發生 。
結論可以歸結如下:時間片設得太短會導致過多的進程切換降低了 CPU 效率: 而設得太長又可能引起對短的交互請求的響應變差 。 將時間片設為 100ms 通常是一個比較合理的折衷 。
在 CPU 死機的情況下其實大家不難發現當運行一個程序的時候把 CPU 給弄 到了 100%再不重啟電腦的情況下其實我們還是有機會把它Kill掉的我想也正是因為這種機制的緣故 。
【榮耀magic3|并發編程——基礎概念(一)】感謝諸君的觀看 , 文中如有紕漏 , 歡迎在評論區來交流 。 如果這篇文章幫助到了你 , 歡迎點贊\uD83D\uDC4D和關注 。

相關經驗推薦