[面试]进程与线程的区别联系,并发和并行的区别

来源:互联网 发布:json数据格式 编辑:程序博客网 时间:2024/06/04 19:54

进程与线程

1) 拥有:一个程序至少有一个进程,一个进程至少有一个线程.

2)单位:进程是系统进行资源分配和调度的一个独立单位线程是进程的一个实体,是CPU调度和分派的基本单位

3) 划分尺度和并发性:线程的划分尺度小于进程,使得多线程程序的并发性高

4) 执行过程:进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

5) 开销和资源管理:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。

6)健壮性和效率:主要差别在于它们是不同的操作系统资源管理方式。进程比线程健壮性好进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,因而进程效率要比线程差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

并发(concurrency)和并行(parallellism)

并发是指多个事件在同一时间间隔发生(交替

并行是指多个事件在同一时刻发生(同时


并发是两个队列交替使用一台咖啡机,并行是两个队列同时使用两台咖啡机。

 

问:并发是不是一个线程,并行是多个线程?

答:并发和并行都可以是多个线程,就看这些线程能不能同时被多个cpu执行,如果可以就说明是并行,而并发十多个线程被一个cpu轮流切换着执行。


原创粉丝点击