多线程 – 在单线程应用程序中,是一个也是唯一一个内核线程的线程?

来自维基百科,它说:

内核线程是内核调度的“最轻”单元.每个进程中至少存在一个内核线程.

我已经了解到一个进程是一个容纳内存空间,文件句柄,设备句柄,系统资源等的容器……并且线程是真正由内核调度的线程.

那么在单线程应用程序中,一个线程(我相信主线程)是一个内核线程吗?

最佳答案 我假设你在谈论这篇文章:

http://en.wikipedia.org/wiki/Kernel_thread

根据那篇文章,在一个单线程应用程序中,由于你只有一个线程的定义,它必须是一个内核线程,否则它将不会被调度,也不会运行.

如果您的应用程序中有多个线程,那么它将取决于如何实现用户模式多线程(内核线程,光纤等).

重要的是要注意,当执行应用程序代码时,它将是在用户模式下运行的内核线程(除非您进行系统调用).在用户模式下运行时执行受保护指令的任何尝试都会导致故障,最终导致进程终止.

所以这里的内核线程不要与supervisor /特权模式和内核代码混淆.

您可以执行内核代码,但必须首先通过系统调用门.

点赞