差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
linux:kernel:namespace:more_on_pid_namespaces [2013/08/26 11:18] – [unshare() と setns()] tenforward | linux:kernel:namespace:more_on_pid_namespaces [2013/08/27 15:12] (現在) – tenforward | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== PID 名前空間について更にもう少し ====== | + | ====== |
この記事では,PID 名前空間の先週の議論を続ける (そして名前空間に関する進行中のシリーズを続ける).PID 名前空間の利用法の一つは,パッケージ化したプロセス (コンテナ) を実装することである.これは独立した Linux システムのように振る舞う.伝統的なシステムのキーとなる部分は init プロセスである.そしてこれは PID 名前空間を使ったコンテナでも同様である.なので,init プロセスの特別な役割を調べ,伝統的な init プロセスとは違う点について 1 つ,2 つ述べる.加えて,PID 名前空間に適用する時の名前空間 API の他の詳細を調べる. | この記事では,PID 名前空間の先週の議論を続ける (そして名前空間に関する進行中のシリーズを続ける).PID 名前空間の利用法の一つは,パッケージ化したプロセス (コンテナ) を実装することである.これは独立した Linux システムのように振る舞う.伝統的なシステムのキーとなる部分は init プロセスである.そしてこれは PID 名前空間を使ったコンテナでも同様である.なので,init プロセスの特別な役割を調べ,伝統的な init プロセスとは違う点について 1 つ,2 つ述べる.加えて,PID 名前空間に適用する時の名前空間 API の他の詳細を調べる. | ||
行 147: | 行 147: | ||
{{: | {{: | ||
+ | |||
+ | setns() と unshare() は PID 名前空間を特別に扱うと強調する価値はある.他のタイプの名前空間に対しては,これらのシステムコールは呼び出し元の名前空間を変更する.これらのシステムコールが呼び出し元の PID 名前空間を変更しない理由は,他の PID 名前空間のメンバーになることは,自身の PID のプロセスを変更させることにつながる.getpid() は,そのプロセスが属する PID 名前空間に関するプロセスの PID を報告するからである.多数のユーザ空間のプログラムやライブラリは (getpid() が報告する) プロセスの PID は一定であるという仮定がある (事実,GNU C ライブラリの getpid() のラッパー関数は PID を[[http:// | ||
+ | |||
+ | ===== 最後に ===== | ||
+ | |||
+ | この記事では,PID 名前空間の init の特別な役割を見て,ps などのツールが使えるようにするためにどのように PID 名前空間に対して procfs をマウントするかを示し,PID 名前空間を使う場合の unshare() と setns() の特殊性をいくつか見た.これで PID 名前空間についての話は完了した.次の記事では,ユーザネームスペースについて見ていく. |