最近在优化RTlinux的实时APP,在各种资料之间查找关于linux优先级的相关资料,终于对linux进程优先级有一些了解。
首先在linux中优先级级别只有0-139这140个级别,这是固定的,数字越小优先级别越高,所以优先级为0的进程具有最高优先级。linux进程分为实时进程和非实时进程,这140个优先级中,linux把0-99分配给实时进程,100-139分配给非实时的普通进程,所以实时进程的优先级总是比非实时的普通进程要高,大部分情况下我们所用到的用户进程都是非实时的普通进程,用户进程都是在100-139这个优先级相对较低的范围折腾。
linux的进程调度策略分为FIFO,RR,和OTHER(NORMAL)三种。实时进程使用FIFO或RR调度,非实时进程使用OTHER调度。实时进程调度策略(FIFO,RR)和非实时进程调度策略上的主要不同点在于FIFO和RR在有高优先级进程的情况下,低优先级进程不可能运行。FIFO调度的特点是在没有更高优先级进程出现或主动释放CPU的情况下,进程可以一直运行,直到任务结束。RR调度将同优先级的进程放到一个队列,在没有更高优先级进程的情况下同优先级的进程公平分配CPU时间,也就是说相比于FIFO,RR调度的进程可以被同优先级的进程抢占,RR调度在同优先级的进程间引入时间片轮转机制。OTHER则是在所有不同优先级的进程间引入时间片轮转机制,所有优先级的进程根据优先级的高低进行分时运行,通过动态调整进程优先级使所有进程都有运行机会,在OTHER调度中就