用户和内核模式中的线程

线程在用户模式下运行并在内核模式下运行是什么意思? 这与用户模式的线程执行指令和内核模式的线程执行指令有关吗? 请详细说明。 另外,如果一个线程在用户模式下执行被置于挂起状态,它是否可能开始在内核模式下执行? 如果是的话,怎么可能呢? 到目前为止,我只知道一个线程如果被挂起将完全被SUSPENDED,即上下文切换将由CPU进行以安排另一个线程。

线程在用户模式下运行并在内核模式下运行是什么意思?

无法通过没有上下文的短语来了解一个人的意思。 如果我不得不猜测,我会说他们正在谈论线程是由用户空间调度程序还是内核调度程序调度的。 但也有可能他们实际上在询问线程是运行用户代码还是内核代码。

这与用户模式的线程执行指令和内核模式的线程执行指令有关吗? 请详细说明。

它可能是。 它也可能不是。 没有背景,没有办法知道一个人的意思是什么。

另外,如果一个线程在用户模式下执行被置于挂起状态,它是否可能开始在内核模式下执行? 如果是的话,怎么可能呢?

对于内核调度线程的实现,调度程序在内核空间中运行。 实际挂起线程的代码通常也在内核空间中运行,因为它必须将线程添加到各种内核调度程序数据结构中。 因此,恢复线程的线程也将在内核空间中运行。 在更高级别的视图中,相同的执行线程可以“成为”内核调度程序,选择要执行的用户空间线程,然后“成为”该线程。

到目前为止,我只知道一个线程如果被挂起将完全被SUSPENDED,即上下文切换将由CPU进行以安排另一个线程。

对,那是内核代码。 所以同一个核心运行用户空间代码,然后运行内核代码,然后它运行另一个线程的用户空间代码。

现代操作系统具有硬件支持,用于将用户代码与内核代码分离。 在x86架构上,您可以设置普通用户代码无法访问的内存页面,并将触发页面错误,以便操作系统可以在错误的程序中存活。

在内核模式下运行的代码具有更高的权限,但也有更多的责任,因为并非一切都像用户空间一样容易访问。 如果用户代码卡住了,那么操作系统可以清理它。 如果内核模式代码挂起,则可能不那么容易,具体取决于权限级别的高低。