为什么内核代码比用户代码更快?

时间:2015-07-09 18:01:46

标签: performance kernel

为什么内核代码运行速度比用户代码快?我听说用户代码可以用C语言编写,内核代码也可以用C语言编写,例如在Windows中。那么在内核模式下更快执行的原因是什么?

1 个答案:

答案 0 :(得分:5)

通常,在内核空间中运行的代码以与用户空间中的代码相同的速度运行。例如,如果您从头开始实现sin函数来计算角度的正弦值,则无论如何都会以相同的速度运行。

代码在内核空间中运行得更快的地方就是进行系统调用。当用户模式代码调用系统功能时,操作系统将切换到管理员模式,此转换可能很慢。在内核空间中运行的代码已经处于管理程序模式,因此不需要模式切换。在某些操作系统上,从用户空间进行系统调用也会导致上下文切换缓慢。

sin函数的示例中,如果您将日志语句添加到进行系统调用以写入文件的函数中,那么sin函数如果在其中运行则会更快内核模式。

有关详细信息,请参阅以下Wikipedia文章和部分: