内核线程和用户线程有什么区别?

taz*_*zim 8 multithreading operating-system kernel

内核线程和用户线程有什么区别?是内核线程是在内核模式下调度和执行的吗?用于创建内核线程的技术是什么?

用户线程是否已在用户模式下调度,执行?是内核不参与执行/调度用户线程吗?在执行用户线程时发生中断然后谁处理它?

无论何时创建线程,都会为每个线程创建一个TCB.现在用户级线程的情况是否在用户的地址空间中创建了这个TCB?

如果在处理上下文切换的两个用户级线程之间切换?

有一个多线程模型的概念:

  1. 多对一
  2. 一对一
  3. 多对多.

这些型号是什么?这些模型实际上是如何使用的?

已经阅读了很多关于这个主题的文章,但仍然困惑
想要清除这个概念..

在此先感谢Tazim

Jef*_*eff 5

内核线程和用户线程有什么区别?

内核线程具有特权,可以访问用户模式线程的限制.看看维基百科上的" Ring(计算机安全) ".在Windows上,用户模式对应于Ring 3,而内核模式对应于Ring 0.

用于创建内核线程的技术是什么?

这非常依赖于操作系统.

现在用户级线程的情况是否在用户的地址空间中创建了这个TCB?

TCB记录有关内核在运行该线程时使用的线程的信息,对吧?因此,如果它是在用户空间中分配的,则用户模式线程可能会修改或损坏它,这似乎不是一个好主意.那么,你不觉得它是在内核空间创建的吗?

这些型号是什么?这些模型实际上是如何使用的?

维基百科似乎非常清楚这一点.

  • “内核线程”通常用于指代“内核调度线程”,而不是在内核空间中运行的线程。更重要的是,程序的常规线程在调用内核中的函数时可以通过上下文切换访问内核数据等,从而使您的回答大多是荒谬的。 (3认同)
  • 您断言“内核线程=(完全)在内核模式下运行”。然后你解释那个结果。当断言失败时,其余的就没有意义了。因而无稽之谈。AFAIK您对“内核线程”的描述在许多内核中都不存在 - 而是依靠诸如中断之类的“事件”来执行内核需要执行的任何后台任务。虽然不可否认,我在该领域缺乏知识。我不会排除在某些内核开发圈中使用“内核线程”的含义,但是“用户线程不会在内核模式下运行”——系统调用被捕获并切换到内核模式。 (3认同)