为什么都说线程切换开销小于进程呢?
按我的理解,线程的三种主流实现方式,内核-用户 一对一,一对多,多对多
一对多时,线程调度完全由用户实现,线程切换时不需要切入内核态,开销可能比较小,这点可以理解
一对一时,如果OS以线程作为调度单位(不清楚一对一时是否也可以按进程做调度单位,如果可以那么线程如何调度呢?),从进程A的线程1 -> 进程B的线程1, 这种调度的开销应该和从进程A -> 进程B的调度相当吧?
请大家帮忙解答下困惑,谢谢
按我的理解,线程的三种主流实现方式,内核-用户 一对一,一对多,多对多
一对多时,线程调度完全由用户实现,线程切换时不需要切入内核态,开销可能比较小,这点可以理解
一对一时,如果OS以线程作为调度单位(不清楚一对一时是否也可以按进程做调度单位,如果可以那么线程如何调度呢?),从进程A的线程1 -> 进程B的线程1, 这种调度的开销应该和从进程A -> 进程B的调度相当吧?
请大家帮忙解答下困惑,谢谢
2楼 @youyongsong 请问您说的建立映射指的是什么映射?
另外,我认为一对多模型应该不用陷入内核是因为这种方法相当于编程语言自己实现的线程功能,这种情况下OS以进程作为最小调度单位,当时间片分给一个进程时,进程利用自己的代码来模拟线程,从而对内核是透明的,内核只看得到一个进程,所以这种方式不用陷入内核态
5楼 @youyongsong 额 这个东西应该是在第一次创建进程就弄好了,也就是我们所说的页表。最多只是页表中的页可能在磁盘上,需要进行换页。换页的开销确实比较大,毕竟涉及磁盘调度,但这点跟我的问题没啥关系。。