进程和线程是操作系统中的概念,也是平时被面试时问道的最多的问题,因此,我想谈谈我对2个概念的一些自己的看法。
首先,说一下他们2个定义:
进程:具有一定独立功能的程序关于一个数据集合的一次运行活动。
线程:又叫轻进程,是进程内部的一个相对独立的执行流。
从定义上可以看出,进程的范围更大些,它包括线程,一个进程至少有一个线程,也可以有多个线程,一般认为,进程是资源的分配单位,线程是cpu调度的单位。
进程有自己的独立的内存单元,而线程则是多个线程共享内存。这样决定了他们各自的优缺点:进程由于有自己的独立的内存空间,所以一个进程的崩溃不会对其他进程产生大的影响,但是进程占有较大的资源,所以开销大。线程相对来讲,上下文切换速度快,系统开销小,而且容易互相通信。
说一下unix系统下进程的创建和撤销的函数。
pid = fork(); exit(status);
进程从操作系统的角度看可以分为系统进程和用户进程。系统进程有自己的独立内存空间,而用户进程是不能使用这段内存空间的。进程的特性:1并发性2动态性3独立性4交互性5异步性6结构性。
线程有自己的堆栈和局部变量,这样一个进程中的共享地址空间的线程就能够区分开,线程更适合并发执行,有利于信息的传递。
网友评论