特定のプロセスに論理メモリ空間を割り当てた後、ベース レジスタとリミット レジスタを使用してその空間を保護します。プロセスに割り当てられたメモリ空間外のメモリへのアクセスを防ぐために、CPU ハードウェアは要求された各メモリ アドレスをこれらのレジスタと比較します。次の 2 つの条件のいずれかが成立すると、オペレーティング システムのトラップが発生します。
- ターゲット アドレスがベース レジスタより小さい。
- ターゲットアドレスがリミットレジスタ以上です。
このロジックは、下の図 7.2で視覚的に確認できます。
上記は、それらがどのように発生するかを説明しています。
ユーザー モードで実行されているプログラムがオペレーティング システムのメモリまたは他のユーザーのメモリにアクセスしようとすると、オペレーティング システムへのトラップが発生します。
しかし、要求されたアドレスが実際にプログラムの割り当てられたメモリ空間の外にある場合の例は何ですか? これは何が原因でしょうか?
[画像と引用元: オペレーティング システムの重要事項、第 2 版。- エイブラハム・シルバーシャッツ]