在上次的文章《虚拟化的基石——Namespace》 中主要讲述了Namespace的作用,却没有详细的拿代码举证,上次仅仅证明了UTS Namespace,剩下五个命名空间全在这篇文章了,主要是IPC Namespace、PID Namespace、Mount Namespace、User Namespace、Network Namespace的概念的理解以及使用代码证明!
IPC Namespace
IPC Namespace用来隔离System V IPC和POSIX message queues。每一个 IPC Namespace,都有自己的System V IPC和POSIX message queue。所谓System V IPC即系统IPC资源,其实主要是共享内存、信号量( System V信号量 )、消息队列;POSIX message queues其实就是随文件系统的消息队列
随进程持续的(Process-Persistent IPC)
IPC对象一直存在,直到最后拥有他的进程被关闭为止,典型的IPC有pipes(管道)和FIFOs(先进先出对象)随内核持续的(Kernel-persistent IPC)
IPC对象一直存在直到内核被重启或者对象被显式关闭为止,在Unix中这种对象有System v 消息队列,信号量,共享内存。(注意Posix消息队列,信号量和共享内存被要求为至少是内核持续的,但是也有可能是文件持续的,这样看系统的具体实现)。随文件系统持续的(FileSystem-persistent IPC)
除非IPC对象被显式删除,否则IPC对象会一直保持(即使内核才重启了也是会留着的)。如果Posix消息队列,信号量,和共享内存都是用内存映射文件的方法,那么这些IPC都有着这样的属性。
还是昨天的UTS Namespace代