No.1ベストアンサー
- 回答日時:
Intelの命令セットでは、メモリにアクセスする場合にはセグメントセレクタ(16bitであればセグメントレジスタ)を用いて、論理アドレス(仮想アドレス)を物理アドレスに変換します。
16bitモードで動いている場合には、セグメントレジスタ(16bit)の値に16を乗じた値を論理アドレス(16bit)に加算して、物理アドレスを決定します。但し、計算結果が21bitになってしまう場合で、A20GATEが閉じている場合には、計算されたアドレスの最上位ビットを無視するという例外があります。
32bit/64bitの場合では、セグメントセレクタの値を用いてディスクリプタテーブルと呼ばれるテーブルを引き、それを用いて論理アドレスを丁度良く変換してやると物理アドレスになります。
この質問の場合でも、ESで参照しているので、論理アドレスになる筈です。
尚、この命令の実行の際にページフォールトが起きる場合、
ins命令発行→PF→OSが例外をキャッチし、PFを解消する→ins命令続行
となります。
# 例外をキャッチしない場合は、概ね
# PFが発生
# →OSがPFをキャッチしなかった場合はDF(Double Fault)が発生
# →OSがDFをキャッチしなければTF(Triple Fault)が発生してマシンが停止する
# という動作になったような気がします。調べるのも実験するのも面倒臭いので確認はしていませんがご愛嬌。
この回答への補足
ありがとうございます。
実は古いLinuxのソースを読んでまして妙な気がしたのです。
linux0.12のswap.cのtry_to_swap_outにて、ページの物理アドレスを取得してファイルに書き込んでいるのですが、
この時すでにページングはONですし、スワップアウトはもちろんユーザエリアのページが対象です。
それで調査を続けますとlinuxはinsw,outswを使ってディスクデータの読み書きを行っているのを見つけました。
しかし、何度確認しても物理アドレスに対してinsw,outswしているのです。
もしもカーネルエリアのページならストレートマップで物理アドレスでも仮想アドレスでも同じ値ということも
あり得るのでしょうけれど、そうではなさそうだと感じています。
それでインテルのマニュアルみてもinswのアドレスについて特別なことは書いてないので
物理アドレスではないのかなぁと思い質問させて頂きました。
ES:DIが論理アドレスだとしますと、ますますlinuxのコードがわからなくなってきましたσ(^_^;)
あれから調べてES:DIが論理アドレスだということがわかりました。
Linux0.12のカーネルが単に物理メモリをリニアマップしてただけでした。
どうもありがとうございました。
No.2
- 回答日時:
ページングをしてる状況で「物理アドレスにデータを置く」って, 何のメリットがあるの?
この回答への補足
ありがとうございます。
下のかたの補足にも書いたのですが、ページング中にページイン、ページアウト処理するのは楽なのかなぁ
という気がしますがよくわかりません。
linuxではページテーブルエントリを壊してからページをページアウトしてます。
ですのでページアウト対象のページはもはや物理アドレスでしかさわれない気もするのですが、
ins,outswが物理アドレス対象でないとするとわけがわからなくなりますσ(^_^;)し、
期待する情報は全然見つかりません(~_~;)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- その他(プログラミング・Web制作) パイプラインに詳しい方 5 2022/07/04 16:47
- デスクトップパソコン 古ーいパソコン/Atheros AR2181 PCIe Gigabit LAN コントローラー 7 2022/09/07 12:58
- Windows 10 インストールしたてのVirtualBoxの仮想マシンにDHCPで割り振られるIPアドレスにつきまして 1 2023/05/03 14:46
- 憲法・法令通則 マスクのお話 マスクは今推奨という形です。 「推奨(すいしょう)」は「物事や人物の優れている部分をあ 6 2022/04/25 12:49
- 政治 特定の政党や候補者に投票するよう強要・命令・指示・洗脳するのは憲法にある思想信条の自由や 3 2022/08/03 10:40
- システム CPUの問題について 2 2022/07/09 12:04
- 固定IP MACアドレスはLAN内で相手を特定するアドレスですか? PCから監視カメラを閲覧するときに、セグメ 3 2022/07/23 09:04
- 弁護士・行政書士・司法書士・社会保険労務士 行政書士試験の行政法についての質問になります。 行政法の行政手続法についての質問になります。 問 意 1 2023/08/09 13:35
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
『μg』の読み方と意味。
-
名古屋の栄と錦は治安悪い?
-
フォームを開く時のイベント処理
-
エアー漏れの流量の計算式を教...
-
外部出力が無いドラレコからリ...
-
VB.NETのテキストボック...
-
NumericUpDownの数値を選択済み...
-
vba メモリーリーク
-
word
-
数式中の文字をCambria Math以...
-
illustratorとExcelは連携出来...
-
イラレでダブルクリックで文字...
-
Illustratorテキストエリアへ塗...
-
Publisherをエクセルファイルに
-
PDF→CSVへ変換
-
バイナリファイルの編集
-
PowerPoint SmartArtの箇条書...
-
子ウインドウを閉じて 親ウイ...
-
サクラエディタで二つのテキス...
-
ユーザーがクリックするまでフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
名古屋の栄と錦は治安悪い?
-
『μg』の読み方と意味。
-
NumericUpDownの数値を選択済み...
-
テキストボックスからフォーカ...
-
VB.NETのテキストボック...
-
エアー漏れの流量の計算式を教...
-
VB.NET でのLaod/unLoad につ...
-
フォームを開く時のイベント処理
-
vba メモリーリーク
-
項目数は英語で
-
シリアルフラッシュメモリをな...
-
TextBoxにカーソルがあるかない...
-
ヒント表示について
-
mailの送信音がしなくなったの...
-
ブック開いたときのフォーカス指定
-
VBのレコードセットを閉じない...
-
コンピュータ言語paythonのエデ...
-
vc++2005エラーメッセージ
-
C言語の関数の実引数と仮引数の...
-
globalと$GLOBALSの違いは?
おすすめ情報