本文主要是介绍内核支持抢占和非抢占的含义,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Linux2.4不支持内核抢占,即是说进程通过系统调用陷入到内核态的时候,不可以被其他的进程抢占。如果有更高优先级的进程,只有在系统调用返回用户空间的时候,才可被调度程序调度,由高优先级的进程占用cpu。这里的“不可以被其他进程抢占”当然不包括中断上下文,无论内核态还是用户态,中断上下文都可以抢占进程上下文,中断上下文是拥有最高的权限,它甚至可以抢占其他的中断上下文。
Linux2.6有一个CONFIG_PREEMPT的选项,打开该选项后,linux kernel就支持了内核代码的抢占。对于抢占式内核而言,即便是从中断上下文返回内核空间的进程上下文,只要内核代码不在临界区内,就可以发生调度,让最高优先级的任务调度执行。例如高优先级的进程可以抢占内核态的系统调用,而不必等系统调用执行完返回用户空间才抢占。
这篇关于内核支持抢占和非抢占的含义的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!