|
User Mode Linux(UML/user-mode-linux)は、Linux環境を仮想的に作りだすための仕組みである。Linuxカーネルをユーザーモードのプログラムとしてコンパイルして、実行させる。ホスト環境のLinuxカーネルと、ホスト環境のユーザーモードのプロセスとして動く Linux カーネル(UML本体)の連携により、Linuxゲスト環境を提供する。 ==基本構造== UMLのカーネルは、基本的にUML向けにコンパイルされたカーネルに、プログラムローダをくっつけた形に構築されており、Linux上で実行することで、プロセスの中で独立したLinuxが動作する構造となっている。ホストOSもLinuxであることが前提である。サポートしている CPU は x86-32 と x86-64。 UML上で動作するゲストプロセスはデバッガなどで使われる ptrace を使い、システムコールやシグナルを横取りし、それをホスト側に投げ、システムコールやシグナルを成立させている。ゲストプロセスのシステムコールは ptrace で横取りした際、EAX レジスタを書き換えて getpid() に置き換え無害化したうえで、UML 内からシステムコールを実行し、戻り値を EAX レジスタに設定して、ptrace でゲストプロセスを再開させる〔System call virtualization using ptrace 〕。本来1往復だったシステムコールのコンテキストスイッチは4往復になる。Linux は mmap で MAP_FIXED を使うと、ユーザーモードからでも固定番地にメモリを確保できるが、それを利用して特定の番地にメモリを割り振っている。UML 自体は CPU の特権命令を一切使ってない。 UMLカーネルは、ディスク資源、メモリ、ネットワークなどホストの資源を一部間借りすることができる。UML 用のデバイスドライバが作られている。特にディスクは、実際のディスクではなく、イメージファイルをディスクにみせかけることができるようになっている上、本来のイメージファイルに差分ファイルを組み合わせることで、イメージファイルに書き込みを行わずに利用することも可能となっている。そのため、単一イメージを複数のUMLで共有することも可能である。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「User Mode Linux」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 User-mode Linux 」があります。 スポンサード リンク
|