概括
对于实时调度,在整个进程的生命周期里,它的优先级是不变的.
FIFO的试试调度策略要求进程不能抢占CPU,除非另一个实时进程有更高的优先级.下文将以例子来证实出这种情况.
例子
#! /bin/sh
(sleep 5;
kill -ALRM $$) &
while true;
do
true;
done
保存到test.sh文件中,执行:
$ sudo chrt -f 50 ./test.sh &
$ ps -C test.sh -o pri,ni,rtptio
上述命令意味着以50的实时优先级和fifo的实时调度方式执行脚本.
脚本将会被卡住,在被同等或更高优先级的进程抢占之前,该脚本将不会放弃CPU.
实际运行中,五秒之后进程并不会被停止,因为cpu将大部分时间都分配到循环中了,kill命令将得不到充分运行
运行结果:
解释:
pri:绝对优先级,值域为 [1,139]
rtptio:实时优先级,值域为[1,99] 对于普通进程无意义
ni:nice值,对于实时进程无意义