Linux核心中的Namespace

2021-07-05 03:42:44 字數 748 閱讀 3650

linux核心中的namespace提供了乙個輕量級的基於系統呼叫層面的虛擬化解決方案。相比傳統的使用 vmware,qemu,xen,kvm,hurd的虛擬(圖1所示),基於namespace的輕量級虛擬具有易使用,易管理,無需硬體虛擬化支援,低 成本等優點。

圖 1.

namespace又稱container,這種技術類似於solaris zones和

bsd jails, 也和c++中的namespace概念相似。在linux系統中,系統資源如程序,使用者賬號,檔案系統,網路都屬於某個namespace。每個 namespace下的資源對於其他namespace下的資源都是透明,不可見的。因此在作業系統層面上看,就會出現多個相同pid的程序,多個相同 uid的賬號。就如圖2所示的,系統中可以同時存在兩個程序號為0,1,2的程序,由於屬於不同的namespace,所以它們之間並不衝突。而在使用者層 面上只能看到屬於使用者自己namespace下的資源,例如使用ps命令只能列出自己namespace下的程序。這樣每個namespace看上去就像 乙個單獨的linux系統。

圖 2.

namespace還擁有層次關係。圖3中,乙個parent namespace下有兩個child namespace。parent namespace和它的兩個child namespace都有三個程序號為1,2,3的程序,同時child namespace的每個程序被對映到了parent namespace中的4,5,6,7,8,9。雖然只有9個程序,但需要15個程序號來表示它們。

圖 3.

Linux核心中的list for each

在linux核心原始碼中,經常要對鍊錶進行操作,其中乙個很重要的巨集是list for each entry 意思大體如下 假設只有兩個結點,則第乙個member代表head,list for each entry的作用就是迴圈遍歷每乙個pos中的member子項。巨集list for each e...

linux核心中的 config

經過make menuconfig 生成 config 決定哪些驅動編譯到核心,哪些驅動編譯為模組 那為什麼呢?舉個例子分析一下 eg 在.config 中有 config dm9000 y grep config dm9000 r 1.c檔案中 arch arm mach s5pv210 mach...

linux核心中的list entry巨集

初學linux核心 將學習中的一些知識點儲存起來,方便以後查閱。define list entry ptr,type,member container of ptr,type,member list entry只是一層封裝,實際上起作用的是container of巨集,define containe...