仮想メモリをサポートするには、プロセッサにメモリ管理デバイス(MMU)チップが必要ですか?

仮想メモリをサポートするには、プロセッサにメモリ管理デバイス(MMU)チップが必要ですか?

仮想メモリをサポートするには、プロセッサにメモリ管理デバイス(MMU)チップが必要ですか?

ソフトウェアでMMU機能をエミュレートすることは可能ですか? (これがパフォーマンスに大きな影響を与える可能性があることを知っています。)

ベストアンサー1

MMUを含むシステムをシミュレートするすべてのシステムシミュレータは、ソフトウェアでMMUを効果的にシミュレートするため、MMUをエミュレートすることができます。しかし、、仮想メモリには、メモリアクセス制御または最低限アドレス変換を実行する方法が必要であるため、制御されるソフトウェアを実行するCPUの完全なソフトウェアエミュレーションが必要であるか、またはハードウェアサポートが必要である。

したがって、MMU、ポートなしでシステムを構築することを想像できます。QEMU欠けている部分を追加して仮想メモリを本当に便利にします(例えば、ホストシステムでのスワッピングサポートの追加)、ゲストオペレーティングシステムが期待できるすべての保護機能とともに、QEMUでMMUを必要とするオペレーティングシステムを実行します(QEMUにバグがある場合を除く)。

仮想メモリを提供するために使用されるMMUなしの「エミュレーション」の実際的で古い例は次のとおりです。Zマシン、70年代後半と80年代初頭から8ビットシステムでコードとデータをページングして交換することができました。これは、基本物理プロセッサの上に仮想プロセッサをシミュレートすることによって行われる。これにより、インタプリタは実行中のプログラムで「表示される」メモリレイアウトを完全に制御できます。

実際には、少なくともオペレーティングシステムレベルで仮想メモリをサポートするためにMMUが必要であることが一般的に知られている。に示すようにMMUコアはありませんか?、MMUなしでシステム上で実行するようにLinuxカーネルを構築することは可能ですが、結果の構成は非常に異例で非常に特定のユースケース(特にマルウェアがない場合)にのみ適しています。仮想メモリ(スワッピング、...)が必要な多くのシナリオをサポートしていない可能性がありますmmap

おすすめ記事