当前位置: 老葡京网站娱乐 > 操作系统 > Unix > 正文

kernel学习之进程调度的目标,nice值,静态优先级,动态优先级

时间:2016-02-10 张同浩

老葡京网站娱乐 www.sdguanhua.com 进程调度的目标,nice值,静态优先级,动态优先级,实时优先级,时间片

进程调度的目标:

1、高效性:高效意味着在相同的时间下要完成更多的任务。调度程序会被频繁的执行,所以调度程序要尽可能的高效。

2、加强交互性能(interactivity):在系统相当的负载下,也要保证系统的响应时间。

3、保证公平和避免饥渴。

4、SMP调度:调度程序必须支持多处理系统。系统必须追踪哪些进程在哪个cpu上运行。确保在同一时间中,一个进程不能再多于1个的cpu上运行。

5、软实时调度(soft real-timescheduling):系统必须有效的调用实时进程。

linusTorvalds 在CFS融入2.6.23时说:“我认为任何时候调度器都不是完美的 ,正确的并不是非此即彼,选择是一种平衡。在我更换调度器之前我100%确定未来我还会更换它。调度器没有想象的那么重要,它只是内核的一部分。”

进程的nice值:

nice值是每个进程的一个属性。它不是进程的优先级,而是一个能影响优先级的数字。

NI列显示的每个进程的nice值,PRI是进程的优先级。

nice是-20~~19之间的整数,默认取中间值0。

目前的内核不再存储nice值。取而代之的是static_prio(静态优先级)。nice值用户可见,静态优先级则隐藏在内核中,nice值和静态优先级可通过一定的关系进程转换。所以说nice值只是影响了静态优先级。而对于普通进程来说,动态优先级是基于静态优先级算出来的。

优先级:

普通进程有:静态优先级和动态优先级。而实时进程又增加了实时优先级。

注:进程的优先级只是一个整数,它是调度程序选择进程运行的基础。

1、静态优先级:static priority:之所以称为静态优先级是因为它不会随着时间而改变,内核不会修改它,只能通过系统调用nice去修改。静态优先级用进程描述符中的static_prio表示。它与nice的关系如图:

查看本栏目更多精彩内容:http://www.sdguanhua.com/OS/unix/