仮想メモリの連続した大部分書き込み防止 [閉じる]

仮想メモリの連続した大部分書き込み防止 [閉じる]

オペレーティングシステムカーネルは、ユーザープロセスが連続した大きな仮想メモリチャンクに書き込むのをどのように効果的に防ぐのですか?

答え1

仮想メモリは次のように構成されます。メモリ管理ユニット、ハードウェアコンポーネントです。カーネルだけがMMU構成を変更できます。 MMU構成は、各仮想アドレスに対応する物理アドレス(存在する場合)とプログラムがこのアドレスに持つ権限(少なくとも読み取りまたは読み取りおよび書き込み、特定の機能はハードウェアアーキテクチャによって異なります)を決定します。

カーネルは、これらのアドレスが読み取り専用にマップされたり、まったくマッピングされないようにすることで、プロセスが仮想メモリブロックに書き込むのを防ぎます。

これが宿題である場合は、アーキテクチャでMMUがどのように機能するか、特により高いレベルのディレクトリ(セクション、L1 / L2テーブル、またはアーキテクチャから呼び出されるもの)を使用する方法を説明する必要があります。対。その逆は本当です。低レベルディレクトリ(L2 / L3)用。

答え2

Unixファミリーシステムでは、mprotectシステムコールを使用してメモリ保護を制御します。

詳細:

https://en.wikipedia.org/wiki/Memory_protection

関連情報