ソフト開発に向け勉強中です。よろしくお願いします。
問題集の問で「仮想記憶に関する記述として正しいものはどれか」
の選択肢に、
ア 仮想記憶における動的アドレス変換機構とは、プログラムの実行時に、
命令で指定された論理アドレスを、ベースレジスタを使って主記憶上の
物理アドレスに変換するメカニズムである。
というのがありまして、解答としてはこれは「×」なのですが、
用語辞典で「動的アドレス変換機構」を引くと、
「仮想記憶OSで、プログラム実行時に仮想記憶装置上の論理アドレスを、
実記憶装置上のアドレスに変換すること」
とあって、「○」だと思うのですが、何が違うのでしょうか?
「仮想記憶」を引くと「…動的再配置の手法がとられ…」で、
「ベースレジスタ」を引くと「…これにより再配置可能なプログラムとなる」と
なっていて、これでいいような気がしてしまうのですが。
普段、多少コーディングはしていても、システムについての知識がなく
苦戦しています。どなたかご教示願えますでしょうか?
こんにちは。らららです。
まず、動的アドレス変換機構は、仮想アドレスを実アドレスに変換するハードウェアで
す。その変換には、ページテーブルを用い変換を行います。
変換には↓のような感じで行われると思います。
http://www.is.titech.ac.jp/~ohshima/TA/architecture/matsu/10/sld020.htm
というように、DATによる変換はベースレジスタを使ったアドレス変換ではない。
よって、間違い。
でどうでしょうか。
(実は自身ないです。間違ってたら突っ込みお願いします)
らららさん、ありがとうございます。
別の、プログラムの再配置可能ロードモジュールの問題で、
「ベースレジスタを使う」という解説があったので、
プログラムの配置にはベースレジスタ、
仮想記憶にはページテーブル、なんですね。きっと。
でもアドレッシングって、インデックス指定修飾方式とか
直接アドレス指定方式とかいろいろ6種類ぐらいありますよね。
これは、何の話なんでしょうか?
簡単にでもいいので、説明してくださる方
よろしくお願いいたします。
もう頭がごちゃごちゃ。
仮想記憶における論理アドレスから物理アドレスへの
変換は処理速度の関係でハードウエアで行われます.その
基本となるのは通常メモリ上にあるページテーブルですが,
それをいちいちアクセスしてると遅すぎるので,CPU上にTLB
(Translation Lookaside Buffer?)というのがあります.TLBは
複数の論理アドレスと物理アドレスの対応の表が保持されている
わけですが,CPUではこれらの表から「同時に」検索を行い,
アドレス変換を自動的に行います.TLBでは同時に検索できるように
特殊なハードウエアになっているため,いわゆる通常のレジスタとは
全く異なるものです.
複数のアドレッシングモードの話ですが,多分,今となっては
ほとんどないでしょうね.CISC時代の話だと思うんで,86系チップ
にはその名残があるかと思います.
悪夢を統べるものさん、詳しいですねー!
丁寧な説明ありがとうございます。理解しました。
コンピュータアーキテクチャはほんと苦手分野ですが、
試験のために暗記するしかないですね。
ほんとうにありがとうございました。