Linux中的系统调用是否涉及线程切换

Linux中的系统调用是否涉及线程切换,linux,Linux,我在维基百科的“系统调用”部分读到,当一个“用户级”线程进行系统调用时,最终一个“内核”线程实际执行请求。那么,这是否意味着用户线程被取消调度,并与内核线程进行上下文切换?如果是,结果如何返回给用户线程 我被这句话弄糊涂了:“多对一模型:进程中任何用户线程的所有系统调用都由单个内核级线程处理。”有关系统调用上下文切换的详细说明,请参阅 我仍然不明白是在同一个线程中执行系统调用,而是在内核模式下执行,还是有一个单独的内核线程用于系统调用 同样的线程,同样的进程。没有“用户线程”和“内核线程”,只有

我在维基百科的“系统调用”部分读到,当一个“用户级”线程进行系统调用时,最终一个“内核”线程实际执行请求。那么,这是否意味着用户线程被取消调度,并与内核线程进行上下文切换?如果是,结果如何返回给用户线程

我被这句话弄糊涂了:“多对一模型:进程中任何用户线程的所有系统调用都由单个内核级线程处理。”

有关系统调用上下文切换的详细说明,请参阅

我仍然不明白是在同一个线程中执行系统调用,而是在内核模式下执行,还是有一个单独的内核线程用于系统调用

同样的线程,同样的进程。没有“用户线程”和“内核线程”,只有线程。每次进行系统调用时,线程都会在用户和内核模式之间来回切换

链接问题中描述的上下文切换不是调度上下文切换。用户/内核模式开关和线程调度开关是独立的、正交的概念。从用户模式切换到内核模式或返回根本不涉及调度。类似地,线程调度切换可以随时发生,无论进程处于用户模式还是内核模式

我被维基百科上的这句话弄糊涂了:“多对一模型:进程中任何用户线程的所有系统调用都由单个内核级线程处理。”

这是操作系统处理系统调用的一种方式,但不是Linux方式。Linux使用第二个项目符号中的模型:“一对一模型:在系统调用期间,每个用户线程都连接到一个不同的内核级线程。此模型解决了上述阻止系统调用的问题。在所有主要Linux发行版、macOS、iOS、最新Windows和Solaris版本中都可以找到此模型。”

但不要让这种措辞迷惑你。Linux不区分用户线程和内核线程。只有线程,不合格。本文描述的“一对一”映射是概念性的。Linux的源代码中没有实际的分离或映射