虚拟化下的进程演变(三)—繁衍

Unix/Linux的世界,除init进程外,没有进程是从石头缝蹦出来的,也就是Init进程承担着祖师爷的角色。一个进程PID命名空间的诞生也遵循繁衍的规则,只是这种繁衍不是克隆一个进程,而是克隆一个小国,因此,clone()个系统调用依然粉墨登场。旧瓶装新酒,内核补丁提交者在<inux/sched.h>中增加一个新的标志

#define CLONE_NEWPID   0x20000000 /* New pid namespace */

  看似这么简单的一个定义,让clone()就可以克隆PID命名空间。具体用法参见 Linux PID namespace一文。

  在新的命名空间中, init进程与生俱来,为1号进程,由他繁衍其他后代,其PID依次为2,3。如果有孤儿进程,init依然会作为养父将孤儿收养,但与根红苗正的ini进程不同,命名空间中的init可以死亡,果真如此,整个命名空间也就没有存在的意义,自行消亡。

  别以为新的命名空间与父亲有同等的地位。一旦一个新的PID命名空间诞生,父空间中的所有进程可以与孩子空间中的进程打交道,但反之则不然,也就是子空间根本就看不见父空间。这还意味着,此时,每个进程(比如init)不止一个PID-在每个空间中都有自己的PID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值