模式切换是否发生从用户线程切换到内核线程?

时间:2016-08-19 04:42:31

标签: linux multithreading linux-kernel system-calls switching

我对用户/内核线程和模式/上下文切换(平台:Linux)感到困惑 我有两个相关的问题。

(1)以下句子是否正确?

  

如果我进行系统调用,则会发生模式切换(用户模式到内核模式),最终从用户线程切换到内核线程。

由于系统调用只能在内核线程中执行,我认为模式切换必须发生从用户线程到内核线程的切换。

(2)那么,我们称之为模式切换的开销是将用户线程的开销转换为内核线程?会有什么样的开销?

据我所知,
1)上下文切换是CPU从一个进程或线程切换到另一个进程或线程,只在内核模式下发生 2)调用模式切换(而不是上下文切换)的原因是当前正在执行的进程在模式切换期间不会改变 3)进程上下文切换比线程上下文切换花费更多。

1 个答案:

答案 0 :(得分:2)

  

(1)以下句子是否正确?

     

如果我进行系统调用,则会发生模式切换(用户模式到内核模式),并最终从用户线程切换到内核线程。

  

(2)那么,我们称之为模式切换的开销是将用户线程的开销转换为内核线程?会有什么样的开销?

保存寄存器,更改段选择器等。 Good answer这个问题

  

模式切换(用户线程到内核线程)和线程上下文切换(内核线程到内核线程)之间有什么大不同?

我认为在将内核线程切换到内核线程的情况下,段选择器是相同的,也可能是一些寄存器。它依赖于架构