1动态优先级
因为高优先级的进程总比低优先级的进程先被调度,为防止有多个高优先级且一直占用CPU资源,导致其它进程不能占用CPU,所以引用动态优先级概念.
2交互式的进程
如果某个进程被认为是交互式的,那么将被赋予较高的优先权,例如:键盘输入.交互式的进程从来不被抢占,并且占用CPU很少,它们常常自动放弃CPU.
3有效优先级
进程的有效优先级就是静态优先级与额外值的和。
静态优先级是在系统创建时就已经分配给进程了,整个运行周期里不变.额外值是一个可正可负的值,也可以把额外值理解为动态优先级,因为系统通过改变这个额外值(动态优先级)来改变进程的有效优先级.
额外值是由内核来管理
4、nice与有效优先级的范围
nice的范围是-20到19有效优先级的范围是0-39
计算公式:优先级(PRI)= 静态优先级() + 附加值() - nice()
实时优先级
1、实时优先级概述:
linux提供了一个实时调度策略,提供了100个额外优先级别,以保证系统能及时响应进程.
2、实时优先级和普通优先级的区别:
实时优先级比普通优先级高,普通优先级是0-39.而实时优先级是(41-139),优先级一般不用40.
实时优先级在整个进程的生命周期里是不变的,所以实时进程没有nice值,也没有额外值.它的有效优先级就是静态优先级.
3、POSIX标准为实时进程指定了两种策略:先进先出(FIFO),时间片法(Round_Robin,简称RR)
A、先进先出(FIFO)调度
如果有两个同优先级的进程位于就绪队列,通常情况下,排在前面的先被执行
FIFO的策略要求进程不能抢占CPU,除非另一个实时进程有更高优先级
B、时间片调度(RR)
用时间片调度来执行chewer程序,则不会出现死机的情况.因为它在运行一段时间后,会根据时间片释放自己,这样就会fork出sleep进程,最后kill掉自己(chewer).