我很困惑用户/内核线程和模式/上下文切换(平台:Linux)
我有两个相关的问题。
(1)下列句子对吗?
如果我进行系统调用,那么会发生模式切换(用户模式为内核模式),并最终发生从用户线程切换到内核线程。
由于系统调用只能在内核线程中执行,我认为模式切换必须发生从用户线程切换到内核线程。
(2)那么,我们称之为模式切换的开销就是把用户线程的开销切换到内核线程? 会有什么样的开销?
据我所知,
1)上下文切换是CPU从一个进程或线程切换到另一个进程,只发生在内核模式下。
2)调用模式切换(而不是上下文切换)的原因是当前正在执行的进程在模式切换期间不会改变。
3)进程上下文切换成本高于线程上下文切换成本。
(1)下列句子对吗?
如果我进行系统调用,那么会发生模式切换(用户模式为内核模式),并最终发生从用户线程切换到内核线程。
是
(2)那么,我们称之为模式切换的开销就是把用户线程的开销切换到内核线程? 会有什么样的开销?
保存寄存器,改变段选择器等。这个问题的答案很好
模式切换(用户线程到内核线程)和线程上下文切换(内核线程到内核线程)有什么很大的区别?
我认为片段选择器在将内核线程切换到内核线程的情况下是相同的,也可能是一些寄存器。 它依赖于体系结构