システム4.1システムレジスタと指示

システム4.1システムレジスタと指示

フラグレジスタ

メモリ管理レジスタ

GDTR、LDTR、IDRL、TR

指定されたシステム管理メモリセグメントのベースアドレステーブルが使用されます。

コントロールレジスタ

CR0

制御プロセッサの動作モードとステータスシステム制御フラグの

CR1

予約されています

CR2

これは、エラーページにリニアアドレスリードが含まれています

CR3

呼ばれるページディレクトリベースアドレスを含む物理メモリ、ページディレクトリベースアドレスレジスタPDBR

コマンドシステム

4.2プロテクトモードメモリ管理

1 メモリに格納されたデータのアドレッシング80X86は、典型的には、ベースアドレス+オフセット内側部分

ベースアドレスは:指定されたセレクタの最後にセグメント・レジスタ(16)に格納されています

セグメントオフセット

2.物理メモリアドレスバス幅が決定されるアドレス指定可能な範囲

3.セグメント

4. 論理アドレス、リニアアドレス、物理アドレス、アドレス空間

論理アドレス:これは単に使用する元のアドレスであるか、またはコンパイラコンパイラを介してソースコードの後のアドレス、または現在のセグメントへのオフセットアドレス相対的に可変の数字の一部を変換します。

リニア・アドレス:このアドレスは非常に重要でなく、理解することは非常に簡単です。CPUは、すなわち二次元のアドレス、アドレスセグメント分割機構をアドレッシングされる:オフセットアドレスを、CPUは、二次元のアドレスを認識し、したがって、一次元のアドレス、すなわち、セグメントアドレス* 16 +オフセットアドレス、得られたアドレスに変換する必要がないことができこれは、線形アドレス(未開封のページング機構の場合には物理アドレスである)です。だから、それは何ですか?人々またはちょうど学校のコンピュータを扱う1次元の計算方法は知っているが、あなたは本当にそれが何を意味するのか理解できますか?それが何を意味するかを理解するには、下記のとおり、アドレス空間が何であるかを知っている必要があります。

物理アドレス:非常に単純な、大きなメモリアレイ、インデックスは0からメモリ記憶空間上のバイト・インデックス・マークのいずれかに記載、アドレスバスから物理アドレスのサイズ0xFFFFFFFFの、始め分かりますビット幅の決定

仮想アドレス:仮想アドレスが論理アドレスである、また、仮想アドレスとして知られています

アドレス空間:これは非常に重要であり、アドレス空間を理解していない、あなたがプロセスを理解していない、ユーザ空間を理解していない、カーネル空間は、仮想メモリを理解していない、理解していない、ページングメカニズムが理解されていない、あなたがコンピュータを学んだことはありません。マルチタスクオペレーティングシステム、いくつかの合理的な共有データとコードの個々のタスクの保護および隔離するだけでなく、他の多くの理由のためをサポートするために、あなたのそれぞれは、プログラムコードを書くためにすることを、各タスクは独自のアドレス空間を持つことが必要ですあなたが自由に読み、恐れることなく、アドレス空間にデータを書き込むことができたときに読んだり、他のプログラムへのコードブロックへの書き込みは行いません。二つの値が行く場所の表面上に書かれたものの32 OSは、4G各プログラムメモリ空間、すなわち、Bも0X12345に値を書き込むことができるプログラムであるプログラムは0X12345に値を書き込むことができると言うことですしかし、あなたは、いくつかのアドレスマッピングが異なる物理アドレスにマッピングされます後、彼らは、独自のユーザー空間で書かれている彼らが行く場所が書かれていませんが、心配しないでください上がります。4Gのメモリアドレス空間は、リニアアドレスは、ユーザーの4Gの仮想空間を識別するために使用されることを意味し、リニアアドレス、です。

ユーザースペース:各プログラムは4Gのメモリ空間を持っていますが、二つの部分、0-3Gのユーザ空間、3-4Gカーネル空間に分かれています。

保護

80X86保護の2種類を提供します

  1. タスク間の保護
  2. 特権レベルの保護

タスク間の6.保護

