转自:https://www.cnblogs.com/poluner/articles/6604788.html,侵删。html
进程切换分两步
1.切换页目录以使用新的地址空间。
2.切换内核栈和硬件上下文。
对于linux来讲,线程和进程的最大区别就在于地址空间。
对于线程切换,第1步是不须要作的,第2是进程和线程切换都要作的。因此明显是进程切换代价大linux
线程上下文切换和进程上下问切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,可是进程切换是不一样的。这两种上下文切换的处理都是经过操做系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。缓存
另一个隐藏的损耗是上下文的切换会扰乱处理器的缓存机制。简单的说,一旦去切换上下文,处理器中全部已经缓存的内存地址一瞬间都做废了。还有一个显著的区别是当你改变虚拟内存空间的时候,处理的页表缓冲(processor’s Translation Lookaside Buffer (TLB))或者至关的神马东西会被所有刷新,这将致使内存的访问在一段时间内至关的低效。可是在线程的切换中,不会出现这个问题。ide