进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的独立单位
线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可以和同属一个进程的其他线程共享进程所拥有的全部资源
关系:
一个进程中至少有一个线程,一个线程可以创建和撤销另一个线程,同一个进程中的多个线程可以并发执行
区别:
进程和线程的主要区别在于他们是不同操作系统资源管理方式,进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程造成影响,而线程只是一个进程的不同执行路径。线程有自己的堆栈和局部变量,但是线程没有单独的地址空间,一个线程死掉等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,消耗资源比较大,效率要差一些,对于一些要求同时运行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
优缺点:
线程执行开销小,但是不利于资源的管理和保护,进程正好相反。同时线程适用于在SMP机器上运行,而进程则可以跨机器迁移。
进程和应用程序之间的联系可参照:
http://blog.csdn.net/agonie201218/article/details/51079254