異なる仮想アドレス空間内の各タスクに対して、すなわち同一の論理アドレスが分離を達成するために、異なる物理ブロックにマッピングされます。具体的な方法は、各タスクが独自のセグメント及びページテーブルを有し、このマッピング機能が異なることです。結果として、タスク切り替えのプロセッサは、重要なステップは、新しいテーブル変換タスクに切り替えることです。

Q:変換テーブルをに保存されていますか?どのようにそれを切り替えるには?

  • 各タスクのアドレス空間が異なるため、その後、どのようにオペレーティングシステムが別のタスクで共有するには?

仮想アドレス空間に各タスク、およびライン上のカーネルを格納するための同一の物理アドレス空間にマッピングされ、この仮想アドレス空間のためだけに同じ。このタスクは、同じ仮想アドレス空間部分のすべてとして知られているグローバルアドレス空間

各仮想アドレス空間部に固有のその他のタスクは、呼び出されたローカルアドレス空間をプライベートコードとデータストレージ、OSはタスクごとに同じ仮想アドレスを与えることができるように、実際に異なる物理アドレス、孤立したタスクにマッピングされました。

7. 権限レベルの保護

現在アクティブなコードセグメントのCPLの特権レベルは:現在実行示しプログラム特権レベルを

  • CPLはどこ保存しますか?

CSに保存されている最低2つのCPLは、CSは用語のためです。選択サブCSレジスタが正常にロードされると、対応するRPLセレクタはCPLとなります。元の要求水準が満たされている、すなわち、彼らの現在のレベルである - その位置が変更されたの、発現変異体はまた、発生した意味、CSレジスタにロードされているからです。

多くのセレクタが存在することができ、非常に多くのRPLもあります。CPLは、コードは、時間CPLプログラムの値のみだけ代表的に実行され、異なっています。

タスク切り替え、仮想アドレス空間スイッチ(異なるセクション)、特権レベルの変更、スタックスイッチ。

8.分割機構

効果:大部分の機構に利用できる小さなセーバーフラットモデルは同時に複数のプログラム(またはタスク)を実行確実多段階モデル​​を作成環境。

  • フラットモデル:80X86線形空間と0から0xFFFFFFFFのに4ギガバイト4ギガバイトの物理アドレス空間を提供しています。

マルチセグメントモデル:それぞれのプログラム(タスク)は、独自の記述子テーブルとそのセグメントを有しています。システムのすべてのセクションへのアクセスのアクセスを実行するか、ハードウェア制御により、その環境上でプログラムを実行します。(CPUへの不正アクセスは、例外を発生させます)

違法は:基準期間(オペレーティングシステムプログラムへの不正アクセス)の高い特権レベルが、セグメント長の範囲外の位置を引用し、セグメント内のデータの(読み出し専用セグメントを書き込むために)許可されていない操作を実行しました

ベースアドレス、制限セグメント長、セグメント属性:各セグメントは、三つのパラメータによって定義されます

  • ベースアドレス:リニアアドレス空間の真ん中の先頭アドレス。オフセットセグメントにおけるリニアアドレス0。
  • セグメントの長さの制限:最大オフセットセグメント
  • セグメント属性

リニア・アドレス空間セグメント - すなわち、ベースアドレスベースアドレス+長セグメント限界

セクションは、線形アドレスマッピングタスク正確重複領域にコードやデータセグメントと重なっていてもよい線形アドレス空間を複数にマッピングされます

これら三つのパラメータは、セグメント記述子に格納されています。セグメント記述子が記述子テーブルに保存されています。位置決め記述子セレクタとディスクリプタテーブルのベースアドレスセグメント。

リニア・アドレス・プロセスへの論理アドレス:

  1. ディスクリプタを配置セグメント・セレクタ
  2. アクセス権と範囲を確認するために、記述子を使用して
  3. セグメント・セレクタのベースアドレスを削除プラス線形アドレスを取得するオフセット

システムに定義されたすべてのセグメントとシステム・テーブルが含まれているリニアアドレス空間

ディスクリプタ・テーブル

8バイトのディスクリプタ8192までを含む、セグメント記述子の配列変数を格納します

2 GDT、LDTに分け

おすすめ

転載: www.cnblogs.com/Ivan-Luo/p/11703423.html