セグメントレジスタとは何ですか?なぜメモリがセグメント化されているのですか?メモリセグメンテーションはどのように行われますか?


ベストアンサー

セグメントはメモリの連続したチャンクです。セグメント化されたメモリスキームでは、プロセスのすべてのメモリがセグメントに含まれます。最初の仮想メモリシステム(Burroughs B5000、Mulitcs)は、RAMにコピーされたりRAMからコピーされたりする可変サイズのセグメントに基づいていました。

プログラムは、各セグメントをセグメントレジスタへのオフセットとして参照します。セグメントレジスタの実際の内容は、システムによって制御されます。システムは、セグメントレジスタが使用されるときにセグメントがいつ参照されるかを認識し、これを使用して仮想メモリを管理します。

これは、ページング仮想メモリ。今日どこでも使用されています。 仮想メモリの量は固定サイズのメモリチャンクです。ページングは​​より複雑で、より多くのハードウェアサポートが必要です。

MITのMulticsは、最新のコンピューティングに大きな影響を与えました(UnixおよびLinuxに組み込まれた多くのアイデアを含む)。フレッドポラックは、MITから新たにIntel286プロジェクトに参加しました。彼は8086の「セグメント」レジスタ(実際にはベースレジスタ)を見て、Multicsのようにこれらの実際のセグメントレジスタを作成するためにロビー活動に成功しました。 (Fredは後にIntel Fellowになりました。)

286の64KBセグメントは、Multicsセグメントと同じ問題を抱えていました。それらは小さすぎました。多くの場合、メモリ構造にアクセスするには複数のセグメントが必要です。つまり、セグメントレジスタをリロードし、OSを関与させることがよくあります。パフォーマンスへの影響のため、セグメンテーションはほとんど使用されず、セグメントレジスタは8086互換モードでベースレジスタとして使用されました。

32ビットIntel386は、セグメントスキーム(meh!)の下にページ仮想メモリ(YEA!)を追加しました。 )。 64ビットのIntelアーキテクチャモデルは、セグメントレジスタを完全に廃止しますが、8086までの互換モードはあります。

回答

1.セグメントレジスタとは何ですか?

->レジスタがプロセッサに存在することは誰もが知っているように、メモリ内にセグメントを作成します(セグメンテーション)。このセグメントの開始位置を取得するために、このセグメントのアドレスをセグメントレジスタに格納します。短いセグメントレジスタでは、メモリに存在するセグメントの開始位置、つまりセグメントアドレスが格納されます。

3.メモリセグメンテーションはどのように行われますか?

->メモリセグメンテーションは16ビットアドレスを使用して行われます。最初にセグメントアドレス(セグメントの開始)を指定します。セグメントアドレスを指定した後、そのセグメント内のアクセス場所にオフセットアドレス()を指定します。

セグメントアドレスを指定した後、オフセットアドレスを指定します。

セグメントアドレスとプログラマとしての両方の16ビットアドレスのオフセットアドレス。このアドレスを指定した後、このアドレスの両方を物理アドレス(実際のアドレス)に変換するのはプロセッサの義務です。

物理アドレス=セグメントアドレス* 10 +オフセットアドレス

= 1000 * 10 + 2345

= 12345H

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です