进程都有自己的虚拟地址空间,把虚拟地址转换为物理地址需要查找页表,页表查找是一个很慢的过程,因此通常使用 Cache 来缓存常用的地址映射,这样可以加速页表查找,这个 Cache 就是 TLB(translation Lookaside Buffer, TLB 本质上就是一个 Cache,是用来加速页表查找的)。
由于每个进程都有自己的虚拟地址空间,那么显然每个进程都有自己的页表, 那么当进程切换后页表也要进行切换,页表切换后 TLB 就失效了,Cache 失效导致命中率降低,那么虚拟地址转换为物理地址就会变慢,表现出来的就是程序运行会变慢,而线程切换则不会导致 TLB 失效,因为线程无需切换地址空间,因此我们通常说线程切换要比较进程切换块,原因就在这里。
相关问题
-
请详细介绍一下 TCP 的三次握手机制,为什么要三次握手?
1个月前 1 273
-
硬链接和软链接有什么区别?
1个月前 1 154
-
讲一讲 SYN 超时,洪泛攻击,以及解决策略
1个月前 1 307
-
进程和线程的区别?
1个月前 1 207
-
线程的分类?
1个月前 2 178
-
协程与线程的区别?
1个月前 1 171
-
线程同步的方式有哪些?
1个月前 1 366
-
中断和轮询有什么区别?
1个月前 1 188
-
什么是临界区,如何解决冲突?
1个月前 1 298
-
页面替换算法有哪些?
1个月前 1 174
-
什么是虚拟内存?
1个月前 1 168
-
什么是分段?
1个月前 1 264
-
进程与线程的切换流程?
1个月前 1 386
-
进程有哪些状态?
1个月前 1 305
-
中断的处理过程?
1个月前 1 177
-
什么是缓冲区溢出?有什么危害?
1个月前 1 262
-
什么是分页?
1个月前 1 180
-
进程调度策略有哪几种?
1个月前 1 314
-
分页和分段有什区别?
1个月前 1 151
-
讲一讲 IO 多路复用?
1个月前 1 168