进程、线程的概念、区别和联系;并发、并行概念、区别和联系

以下概念摘自《疯狂java讲义》和《深入理解计算机系统》:

程序和进程(Process):

几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是指一个程序。程序和进程的主要区别:程序是一个静态的指令集合,进程则是正在系统中活动的指令集合。换句话说,运行中的程序就是进程。

进程具有三个重要的性质:独立性、动态性、并发性

独立性:经常在操作系统中独立存在,拥有独立的资源和私有的地址空间。没有经过进程自身允许,其它用户进程不能直接访问进程的地址空间。

动态性:进程是运行中的程序,具有自己的生命周期和各种不同状态。

并发性:多个进程可以在单个处理器上并发执行,互不影响。所谓并发(concurrency)指的是同一时刻只能执行一条指令,但多个进程可以快速的切换执行,使得宏观上具有多个进程同时执行的效果,这种交错执行称为上下文切换。并行(parallel)则指同一时刻有多条指令在多个处理器上同时执行

大部分操作系统都支持并发运行,一个CPU一个时间点只能运行一个进程,CPU一直不断的在进程之间轮换执行,由于CPU的计算速度很快,所以会给用户同时运行多个进程的错觉,如:听歌的同时在上网。进程过多后,就会明显感觉到执行速度的降低。

线程(Thread)和进程:

线程时进程的执行单元,又叫做轻量级进程(Lightweight Process)。线程在进程中的地位就像进程在操作系统中的地位一样。一个进程可以有多个线程,但一个线程只能有一个父进程。当进程被初始化后,就会创建一个主线程,通常大多数程序只要求有一个主线程,但也可以创建多个,线程之间是相互独立的。此外,线程作为进程的一部分,可以拥有自己的堆栈、程序计数器(标记下一步开始执行的位置)、局部变量,但不占有系统资源。进程内的多个线程共有进程的系统资源。线程共享的资源包括:进程代码段、进程的公有数据等,线程的调度和管理由进程本身负责。

归纳起来:一个操作系统可以同时执行多个任务,每个任务就是进程。进程可以同时执行多个任务,每个任务就是线程。

多线程由于可以共享内存、文件句柄、其它进程应有的状态、线程间隔离程度比进程小等优点,使得相对于多进程而言,程序的运行效率、资源的占用程度、并发的性能较好,因此多线程编程具有很大的优势,在实际编程中应用广泛。

喜欢小编的文章可以支持一下哦!同时,小编是一个有着10年工作经验的架构师,对于c++,自己有做资料的整合,一个完整学习C语言c++的路线,学习资料和工具。可以进我的群领取,免费送给大家。希望你也能凭自己的努力,成为下一个优秀的程序员!裙号:648778840

你可能感兴趣的:(进程、线程的概念、区别和联系;并发、并行概念、区别和联系)