我正试图让一个进程不可抢占。我已将调度程序策略更改为SCHED_FIFO
并将rtprio
设置为99.一旦进程启动,在没有IO中断的情况下,我是否确保该进程不会被抢占通过其他过程? rtprio = 99是最高优先级还是仍然有一些具有更高优先级的内核进程?最后,我怎么知道一个进程在执行过程中是否被抢占了?
答案 0 :(得分:0)
确实有其他进程可以抢占最高的rt进程。例如,由stop_machine()
创建的用于热移除CPUS,修改内核代码文本的过程。
您可以从/ proc / $ PID / sched获取信息,以确定进程是否已被抢占。 cat / proc / $ PID / sched
nr_switches : 4197
nr_voluntary_switches : 4140
nr_involuntary_switches : 57
如果更改nr_switches
,则该过程已被抢占