参考以下链接
https¥www.cnblogs.com/abels0025/p/11430740.html
系统的整体优先级策略是:如果系统中存在需要执行的实时进程,则优先执行实时进程。直到实时进程退出或者主动让出CPU时,才会调度执行非实时进程。实时进程可以指定的优先级范围为1-99。
调度队列:
新产生的进程都会先获得一个时间片,进入活动队列等待调度到CPU执行。而内核会在每个tick间隔期间对正在CPU上执行的进程进行检查。一般的tick间隔时间就是cpu时钟中断间隔,每秒钟会有1000个,即频率为1000HZ(这是可以设置的)。每个tick间隔周期主要检查两个内容:1、当前正在占用CPU的进程是不是时间片已经耗尽了?2、是不是有更高优先级的进程在活动队列中等待调度?如果任何一种情况成立,就把则当前进程的执行状态终止,放到等待队列中,换当前在等待队列中优先级最高的那个进程执行。
nice值:
如果有两个nice值为0的进程同时占用cpu,那么它们应该每人占50%的cpu,如果将其中一个进程的nice值调整为1的话,那么此时应保证优先级高的进程比低的多占用10%的cpu,就是nice值为0的占55%,nice值为1的占45%。那么它们占用cpu时间的比例为55:45。这个值的比例约为1.25。就是说,相邻的两个nice值之间的cpu占用时间比例的差别应该大约为1.25。进程的优先级应该是从父进程继承来的,这个值一般是0。
举例:
通过NICE命令来对一个将要执行的bash命令进行NICE值设置:
[root@zorrozou-pc0 zorro]# nice -n 10 bash
这样我就又打开了一个bash,并且其nice值设置为10
nice值的-20到19,映射到实际的优先级范围是100-139
PR值:
ps命令中看到的PRI值或者top命令中看到的PR值。
nice值表示NI值,叫做静态优先级
priority值表示PRI和PR值,或者叫动态优先级。
我们也统一将“优先级”这个词的概念规定为表示priority值的意思。
实时进程和非实时进程:
如果系统中存在需要执行的实时进程,则优先执行实时进程(PR为0-99); 直到实时进程退出或者主动让出CPU时,才会调度执行非实时进程(PR为100-140)。