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

    View Slide

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

    View Slide

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

    View Slide

  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まで実行)

    View Slide

  5. 初期状態
    物理メモリ(システムに搭載されているメモリ )
    プロセスAの
    仮想アドレス空間
    物理アドレス空間
    プロセスAのメモリ
    プロセスBのメモリ
    プロセスBの
    仮想アドレス空間
    foo(=0)
    foo(=0)
    &foo
    (=0x571260)
    &foo
    (0x571260)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide