进程切换和线程切换?
进程切换和线程切换的区别
- 进程切换涉及 虚拟地址空间 的切换而线程不会,虚拟地址空间切换会比较耗时
- 把虚拟地址转换为物理地址需要 查找页表,页表查找是一个很慢的过程
- 通常使用Cache(TLB)来缓存常用的地址映射,这样可以加速页表查找
- 每个进程都有自己的页表,当进程切换后页表也要进行切换,页表切换后TLB就失效 ,cache失效导致命中率降低,那么虚拟地址转换为物理地址就会变慢,表现出来的就是程序运行会变慢
虚拟内存
- 操作系统为每个进程提供的 一种抽象 ,每个进程都有属于自己的、私有的、地址连续的虚拟内存
- 最终进程的数据及代码必然要放到物理内存上,那么必须有某种机制能记住虚拟地址空间中的某个数据被放到了哪个物理内存地址上,这就是所谓的 地址空间映射,那么操作系统是如何记住这种映射关系的呢,答案就是页表