-PR-
解決済み

多重処理下のメモリ

  • すぐに回答を!
  • 質問No.79739
  • 閲覧数92
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 44% (4/9)

一つのメモリ(0番地からMAX番地まで)に複数のプログラムを
置くと、番地はどうなるんですか?
特に、変数の番地やジャンプの命令の飛び先番地が、2つ目以降
のプログラムの場合どうなるんですか?
問題が起きた場合どういった解決方法があるのですか?
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル11

ベストアンサー率 55% (155/280)

模範的には再配置(relocation)という技術を使っているというのが正解ですね。

再配置には、静的再配置と動的再配置があります。前者は、メモリに入れる
(ロードする)前に各アドレスの参照部分を修正することで再配置をします。
そのためには、どこでアドレスを参照しているかを別に記録しておく必要があ
ります。後者は、すべてのアドレスをPCに対して相対的に参照するようにプロ
グラムを構成しておき、アドレスを参照するときにプロセッサが自動的に目的
アドレスを生成することで、再配置を達成します。これらのいずれかが可能な
プログラムのことを、再配置可能(relocatable)なプログラムといいます。

ところが、UNIXなんかでは、ロードモジュール本体はいわゆる再配置可能になっ
ていません。ほとんどのプログラムは固定の番地にロードされることを前提に
作成されています。近代的なプロセッサはプログラムが利用する論理アドレス
を動的にメモリが利用する物理アドレスに変換するような装置を内部または外
部に備えています。プロセスの切替えごとに、そのアドレス変換表をとりかえ
れば、マルチプロセッシングが可能というわけです。
お礼コメント
randy

お礼率 44% (4/9)

どうもありがとうございます!
とても助かりました!
投稿日時 - 2001-05-23 11:01:45
関連するQ&A
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 30% (2593/8599)

オブジェクトプログラムは全部0番地から作られますが、連係編集プログラム(リンケージエディタ) and/or ローダの働きで実際にローディングされるアドレスに従って、プログラムの実行に支障がでないよう処置が採られますのでご安心下さい。変数の番地やジャンプ先の番地も必要が有れば上記のプログラムたちが書き換えてくれます。従って問題は起きないはずです。 この辺の方式はハードやOSとの組み合わせで色々あって簡 ...続きを読む
オブジェクトプログラムは全部0番地から作られますが、連係編集プログラム(リンケージエディタ) and/or ローダの働きで実際にローディングされるアドレスに従って、プログラムの実行に支障がでないよう処置が採られますのでご安心下さい。変数の番地やジャンプ先の番地も必要が有れば上記のプログラムたちが書き換えてくれます。従って問題は起きないはずです。

この辺の方式はハードやOSとの組み合わせで色々あって簡単には説明できません。書籍の目次で、あまり親切ではありませんが「参考URL」の中で「再配置」というキーワードがその部分です。

なお、普通はメモリーの先頭にOSが入っていますので、先頭のAPも0番地からは入れず、上記の仕組みで再配置されています。
お礼コメント
randy

お礼率 44% (4/9)

ありがとうございまっす!
ローダとインケージエディタの本を探してみようと思います。
投稿日時 - 2001-05-23 11:09:27


  • 回答No.3
レベル11

ベストアンサー率 58% (114/195)

x86系CPUではプロテクトモード下ではアドレス変換を使って それぞれのプログラムが独立した連続のアドレス空間下で実行されます 実際にはそれぞれのプログラムの論理アドレス空間事にどの実アドレス空間にマッピングされるかという情報をセットしてあり、CPUがメモリを参照するときにマッピングテーブルを見て実メモリのアドレスを取得し、アクセスします 詳細は参考URLの「はじめて読む485」という本を読んで ...続きを読む
x86系CPUではプロテクトモード下ではアドレス変換を使って
それぞれのプログラムが独立した連続のアドレス空間下で実行されます
実際にはそれぞれのプログラムの論理アドレス空間事にどの実アドレス空間にマッピングされるかという情報をセットしてあり、CPUがメモリを参照するときにマッピングテーブルを見て実メモリのアドレスを取得し、アクセスします

詳細は参考URLの「はじめて読む485」という本を読んでみてください
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