陈莉君

陈莉君的博客

她的个人主页  她的博客

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

陈莉君  2010年02月09日 星期二 22:27 | 1474次浏览 | 2条评论

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

   命名空间 - wikipedia 的定义,是一个抽象的容器,允许具有相同名字的事情存在于不同的命名空间。

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

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

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

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

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
向东

回复 向东  2010年02月10日 星期三 18:45

大道至简,大道至简啊,学习了,还请老师继续讲解,学生继续受教,呵呵

1条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号