【发布时间】:2017-09-09 23:29:27
【问题描述】:
我知道here,这个问题有一个解释。但是我对某些观点有点困惑-:
让我有属于进程 P1 的线程 T(1-a) 和 T(1-b) 以及属于进程 P2 的线程 T(2-a) 和 T(2-b)。
现在我的问题是——:
- 线程 T(1-a) 想要做上下文切换到线程 T(1-b)。根据this 的回答,
这两种类型(进程上下文切换和线程上下文切换)都涉及将控制权交给操作系统内核来执行上下文切换(我主要是在谈论线程上下文切换)。
怀疑
如果 T(1-a) 和 T(1-b) 是用户级线程,内核将无法 区分 T(1-a)和T(1-b),那么上下文切换怎么做呢?
- 让所有线程 T(1-a)、T(1-b)、T(2-a) 和 T(2-b) 成为内核级线程,如果线程 T(1-a) 想要进行上下文切换到 T(2-b)。
怀疑
成本/交易不会与进程上下文切换相同,因为不仅虚拟内存空间被更改,而且 TLB 也会被刷新?
【问题讨论】:
-
线程切换意味着重新加载指向堆栈的寄存器,进程切换也意味着重新加载所有虚拟内存机制。
标签: multithreading operating-system computer-science context-switch