虚拟化下的进程演变(二)—命名空间

来源:互联网 发布:以下哪些淘宝禁售商品 编辑:程序博客网 时间:2024/06/03 22:56

虚拟化下的进程演变(二)—命名空间

虚拟化下的进程演变(一)—移民问题”一文中,所述的身份号的唯一性是相对概念,也就是说需指明其所处范畴。这就引出计算机科学中的一个术语-命名空间(namespace)。

  命名空间-表示标识符(identifier)的上下文(context)。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义互不相干wikipedia的定义)。

  Linux 2.6.24之后的内核中,其显著特点之一就是引入PID 命名空间(PID namespace)。命名空间由来已久,在C++中随处可见。把此概念引入内核,似乎是新瓶装旧酒。但从历史的角度去看,每一次新概念或者潮流的出现,都是在旧有基础上的改进或者演绎。

    PID 命名空间的引入是因为虚拟化技术的出现openVZ虚拟化开源项目组在IBM的协助下,对进程的PID大动干戈,把原先只是一个数字表示的PID演化为一个结构体,并由此带来一些列的变化。

   有了PID命名空间,每台独立的虚拟机像有自己的小王国,可以独自给自己机器上的进程分配PID,也就是尽管A虚拟机上有一个进程的PID123,但B虚拟机上照样可以有一个PID123的进程,但因为所处空间不同而具有了唯一性。或者说,当A虚拟机上的进程P迁移到B虚拟机上时,其PID也应当保持不变,但是如果没有不同的命名空间,移民就可能是失败的,因为目标节点上可能存在两个相同的PID,这会引起命名冲突。

  理性的分析是浅显易懂的,但是落实到具体实现远非表面这么简单。首先,从用户的角度如何创建一个PID命名空间,其次,要支持虚拟化的PID命名空间,内核态代码应当进行怎样的调整?

原创粉丝点击