线程上下文切换与进程上下文切换
2017-09-27 18:29
351 查看
1、进程
进程上下文包含了进程执行所需要的所有信息。
用户地址空间:包括程序代码,数据,用户堆栈等;
控制信息:进程描述符,内核栈等;
硬件上下文:(注意中断也要保存硬件上下文只是保存的方法不同)。
2、进程切换分3步
a.切换页目录以使用新的地址空间
b.切换内核栈
c.切换硬件上下文
3、线程切换
对于linux来说,线程和进程的最大区别就在于地址空间。对于线程切换,第1步是不需要做的,第2和3步是进程和线程切换都要做的。所以明显是进程切换代价大
线程上下文切换和进程上下文切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。
另外一个隐藏的损耗是上下文的切换会扰乱处理器的缓存机制。简单的说,一旦去切换上下文,处理器中所有已经缓存的内存地址一瞬间都作废了。还有一个显著的区别是当你改变虚拟内存空间的时候,处理的页表缓冲(processor’s Translation Lookaside Buffer (TLB))或者相当的神马东西会被全部刷新,这将导致内存的访问在一段时间内相当的低效。但是在线程的切换中,不会出现这个问题。
进程上下文包含了进程执行所需要的所有信息。
用户地址空间:包括程序代码,数据,用户堆栈等;
控制信息:进程描述符,内核栈等;
硬件上下文:(注意中断也要保存硬件上下文只是保存的方法不同)。
2、进程切换分3步
a.切换页目录以使用新的地址空间
b.切换内核栈
c.切换硬件上下文
3、线程切换
对于linux来说,线程和进程的最大区别就在于地址空间。对于线程切换,第1步是不需要做的,第2和3步是进程和线程切换都要做的。所以明显是进程切换代价大
线程上下文切换和进程上下文切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。
另外一个隐藏的损耗是上下文的切换会扰乱处理器的缓存机制。简单的说,一旦去切换上下文,处理器中所有已经缓存的内存地址一瞬间都作废了。还有一个显著的区别是当你改变虚拟内存空间的时候,处理的页表缓冲(processor’s Translation Lookaside Buffer (TLB))或者相当的神马东西会被全部刷新,这将导致内存的访问在一段时间内相当的低效。但是在线程的切换中,不会出现这个问题。
相关文章推荐
- 线程上下文切换和进程上下文切换的区别
- 线程上下文切换和进程上下文切换的区别
- 线程上下文切换和进程上下文切换的区别
- 线程上下文切换和进程上下文切换的区别
- 线程上下文切换和进程上下文切换的区别
- 计算机的异常控制:中断、陷阱、故障、终止、进程上下文切换、信号
- 进程上下文切换 – 残酷的性能杀手
- 进程和线程及应用程序域,上下文
- 13.windbg-!runaway、~、|(控制进程、线程切换)
- Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)
- linux中进程上下文频繁切换导致load average过高
- 【分析】CPU hotplug时进程上下文切换流程分析
- 多线程切换以及线程进程之间关系
- linux进程、调度、线程、进程上下文等几点理解
- 进程、线程和上下文切换
- 进程上下文切换 – 残酷的性能杀手(上)(转载cppthinker.com)
- 进程,线程,协程,并行与并发区别, 上下文
- C#:进程、线程、应用程序域(AppDomain)与上下文分析
- 进程上下文切换 – 残酷的性能杀手(上)
- 操作系统之进程与线程3——内核级线程及切换(未完成)