namespace 理解

2023-05-16

当调用clone时,设定了CLONE_NEWPID,就会创建一个新的PID Namespace,clone出来的新进程将成为Namespace里的第一个进程。一个PID Namespace为进程提供了一个独立的PID环境,PID Namespace内的PID将从1开始,在Namespace内调用fork,vfork或clone都将产生一个在该Namespace内独立的PID。新创建的Namespace里的第一个进程在该Namespace内的PID将为1,就像一个独立的系统里的init进程一样。该Namespace内的孤儿进程都将以该进程为父进程,当该进程被结束时,该Namespace内所有的进程都会被结束。PID Namespace是层次性,新创建的Namespace将会是创建该Namespace的进程属于的Namespace的子Namespace。子Namespace中的进程对于父Namespace是可见的,一个进程将拥有不止一个PID,而是在所在的Namespace以及所有直系祖先Namespace中都将有一个PID。系统启动时,内核将创建一个默认的PID Namespace,该Namespace是所有以后创建的Namespace的祖先,因此系统所有的进程在该Namespace都是可见的

当调用clone时,设定了CLONE_NEWIPC,就会创建一个新的IPC Namespace,clone出来的进程将成为Namespace里的第一个进程。一个IPC Namespace有一组System V IPC objects 标识符构成,这标识符有IPC相关的系统调用创建。在一个IPC Namespace里面创建的IPC object对该Namespace内的所有进程可见,但是对其他Namespace不可见,这样就使得不同Namespace之间的进程不能直接通信,就像是在不同的系统里一样。当一个IPC Namespace被销毁,该Namespace内的所有IPC object会被内核自动销毁。

PID Namespace和IPC Namespace可以组合起来一起使用,只需在调用clone时,同时指定CLONE_NEWPID和CLONE_NEWIPC,这样新创建的Namespace既是一个独立的PID空间又是一个独立的IPC空间。不同Namespace的进程彼此不可见,也不能互相通信,这样就实现了进程间的隔离。

当调用clone时,设定了CLONE_NEWNS,就会创建一个新的mount Namespace。每个进程都存在于一个mount Namespace里面,mount Namespace为进程提供了一个文件层次视图。如果不设定这个flag,子进程和父进程将共享一个mount Namespace,其后子进程调用mount或umount将会影响到所有该Namespace内的进程。如果子进程在一个独立的mount Namespace里面,就可以调用mount或umount建立一份新的文件层次视图。该flag配合pivot_root系统调用,可以为进程创建一个独立的目录空间。

当调用clone时,设定了CLONE_NEWNET,就会创建一个新的Network Namespace。一个Network Namespace为进程提供了一个完全独立的网络协议栈的视图。包括网络设备接口,IPv4和IPv6协议栈,IP路由表,防火墙规则,sockets等等。一个Network Namespace提供了一份独立的网络环境,就跟一个独立的系统一样。一个物理设备只能存在于一个Network Namespace中,可以从一个Namespace移动另一个Namespace中。虚拟网络设备(virtual network device)提供了一种类似管道的抽象,可以在不同的Namespace之间建立隧道。利用虚拟化网络设备,可以建立到其他Namespace中的物理设备的桥接。当一个Network Namespace被销毁时,物理设备会被自动移回init Network Namespace,即系统最开始的Namespace。

当调用clone时,设定了CLONE_NEWUTS,就会创建一个新的UTS Namespace。一个UTS Namespace就是一组被uname返回的标识符。新的UTS Namespace中的标识符通过复制调用进程所属的Namespace的标识符来初始化。Clone出来的进程可以通过相关系统调用改变这些标识符,比如调用sethostname来改变该Namespace的hostname。这一改变对该Namespace内的所有进程可见。CLONE_NEWUTS和CLONE_NEWNET一起使用,可以虚拟出一个有独立主机名和网络空间的环境,就跟网络上一台独立的主机一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

