FreeBSD調度程序和Linux調度程序有什麼區別?FreeBSD調度程序和Linux調度程序的區別
5
A
回答
12
有幾個調度程序可用。這個答案假設默認調度程序:CFS(Linux)和ULE(FreeBSD)。
CFS是的簡稱完全公平調度程序。最顯着的區別在於CFS不基於運行隊列進行流程選擇。相反,它使用一個O(log N)複雜度的紅黑樹,這個樹花費CPU時間索引。
另一個值得注意的細節是CFS使用納秒計時。從Kernel Trap:
CFS使用納秒粒度會計和不依賴於任何 的jiffies或其他HZ細節。因此,CFS調度程序沒有 'timeslices'的概念,並且沒有任何啓發式。只有一個 中央可調:
/proc/sys/kernel/sched_granularity_ns
可用於調整調度從「桌面」(低 延遲),以「服務器」(好配料)工作負載。它默認爲適用於桌面工作負載的 設置。 SCHED_BATCH也由 CFS調度程序模塊處理。
ULE是傳統BSD調度程序的後繼者。它在SMP系統和單處理器系統上提供了大大改進的性能。它遵循比較傳統的設計,運行隊列和時間片。它力求公平,但可以通過指導來支持交互式流程。
這是一個link對ULE的作者在研究CFS來源時的一些發現。他們還在評論中討論了CFS調度程序中算法的複雜性(已經引起了很多爭議)。
這兩個調度程序都適合桌面使用。通過設置kern.sched.interact
,ULE支持交互式進程。沒有它,CFS和ULE應該同樣公平。
ULE登陸大約3000行代碼,而CFS正在接近這個數字的兩倍。
相關問題
- 1. Kprobe在Linux調度程序和查找Linux調度程序
- 2. 阻止調用和Linux調度程序
- 3. Freebsd中的調度程序黑客5.2.1
- 4. 瞭解linux調度程序
- 5. NUMA和SMP上的Linux調度程序
- 6. 進程調度程序和線程調度程序
- 7. Windows 7進程調度程序和Windows Embedded調度程序
- 8. Linux內核線程 - 調度程序
- 9. Linux程序的FreeBSD
- 10. 使用即時調度程序和完全不使用調度程序之間的區別
- 11. 調度程序和上下文切換器之間的區別?
- 12. 調度程序的standby()和pauseAll()有什麼區別?
- 13. Linux調度程序是否知道硬件中斷(調度程序抖動)
- 14. ASP.NET調度程序
- 15. Websphere調度程序
- 16. 調度程序排序
- 17. CodeIgniter任務調度程序將任務調度到任務調度程序
- 18. C#線程調度程序
- 19. Akka調度程序:akka調度程序如何工作?
- 20. Heroku調度程序和時鐘進程
- 21. Linux 2.6.31調度程序和多線程作業
- 22. MySQL中的調度程序
- 23. NotificationObject的調度程序
- 24. WinForm中的調度程序
- 25. linux的多線程調度
- 26. Linux,需要精確的編程時序。調度程序喚醒程序
- 27. 調度程序爲asp.net?
- 28. 石英調度程序
- 29. 安裝Django調度程序
- 30. Azure調度程序實現
這是StackOverflow的主題。可能更適合在[Unix&Linux](http://unix.stackexchange.com)上發佈此問題。 – Graham 2013-02-27 15:13:39