有关优先级的几点补充

Linux调度器:进程优先级


caid 
2017-10-02 10:38
对于动态优先级与静态优先级有一点疑惑,仔细阅读代码后(linux-2.6.10),有一些浅见, 

1.    static_prio这里的nice值的说明,是否应该去掉或者放到第一行nice值部分说明,虽然普通进程的static_prio是由nice值及bonus计算而得,但是放在这里始终感觉会导致理解错误,或者将注意力从优先级上分散 
2.    LKD和ULK都强调实时进程是基于静态优先级的,内核不为实时进程计算动态优先级。因此我以为rt_priority就是实时进程的静态优先级(需反转),包括普通进程,拥有rt_priority=0的rt_priority;但是task_struct结构中又有static_prio的字段,这个是专为普通进程准备的,其取值范围是[100,139]。与实时进程的静态优先级取值范围[1, 99]正好构成一个完整的序列[1, 139]。所以更加辅证了rt_priority就是实时进程的静态优先级的判断。 
3.    对于prio,被认为是普通进程的动态优先级。事实上,这个也是实时进程的动态优先级,只不过这个动态优先级并没有去计算,直接由rt_priority反转,即实时进程的静态优先级就是它的动态优先级。对于普通进程,prio直接就等于static_prio; 所以最后的结论是,实时进程与普通进程都有静态优先级[1~139],通过转换变为动态优先级prio。动态优先级是内核执行调度的依据。 
4.    rt_priority=0时,反转得到的是99这个优先级,这个是无意义的,并且也不会得到99这个值,因为在归一化之前,就已经过滤了:策略是SCHED_NORMAL且rt_priority非0,则直接跳出。故而不会将0值去反转。
linuxer 
2017-10-09 11:34
@caid:多谢你的补充。 

所谓bonus也就是对交互式进程和cpu密集型进程进行奖惩,但是引入CFS之后,这些都不需要了。static_prio和nice值是等同的,只不过一个是内核空间视角,一个是用户空间视角。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YouthTravel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值