Linux命名空间深入解析
1. 命名空间概述
在2006年的渥太华Linux研讨会(OLS)上,Eric W. Biederman提到了十种命名空间,其中设备命名空间、安全命名空间、安全密钥命名空间和时间命名空间尚未实现。对于命名空间的更多信息,可阅读Michael Kerrisk的系列文章。移动操作系统虚拟化项目推动了对设备命名空间的开发,相关信息可参考Jake Edge的文章。此外,也有关于实现新的syslog命名空间的工作。
与命名空间相关的系统调用有三个:
- clone() :创建一个附加到新命名空间(或多个命名空间)的新进程,通过 CLONE_NEW* 标志指定命名空间类型,可使用这些标志的位掩码。该系统调用的实现在 kernel/fork.c 中。
- unshare() :前文已讨论。
- setns() :前文已讨论。
命名空间在内核中没有可供用户空间进程使用的名称。用户空间进程应打开 /proc/<pid>/ns/ 下的命名空间文件,使用其文件描述符与特定命名空间通信,以保持该命名空间的活动状态。命名空间由创建时生成的唯一proc inode编号标识,释放时该编号被释放。六个命名空间结构中都包含一个名为 proc_inum 的整数成员,通过调用 proc_alloc_inum() 方法分配。每个命名空间还有一个 proc_ns_operations 对
超级会员免费看
订阅专栏 解锁全文
1246

被折叠的 条评论
为什么被折叠?