namespace 理解 的相关文章

  • R语言安装ggplot2时出现错误: package or namespace load failed for ‘ggplot2’ in loadNamespace(i, c(lib.loc, .li

    1 问题描述 R语言在R Studio里利用install packages ggplot2 安装ggplot2时出现 错误 span class token punctuation span package span class toke
  • namespace “std“没有成员“function“

    添加头文件 include lt functional gt 确保C 43 43 版本为C 43 43 11或更高
  • vscode 提示 namespace “std“ has no member “mutex“ 解决方法

    在 vscode 打开 c cpp properties json xff0c 将cStandard和cppStandard改成 xff1a span class token string 34 cStandard 34 span span
  • namespace 理解

    当调用clone时 xff0c 设定了CLONE NEWPID xff0c 就会创建一个新的PID Namespace xff0c clone出来的新进程将成为Namespace里的第一个进程 一个PID Namespace为进程提供了一个
  • 《自己动手写Docker》书摘之一: Linux Namespace

    Linux Namespace 介绍 我们经常听到说Docker 是一个使用了Linux Namespace 和 Cgroups 的虚拟化工具 xff0c 但是什么是Linux Namespace 它在Docker内是怎么被使用的 xff0
  • Linux NameSpace (目录)

    1 User Namespace 详解 2 Pid Namespace 详解 3 Mnt Namespace 详解 4 UTS Namespace 详解 5 IPC Namespace 详解 6 Network Namespace 详解
  • 一个文件用两个using namespace

    我在opencv和caffe都看到了 一个文件用两个using namespace 的用法 下面这里说会有命名空间冲突的风险 拍自 学习opencv3 拍自 opencv4计算机视觉项目实战 拍自 深度学习 xff1a 21天实战caffe
  • inline namespace

    include lt iostream gt using namespace std namespace ALL namespace V2014 void fun int num cout lt lt 34 int 34 lt lt 34
  • 虚拟网络namespace 到bridge

    前言 容器的网络是一大难点 xff0c 不管是docker 还是kubernetes 都绕不开计算机网络 以下的介绍主要以计算机网络的namespace 和bridge 两个方面来展开介绍 xff0c 方便深入理解容器的网络原理 1 nam
  • error: ‘PoseStamped’ in namespace ‘geometry_msgs’ does not name a type

    报错现象 error PoseStamped in namespace geometry msgs does not name a type void gt callback const geometry msgs PoseStamped
  • 一文弄清using namespace std;的作用[2021最新版]

    using namespace std 到底有什么用 为什么我们每次头文件后面都要加它 不加它会怎么样 导读 对于很多学习C 的同学 老师教同学们写的一个程序就是 hello world 同时也会在不经意间在头文件的后面加上using na
  • BindingException: Invalid bound statement (not found)

    org apache ibatis binding BindingException Invalid bound statement not found com UserInfoMapper listByRole 报错描述 程序一直可以正常
  • [C++]实现顺序表和单链表

    顺序表 include
  • QT中的this指针什么意思?namespace又是什么意思?

    初学者对于qt中的this指针会摸不着头脑 下面我谈谈自己的理解 结论 this指针 指的就是qt designer里面ui界面 也就是xxx ui文件 举个例子 现在我有三个文件 分别是server h头文件 server cpp源文件
  • C++命名空间

    为了避免变量 函数 类 结构体等重命名 我们可以使用命名空间 简单的用例 定义命名空间 namespace name 代码声明 使用命名空间 code为name命名空间中的成员 name code using指令 使用 using name
  • C# Namespace详解

    我现在感到学好C 就是就是要知道C 的基本语法 C 的新的特点 C 能干什么 其中我感到不管如何 NAMESPACE都是很关键的 可以说不是只对C 而言 而是整个 NET都是由NAMESPACE组成的 所以我在看了C 的基本语法后 就直奔N
  • 详解Namespace与资源限制ResourceQuota,LimitRange

    前面我们对K8s的基本组件与概念有了个大致的印象 并且基于K8s实现了一个初步的CI CD流程 但对里面涉及的各个对象 如Namespace Pod Deployment Service Ingress PVC等 及各对象的管理可能还缺乏深
  • c++命名空间

    命名空间 主要解决全局变量的冲突 内部不允许私有变量 所有变量都是公有的 namespace data int x 10 data x 为域作用符 直接使用等同于使用全局变量 不存在就是0 不包含匿名命名空间内变量 同一个文件引用stati
  • namespace命令空间

    目录 1 解决什么问题 2 基本介绍 2 1 定义 2 2 应用场景 3 使用案例 4 资源配额 5 标签 5 1 定义 5 2 pod资源打标签 5 3 查看标签 1 解决什么问题 命令空间类似于C 中的命名空间 当用户数量较多的集群 才
  • C++ 类中的static成员的初始化和特点

    C 类中的static成员的初始化和特点 在C 的类中有些成员变量初始化和一般数据类型的成员变量有所不同 以下测试编译环境为 g v Using built in specs COLLECT GCC g Target x86 64 linu

随机推荐

  • conda install遇到condahttperror问题——代理

    如上图 xff0c 无论wget 还是conda install均出现以上提示 xff0c 换了各种conda源也无法解决 其中注意10 19 110 31 xff0c 发现是代理问题 查看proxy xff1a env grep i pr
  • 维普下载论文

    前几天还在感叹没有网站提供论文评论 现在发现维普已经提供论文评论 并且评论的东西都可以积分 积分之后可以下载论文 推荐论文让别人点击也可以增加积分 是个不错的计划
  • CentOS7 关闭防火墙

    CentOS6关闭防火墙使用以下命令 xff0c span class hljs comment 临时关闭 span service iptables stop span class hljs comment 禁止开机启动 span chk
  • 告别我的2016

    又过了一年 xff01 xff01 xff01 每一年都会因为所经历的不同 xff0c 收获也不同 在过去的2016年 xff0c 回想自己在工作上好像没有做多少事情 xff0c 却也有不一样的收获 2016年2月份 xff0c 刚过来春节
  • 判断某个月份是否在给定的月份区间内

    判断某个月份是否在给定的月份区间内 输入 指定月份 xff1a m m m 月份区间 xff1a m 1 m 1
  • 数据清洗

    1 概念 数据清洗 xff1a 把脏数据清洗掉 xff0c 提高数据质量 Data cleansing Data cleaning Data scrubbing三种表达方式都可以 xff0c 意思都是检测和去除数据集中的噪声数据和无关数据
  • 联想H61主板升级BIOS,支持nvme硬盘

    本教程升级有一定风险 xff1a 请阅读文章最后的 遗憾 部分接受再升级 最近因为手上有一台联想的i7 2600主机 xff0c 他的主板是H61的 xff0c 正好看见pcie接口空着 xff0c 在网上看见有人用它升级了拜滕的存储芯片
  • armv8 摘要

    作者 xff1a 蜗蜗 发布于 xff1a 2015 7 7 22 31 分类 xff1a ARMv8A Arch 1 前言 ARMv8 xff08 当前只有A系列 xff0c 即ARMv8 A xff09 架构 xff0c 是ARM公司为
  • android 绘制过程摘要

    1 没有硬件加速的UI绘制过程 xff1a 在Android应用程序进程这一侧 xff0c 每一个窗口都关联有一个Surface 每当窗口需要绘制UI时 xff0c 就会调用其关联的Surface的成员函数lock获得一个Canvas xf
  • opengl 摘要

    一 创建opengl工程 1 第一步设置像素格式 如支持双缓冲 xff0c 设置颜色模式 xff0c 如是rgba xff0c 还是颜色索引 xff08 需调色板 xff09 xff0c 设置模板缓冲区的特征值 2 第二步创建绘制环境 且自
  • Watchdog

    一 简介 软件狗 类似硬件狗 xff0c 硬件狗是被动等 喂 xff0c 系统主要线程主动调用硬件接口 xff0c 告诉系统本线程是正常的 但android 这种framework层中的软件狗本身是一个线程 xff0c 会主动询问系统关键线
  • android Binder 学习

    一 面向过程调用与面向对象调用的区别 1 面向过程调用同一时刻只能服务一个客户 xff0c 而且该过程必须具有锁功能 xff0c 如果有其他客户想要访问 xff0c 则需要等待前一客户完成操作 2 面向对象则能同时服务多个客户 xff0c
  • QEMU KVM 虚拟机移植之性能提高篇小结(android 虚拟机双系统方案)

    一 提升性能核心要素 1 将 OPENGL 接口进行穿透调用 xff0c 下面对opengl穿透做个小结 2 在arm开发板上打开kvm特性 xff0c 这个qcom amp mtk都是实现了的 xff0c 只需要打开开关即可 二 ANDR
  • android 系统基础知识

    一 Activity 启动模式 Activity有四种启动模式 xff1a standard singleTop singleTask singleInstance 可以在AndroidManifest xml中activity标签的属性a
  • android 内存管理概要

    一 zram zram swap 主要原理就是从内存分配一块区域出来用作 swap 分区 xff0c 每次如果内存空间不够了 xff0c 不是把应用程序杀掉 xff0c 而是把应用程序所占用的内存数据复制到 swap 分区 xff0c 等切
  • python统计从1970/1/1 08:00:00到某个时刻的总秒数

    使用场景 xff0c 比如需要从一堆文件中 xff0c 选出时间属性在2017年12月13日00 00 00以后的所有文件 span class token keyword import span os statinfo span clas
  • art知识简要概括

    一 GC分类 1 kGcCauseForAlloc 当没有足够的内存分配时触发 2 kGcCauseBackground 当已使用的内存超过最大值时触发 3 kGcCauseExplicit 当使用System GC时触发 二 GC守护线程
  • SEAndroid 知识点

    一 DAC 1 自主访问控制 Linux上的安全模型叫DAC xff0c 进程的权限与执行它的用户的权限一致 xff0c file针对所有者 所有者组 其他用户制定相关权限 二 MAC 1 强访问控制 SELinux上的安全模型叫MAC x
  • Cgroup 理解

    一 综述 1 cgroup 可以控制进程组的资源 xff08 cpu memory i o等 xff09 2 cgroup 采用树型结构来控制进程组的资源 3 cgroup 利用资源子系统来分割资源 4 cgroup 是lxc xff0c
  • namespace 理解

    当调用clone时 xff0c 设定了CLONE NEWPID xff0c 就会创建一个新的PID Namespace xff0c clone出来的新进程将成为Namespace里的第一个进程 一个PID Namespace为进程提供了一个