进程间切换与线程间切换的区别
2017-10-10 19:44
253 查看
进程切换分两步
1.切换页目录以使用新的地址空间
2.切换内核栈和硬件上下文。
对于linux来说,线程和进程的最大区别就在于地址空间。
对于线程切换,第1步是不需要做的,第2是进程和线程切换都要做的。所以明显是进程切换代价大
线程上下文切换和进程上下文切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。另外一个隐藏的损耗是上下文的切换会扰乱处理器的缓存机制。简单的说,一旦去切换上下文,处理器中所有已经缓存的内存地址一瞬间都作废了。还有一个显著的区别是当你改变虚拟内存空间的时候,处理的页表缓冲(processor’s Translation Lookaside Buffer (TLB))或者相当的神马东西会被全部刷新,这将导致内存的访问在一段时间内相当的低效。但是在线程的切换中,不会出现这个问题。
1.切换页目录以使用新的地址空间
2.切换内核栈和硬件上下文。
对于linux来说,线程和进程的最大区别就在于地址空间。
对于线程切换,第1步是不需要做的,第2是进程和线程切换都要做的。所以明显是进程切换代价大
线程上下文切换和进程上下文切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。另外一个隐藏的损耗是上下文的切换会扰乱处理器的缓存机制。简单的说,一旦去切换上下文,处理器中所有已经缓存的内存地址一瞬间都作废了。还有一个显著的区别是当你改变虚拟内存空间的时候,处理的页表缓冲(processor’s Translation Lookaside Buffer (TLB))或者相当的神马东西会被全部刷新,这将导致内存的访问在一段时间内相当的低效。但是在线程的切换中,不会出现这个问题。
相关文章推荐
- 线程上下文切换和进程上下文切换的区别
- 线程上下文切换和进程上下文切换的区别
- 线程上下文切换和进程上下文切换的区别
- 线程上下文切换和进程上下文切换的区别
- 线程上下文切换和进程上下文切换的区别
- 一些常见笔试题目---堆、栈的区别,进程、线程等
- 进程与线程的关系及区别
- 任务 进程 线程区别
- Java高并发--进程和线程的区别
- 黑马程序员01--线程与进程的区别以及为什么使用多线程?
- 进程与线程的区别
- 进程和线程的区别及联系
- 进程和线程区别总结
- 关于 进程和线程的区别 的讨论,期待大家多给些意见
- 程序、进程、线程区别与联系
- 进程与线程的区别
- 进程与线程的区别?
- 进程和线程的联系和区别
- 线程进程的区别
- 线程,进程 区别