Upgrade to Pro — share decks privately, control downloads, hide ads and more …

仮想記憶 ~確認編~

仮想記憶 ~確認編~

以下動画のテキストです。
https://youtu.be/J3x2SI_9Tkk

Satoru Takeuchi
PRO

January 23, 2023
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. 仮想記憶 ~ 確認編 ~ Jan. 23rd, 2023 Satoru Takeuchi twitter:

    satoru_takeuchi
  2. はじめに • 「その54 仮想記憶 ~概念編~」で説明したことを実機で確認 • 話を簡単にするために実行ファイルはPIEではないとする ◦ その35 Address

    Space Location Randomization
  3. おさらい: 仮想記憶 • プロセスごとに固有の仮想アドレス空間を持つ ◦ プロセスは仮想アドレスしか指定できない ◦ 仮想アドレスにアクセスするとカーネルとハードウェアが連携して物理アドレスに変換し、物理メモリ にアクセス 物理メモリ(システムに搭載されているメモリ

    ) プロセスAの 仮想アドレス空間 物理アドレス空間 プロセスAのメモリ プロセスBのメモリ プロセスBの 仮想アドレス空間
  4. 実験してみよう • 実験プログラム 1. グローバル変数fooの値とアドレスを表示して ENTERキーが押されるのを待つ 2. もう一度(1)と同じことをする 3. fooの値を書き換えた後に

    fooの値とアドレスを表示して ENTERキーが押されるのを待つ • やること 1. 上記プログラムを2つ動かす。それぞれを A,Bとする 2. 2つのプログラムが同じアドレスにマップされていることを確認 3. A、Bともにfooの値とアドレスが同じであることを確認 4. Aだけfooの値を書き換える(Aをstep2まで実行) 5. Bのfooの値は変わってないことを確認 (Bをstep2まで実行) 6. Bのfooの値を書き換える(Bをstep2まで実行)
  5. 初期状態 物理メモリ(システムに搭載されているメモリ ) プロセスAの 仮想アドレス空間 物理アドレス空間 プロセスAのメモリ プロセスBのメモリ プロセスBの 仮想アドレス空間

    foo(=0) foo(=0) &foo (=0x571260) &foo (0x571260)
  6. プロセスAのfooの値を書き換え 物理メモリ(システムに搭載されているメモリ ) プロセスAの 仮想アドレス空間 物理アドレス空間 プロセスAのメモリ プロセスBのメモリ プロセスBの 仮想アドレス空間

    foo(=100) foo(=0) &foo (=0x571260) &foo (0x571260)
  7. プロセスBのfooの値を書き換え 物理メモリ(システムに搭載されているメモリ ) プロセスAの 仮想アドレス空間 物理アドレス空間 プロセスAのメモリ プロセスBのメモリ プロセスBの 仮想アドレス空間

    foo(=100) foo(=100) &foo (=0x571260) &foo (0x571260)
  8. まとめ • 「その54 仮想記憶 ~概念編~」で述べたことが実証できた • 📝「どうやって仮想アドレスを物理アドレスに変換しているか」について説明する動 画を作成見込み