Linux 命名空间:UTS 与网络命名空间实现解析
1. 命名空间概述
在 2006 年渥太华 Linux 研讨会(OLS)的一次演讲中,Eric W. Biederman 提到了十个命名空间,其中设备命名空间、安全命名空间、安全密钥命名空间和时间命名空间尚未实现。对于命名空间的更多信息,可以阅读 Michael Kerrisk 的系列文章。移动操作系统虚拟化项目推动了对设备命名空间的开发支持。
与命名空间相关的系统调用有三个:
- clone() :创建一个附加到新命名空间(或多个命名空间)的新进程。命名空间的类型由作为参数传递的 CLONE_NEW* 标志指定,也可以使用这些标志的位掩码。该系统调用的实现在 kernel/fork.c 中。
- unshare() :前文已讨论。
- setns() :前文已讨论。
命名空间在内核中没有可供用户空间进程使用的名称。用户空间进程应打开 /proc/<pid>/ns/ 下的命名空间文件,使用其文件描述符与特定命名空间进行通信,以保持该命名空间的存活。命名空间由创建时生成的唯一 proc 索引节点号标识,释放时会被释放。
2. UTS 命名空间实现
为了实现 UTS 命名空间,添加了 uts_namespace 结构体:
struct uts_namespace {
超级会员免费看
订阅专栏 解锁全文

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



