来自维基百科,它说:
内核线程是内核调度的“最轻”单元。 每个流程中至少存在一个内核线程。
我已经了解到一个进程是一个容纳内存空间,文件句柄,设备句柄,系统资源等的容器......并且线程是真正由内核调度的线程。
所以在单线程应用程序中,是一个线程(我相信主线程)是一个内核线程吗?
答案 0 :(得分:1)
没有。在现代操作系统中,应用程序和内核运行在不同的处理器保护级别(通常称为环)。例如,Intel CPU有四个保护级别。内核代码在Ring 0(内核模式)下运行,能够执行最高权限的处理器指令,而应用程序代码在Ring 3(用户模式)下运行,不允许执行某些操作。见http://en.wikipedia.org/wiki/Ring_(computer_security)
答案 1 :(得分:1)
我假设你在谈论这篇文章: http://en.wikipedia.org/wiki/Kernel_thread
根据那篇文章,在单线程应用程序中,由于你根据定义只有一个线程,它必须是一个内核线程,否则它将不会被调度并且不会运行。
如果您的应用程序中有多个线程,那么它将取决于如何实现用户模式多线程(内核线程,光纤等)。
重要的是要注意,在执行应用程序代码时(除非您进行系统调用),它将是在用户模式中运行的内核线程。在用户模式下运行时执行受保护指令的任何尝试都会导致故障,最终导致进程终止。
因此,内核线程不要与主管/特权模式和内核代码混淆。
您可以执行内核代码,但必须首先通过系统调用门。