为什么用户级线程比内核级线程更快?

为什么用户级线程比内核级线程更快?

我发现用户级线程比内核级线程快很多,但我找不到任何令人信服的例子为什么用户级线程是否比内核级线程更快?有人可以向我解释一下吗?

内核线程速度慢,效率低,例如,线程操作比用户级线程慢数百倍。

取自这里

答案1

内核级线程需要上下文切换,这涉及更改定义当前内存映射和权限的大量处理器寄存器。它还会驱逐部分或全部处理器缓存。

用户级线程只需要在一个内核线程或进程内进行少量的簿记。

但是,如果您的线程主要执行 I/O 操作,则差异并不大,因为无论如何这些操作都必须通过内核。如果您尝试使用大量独立进程实现某种模拟,这一点就至关重要。在这种情况下,您需要仔细注意您使用的线程同步机制,因为其中一些机制也会进入内核并触发上下文切换。

http://www.cs.rochester.edu/u/cli/research/switch.pdf“一般来说,对于我们的工作量来说,上下文切换的间接成本范围从几微秒到超过一千微秒。”

编辑:用户级线程为每个线程维护一个堆栈,并且可能会或可能不会保存通用寄存器,具体取决于体系结构及其调用约定的破坏规则。它可以像将寄存器转储到堆栈、跳转到新地址并弹出几个寄存器一样简单,如果该线程最近运行,这些寄存器可能位于您的缓存中。

内核级上下文切换也会通过写入传输层协议更改处理器的安全级别(特权级别或“环”)。请参阅“性能考虑”

相关内容