Answers:
简短的答案是:它只是告诉您程序在哪里花费时间。
对于更长的答案,我将分两个步骤进行说明。第一:
1.进入内核模式
您编写的每个常规代码都在“用户模式”下运行。
程序可以使用库为它们执行常见任务。这也是用户模式代码。
在某些时候,程序可能需要系统的核心功能。例如:
该基本功能(接近硬件)是内核的一部分。那是计算机上所有内容背后的中央程序。它管理程序正常运行所需的一切。
要在内核中使用函数,程序执行路径实际上是从用户模式跳转到内核代码。内核完成其工作,并将执行路径折叠回用户模式。
当程序在内核模式下花费大量时间时,通常意味着它正在执行大量与硬件相关的活动。例如,磁盘搜索或视频流。硬件也可能出现故障;这会使处理速度变慢,并导致程序在内核空间上花费不寻常的时间。
2区别
内核空间中的代码是高性能的。内核的其他部分可以直接调用它,并且代码可以直接访问系统的每个资源,而无需任何边界检查。内核/用户模式之间的切换也是一种昂贵的操作,通过在内核代码中运行所有内容可以完全避免。
但是,在内核内部,没有太多空间可以进行安全检查,防止崩溃或写入错误的内存部分。这些是内核可以提供给其他程序的服务。它欺骗程序以使人们相信世界看起来有所不同(程序生活在虚拟的,沙盒/受限制的环境中),因此,程序进/出的所有内容都可以得到翻译和保护。
内核本身没有太多的保护,因为它后面没有任何东西可以保护它。它是系统的心脏,一旦停止,一切就结束了。您会遇到内核恐慌,或者在Windows上会遇到著名的BSOD。
这也是基于内核的代码的风险,也是将更多具有较低性能要求的子系统移至用户空间的原因。但是,与硬件基本相关的部分通常是内核代码,不会很快改变。