Linux Kernel: process namespace黑科技

通过这个namespace的概念,Linux上就可以实现一个虚拟的系统了。

什么意思?使用clone()系统调用,加上一定的flag,就可以将一个进程 process_a 放在与当前namespace  ns_a 不同的另一个namespace  ns_b 中,这时, process_a 在 ns_b 中的PID就是 1 ,也就相当于传统*NIX类系统的init进程。

当然,这个 process_a 在 ns_a 中还是可见的。只是,在 ns_a 中的进程号和在 ns_b 中的进程号不一样而已。

【1】:Namespace in Operation,Part I

【2】:Namespace in Operation,Part II

【3】:Namespace in Operation,Part III

【4】:Namespace in Operation,Part IV

【5】:Namespace in Operation,Part V

Extra:

【6】:Introduction to Linux Container,RedHat Linux

【7】:Namespace(7), Linux man pages

【8】:User Namespace Progress, Michael Kerrisk

【9】:The failure of Operating System and How we can fix it, Michael Kerrisk

【10】:http://stackoverflow.com/questions/26779416/what-is-the-relation-between-task-struct-and-pid-namespace

:)

时间: 2024-08-04 21:18:08

Linux Kernel: process namespace黑科技的相关文章

Linux Kernel:  container_of 黑科技

1 #include<stdio.h> 2 3 #define offsetof(TYPE,MEMBER) ((size_t)&((TYPE*)0)->MEMBER) 4 5 #define container_of(ptr,type,member) ({ 6 const typeof( ((type*)0)->member ) *__mptr = (ptr); 7 (type *)( (char *)__mptr - offsetof(type,member) );})

Kernel Page Global Directory (PGD) of Page table of Process created in Linux Kernel

Kernel Page Global Directory (PGD) of User process created 在早期版本: 在fork一个进程的时候,必须建立进程自己的内核页目录项(内核页目录项要与用户空间的页目录放在同一个物理地址连续的页面上,所以不能共享,但所有进程的内核页表与进程0共享)3G用户,页目录中一项映射4M的空间(一项页目录1024项页表,每项页表对应1个页面4K),即:#define PGDIR_SHIFT 22#define PGDIR_SIZE (1UL << P

Linux Kernel - Debug Guide (Linux内核调试指南 )

http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环

linux kernel的中断子系统之(八):softirq

一.前言 对于中断处理而言,linux将其分成了两个部分,一个叫做中断handler(top half),是全程关闭中断的,另外一部分是deferable task(bottom half),属于不那么紧急需要处理的事情.在执行bottom half的时候,是开中断的.有多种bottom half的机制,例如:softirq.tasklet.workqueue或是直接创建一个kernel thread来执行bottom half(这在旧的kernel驱动中常见,现在,一个理智的driver厂商是

linux kernel的中断子系统之(七):GIC代码分析

一.前言 GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1-V4(V2最多支持8个ARM core,V3/V4支持更多的ARM core,主要用于ARM64服务器系统结构).目前在ARM官方网站只能下载到Version 2的GIC architecture specification,因此,本文主要描述符合V2规范的GIC硬件及其驱动. 具体GIC硬件的实现形态有两

Linux kernel的中断子系统之(六):ARM中断处理过程

一.前言 本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作.具体整个处理过程分成三个步骤来描述: 1.第二章描述了中断处理的准备过程 2.第三章描述了当发生中的时候,ARM硬件的行为 3.第四章描述了ARM的中断进入过程 4.第五章描述了ARM的中断退出过程 本文涉及的代码来自3.14内核.另外,本文注意描述ARM指令集的内容,有些source code为了简短一些,删除了THUMB相关的代码,除此之外,有些debug相关的内容也会删除. 二.中断处理的准备过

Linux Kernel 开发报告 25 周年版

Linux基金会发布 2016 年度 Linux 内核开发报告,这次恰逢 Linux 内核 25 周年(腾云科技ty300.com),所以相比往年又更多的回顾性内容,值得一读. Linux 内核开发报告 2016 版 一些有趣的信息: 自 3.18 内核以来,合并自Linux Kernel内核的新功能覆盖面更为广泛,且涉及安全性的新功能越来越多 4.0 系列的引入仅仅是由于 Linus (基础教程qkxue.net)觉得小版本号已经超越正常人手指和脚趾数量的总和了.每一个内核版本发布都是传统意义

Linux Booting Process: A step by step tutorial for understanding Linux boot sequence

One of the most remarkable achievement in the history of mankind is computers. Another amazing fact about this remarkable achievement called computers is that its a collection of different electronic components, and they work together in coordination

[黑科技]常数优化的一些技巧

感谢wys和小火车普及这些技巧qwq 这篇文章大概没什么营养 我们来看一道十分简单的题目: 设n=131072,输入两个长度为n的数列和,要求输出一个长度为n的数列. 其中,. 首先我们来讲讲这题怎么做. 如果数据是随机的,那么有一种神奇的做法:在a和b中分别挑出最大的p个元素,对于每个i暴力枚举每个p进行更新,这样的复杂度是O(np)的,正确性我不会分析= = 那么数据不是随机的...那么估计没有什么快速的算法,不如暴力! 以下的运行时间均为在我的渣渣笔记本中测试得到,仅供参考.测试环境Ubu