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