进程和线程的对比

2021-07-16  本文已影响0人  名字是乱打的

问题

一 进程和线程的对比

二 为什么进程切换开销大,线程切换开销低呢?

......................................................................................................................................................


一 进程和线程的对比

几个方面对比:

二 为什么进程切换开销大,线程切换开销低呢?

关键点在于: \color{red}{虚拟内存}

什么是虚拟内存?

虚拟内存是操作系统为每个进程提供的一种抽象,每个进程都有属于自己的、私有的、地址连续的虚拟内存,当然我们知道最终进程的数据及代码必然要放到物理内存上,那么必须有某种机制能记住虚拟地址空间中的某个数据被放到了哪个物理内存地址上,这就是所谓的地址空间映射,也就是虚拟内存地址与物理内存地址的映射关系,那么操作系统是如何记住这种映射关系的呢,答案是\color{red}{页表,页表中记录了虚拟内存地址到物理内存地址的映射关系。}有了页表就可以将虚拟地址转换为物理内存地址了,这种机制就是虚拟内存。

每个进程都有自己的虚拟地址空间,进程内的所有线程共享进程的虚拟地址空间

那么到底为什么进程切换开销大,线程切换开销低呢

我们已经知道了进程都有自己的虚拟地址空间,把虚拟地址转换为物理地址需要查找页表,页表查找是一个很慢的过程,因此通常使用\color{red}{Cache来缓存常用的地址映射,这样可以加速页表查找,这个cache就是TLB},我们不需要关心这个名字只需要知道TLB本质上就是一个cache,是用来加速页表查找的。由于每个进程都有自己的虚拟地址空间,那么显然每个进程都有自己的页表,那么\color{red}{当进程切换后页表也要进行切换,页表切换后TLB就失效了}\color{red}{cache失效导致命中率降低,那么虚拟地址转换为物理地址就会变慢}表现出来的就是程序运行会变慢,而线程切换则不会导致TLB失效因为线程线程无需切换地址空间,因此我们通常说线程切换要比较进程切换块,原因就在这里。

ps:

如果大家需要了解一下进程,线程状态转换,信息的保存
这里大家要熟悉一下PCB进程控制块以及寄存器和计数器

上一篇下一篇

猜你喜欢

热点阅读