网上查了好多资料,大部分都是针对开发的,讲的比较深入,通常作为系统管理员的我们来讲是比较难搞懂的。但有一篇拿了一个很通俗的例子来简单介绍了一下,这让我豁然开朗。下面我简单介绍一下,分享给有心的朋友。
进程与子进程的关系,其实就是父与子的关系,就像linux系统下的init进程,就是一个父进程,而init下的所有进程都是子进程。有用过nginx的朋友肯定知道,nginx也是先起一个主进程,然后这个主进程再起来多个子进程。每个子进程都会有他们独立的逻辑地址空间,也就是说进程A和进程B是各自用各自的资源(比如内存)。而线程是进程内部细分的执行单元,同一个进程下的线程之间都是共用资源的,它们共享母进程的逻辑地址空间。
再拿网上那个通俗的例子来说明一下:每个人都有独立的思想、思维,甲不能把自己的思想强加给乙去控制乙的思维、思想,这就是进程与进程的关系;而每个人都有很多个想法,想法之间会有矛盾,会打架,那么诸多想法就是线程的关系。
还有一点要说的是,诸多线程是共享内存的,一旦某一个线程崩溃了,那么整个母进程也会被连累,这是线程的鸡肋。但是它的优点就是,线程比进程耗费的内存更少,各线程间通信要比进程间通信简单的多也快的多。
进程与子进程的关系,其实就是父与子的关系,就像linux系统下的init进程,就是一个父进程,而init下的所有进程都是子进程。有用过nginx的朋友肯定知道,nginx也是先起一个主进程,然后这个主进程再起来多个子进程。每个子进程都会有他们独立的逻辑地址空间,也就是说进程A和进程B是各自用各自的资源(比如内存)。而线程是进程内部细分的执行单元,同一个进程下的线程之间都是共用资源的,它们共享母进程的逻辑地址空间。
再拿网上那个通俗的例子来说明一下:每个人都有独立的思想、思维,甲不能把自己的思想强加给乙去控制乙的思维、思想,这就是进程与进程的关系;而每个人都有很多个想法,想法之间会有矛盾,会打架,那么诸多想法就是线程的关系。
还有一点要说的是,诸多线程是共享内存的,一旦某一个线程崩溃了,那么整个母进程也会被连累,这是线程的鸡肋。但是它的优点就是,线程比进程耗费的内存更少,各线程间通信要比进程间通信简单的多也快的多。
编辑回复