linux下的进程、子进程以及线程

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

SHMILY

赞同来自:

本帖最后由 SHMILY 于 2014-1-24 01:12 编辑

用一个项目工程来比喻就是,一个项目就相当于一个程序,而工程就是进程(一般来说一个程序就一个进程);一个大工程可以有一个或多个工程分队组成,这个工程分队就是子进程;线程就类似工程任务,多个任务可以同时进行(如装线路的装线路,装机柜的装机柜),任何一个任务没能完成都会影响到整个工程;
线程之间可以共享进程内的所有资源(即所有工程任务都可以共享工程内的设备工具一样)
0

nihao426181

赞同来自:

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0

nihao426181

赞同来自:

^^^$^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0

nihao426181

赞同来自:

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0

nihao426181

赞同来自:

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0

nihao426181

赞同来自:

****************************************8
0

ztonglinyx

赞同来自:

通俗易懂   

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: