浅析Linux中PRI和NI的关系

Linux中:
所有的优先级范围为0-139,一共140个优先级,数值越低优先级越高;
在这里插入图片描述
优先级范围100-139称为静态优先级,这个范围里的进程属于非实时进程,调度方式是:SCHED_OTHER,也就是SCHED_OTHER,使用CFS算法调度(时间片)

优先级范围0-99称为动态优先级,这个范围里的进程属于实时进程,调度方式有:SCHED_FIFO和SCHED_RR(默认);
SCHED_FIFO:高优先级会抢占低优先级,高优先级运行期间,低优先级没法抢占,只能等到高优先级主动退出;对于同等优先级,先运行的进程会一直占据cpu, 只有等到先运行的进程主动退出,后续进程才能得到时间片。
SCHED_RR:高优先级会抢占低优先级,高优先级运行期间,低优先级没法抢占,只能等到高优先级主动退出;对于同等优先级的进程,各个进程会轮流运行一定的时间片(大约100ms)。

通过ps查看,大部分的普通进程的PRI=80,而不是认为的120,这是因为ps的计算方法是-40~99是整个进程优先级范围,而60~99是普通进程,-40~59是实时进程;

抢占概念:
由调度程序来决定什么时候停止一个程序的运行,以便其他进程能够得到执行机会,这个强制执行的挂起动作就叫抢占;
在非抢占模式下,除非进程自己主动停止运行,否则会一直执行下去;

你可能感兴趣的:(linux)