Skip to main content.
Google custom search

NetBSD ドキュメンテーション: UVM、新しい仮想メモリーシステム

関連する他のリンク

UVM FAQ


UVM FAQ

UVMとは何ですか? (トップ)

UVM は NetBSD の仮想メモリーシステムの完全な書き換えで、 その性能はMach VM システムよりも遥かに優れていることが実証されました。 UVM はまたページ貸付けのような進んだ機能を提供し、これは NetBSD のための統合化バッファー・ページキャッシュの開発に用いられています。

誰がUVMを書いたのですか? (トップ)

Chuck Cranor が UVM を設計して実装しました。 Matthew Green は統合化作業を担当し、swap サブシステムを書きました。 Chuck Silvers は匿名メモリーオブジェクトページャー(これにより共有メモリー がサポートされます)を書きました。他にもたくさんの開発者がそれぞれのポート に関わる部分を書き直しました。 Andrew Brown は UVM に変更を加え、 top downメモリー管理を 可能にしました。

UVM はメモリー不足をどのようにあつかうか? (トップ)

UVM は、遅延割り当て(lazy allocation)をおこないます。この事は、プログラム が仮想メモリーの過剰割り当てが可能である事を意味します。UVM が、完全に VM が不足している状況と、遅延割り当てされたメモリーの断片へのアクセスを 検知した時、そのプロセスは kill され、システムはそのまま動作し続けます。 ページングシステムで使用するために予約されたわずかなバッファーが存在します。 これにより、フリーメモリーが存在しない時に pagedaemon が動作することが できます。Chuck Silvers が、これに関するほとんどの作業をおこないました。

どのポートが UVM を使っているのですか? (トップ)

UVM は 1.3.X のディストリビューションでは使えませんが、 1.4 以降では全てのポートで使われるようになります。

UVM の U って何ですか? (トップ)

UVMは Chuck Cranor が作業していた "U" の文字 ("universal" でした)で始まる別のプロジェクトの一部分でした。 しかし、そのプロジェクトはただの UVM に生まれ変わりました。 ですから、"U"はもはや他の何かを意味するものではありません: "UVM"とは 単に"vm"とは異なった(しかしよく似た)名前です。

私のマシンの仮想メモリーのサイズはいくらですか? (トップ)

UVM では、仮想メモリーのサイズは、物理メモリー(カーネルのオーバーヘッド をひいた)とすべてのスワップパーティションの合計と等しくなります。つまり、 物理メモリーはページングデバイスによる裏打ちを持つ必要はありません。

``top down'' メモリー割り当てって何ですか? (トップ)

これは、特にアドレスを指定しない mmap(2) されたメモリー割り当てを、 中間から上方にではなく、スタック直下から割り当て始め、下方へ向かって (top down) 割り当ててゆくように再編するものです。 こうすることで、ヒープの成長分用に確保される領域と、 mmap(2) されたメモリー割り当て用に確保される領域が統合されます。 つまり、ヒープが従来より大きく成長するか、または、プロセスが従来より多数 もしくは大きなオブジェクトを mmap することが可能になったということです。 カーネルは依然として、内部のメモリー割り当てに、従来の ``bottom up'' な仕組みを使うことができます。

どのポートが ``top down'' メモリー割り当てを使っているのですか? (トップ)

top down メモリー割り当ての仕組みは、現在、 i386 ポートと PowerPC のポート群でカーネルオプションとして提供されています: beboxmacppcmvmeppcofppcpmppcprepsandpoint です。 いずれ、ほとんどのポートは、無条件に top down を使うよう 移行することになるものと思われます。 さらなる情報は、 options(4) マニュアルページを参照してください。