操作系统-线程和进程之间的关系

线程和进程之间的关系

1、根本区别:进程是资源分配的最小单位,线程是资源调度(CPU)的最小单位,一个进程可以有很多个线程。

2、地址空间:进程有自己的地址空间,当启动一个进程的时候,分配内存,建立数据表来维护代码段、堆栈段和数据段,操作昂贵。线程共享进程中的数据,使用相同的地址。

3、开销:因线程共享进程地址,所以同时创建一个进程和线程,线程所需要的开销要少。车的一个位置和两辆车哪个需要的开销大不言自明。

4、通信:线程间通信更方便,因为他们共享资源,但是同时访问资源时,可能会涉及到锁;而进程间通信需要特殊的手段进行。线程通信就好比一辆车,车上的人如果想换座位,直接和人面对面沟通就行,而进程通信好比两辆车,要换一辆车,那么必须通过车站才能进行。

5、健壮性:多进程比多线程更加健壮,因为假如一个线程崩了,那么将会导致整个进程都崩掉,所以会使其他的线程也都崩掉,而多进程编程,因为线程之间都拥有独自的地址空间,所以一个进程崩了并不会影响其他的进程。假如进程是辆车,线程是车的发动机或者轮胎,假如有一个坏了,车就开不了了,但是如果是两辆车,那么一辆车坏了并不会影响其他的车。

6、拓展性:进程适合扩展到多机,线程适合拓展到多核。

7、特有性:线程独有的资源:线程id,寄存器组的值、线程的堆栈、错误返回码、线程的信号屏蔽码、线程的优先级


版权声明:本文为kuaiqianzhewodewazi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。