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

仮想記憶 ~概念編~

仮想記憶 ~概念編~

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

Satoru Takeuchi
PRO

January 15, 2023
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. 仮想記憶 ~ 概念編 ~ Jan. 15th, 2022 Satoru Takeuchi twitter:

    satoru_takeuchi
  2. はじめに • 仮想記憶という機能の説明 ◦ システム上で複数のプロセスを動作させる際の課題を解決 ◦ プロセスごとに独自のメモリ空間を見せる ◦ 本動画では概念だけ説明。機能を実現するしくみは別動画で説明 •

    事前に見ておく必要がある動画 ◦ その34 実行ファイル • 話を簡単にするために実行ファイルはPIEではないとする ◦ その35 Address Space Location Randomization
  3. プロセスが生まれてから消えるまで 1. ユーザが実行ファイルを指定してカーネルにプロセスを実行するよう依頼 2. 実行ファイル内の情報をもとにコードとデータをメモリ上に配置 3. 実行ファイル内に書かれているエントリポイントから実行開始 test(実行ファイル) メモリ コード

    データ コード データ マップ
  4. 二つの課題 • コード/データマップ位置の重複 • データ保護

  5. コード/データマップ位置の重複 • 例) 同じプロセスを二つ実行 test(実行ファイル) メモリ コード データ

  6. コード/データマップ位置の重複 • 例) 同じプロセスを二つ実行 1. testファイルからプロセスを生成 test(実行ファイル) メモリ コード データ

    コード データ マップ
  7. コード/データマップ位置の重複 • 例) 同じプロセスを二つ実行 1. testファイルからプロセスを生成 2. testファイルから二つめのプロセスを生成しようとするが … test(実行ファイル)

    メモリ コード データ コード データ 既にマップ済み
  8. データ保護 • システムに2つのプロセスA,Bが存在すると仮定 プロセスA プロセスB メモリ *) カーネルの存在は省略

  9. データ保護 • お互いのメモリにアクセスできるとまずい プロセスA 盗み見、破壊可能? プロセスB メモリ

  10. 仮想記憶 • Linuxや他の多くのOSは仮想記憶という機能によって2つの問題を解決 ◦ 📝 他にも方法は色々あるが省略 • プロセスごとに独自のメモリ空間を見せる 物理メモリ(システムに搭載されているメモリ )

    プロセスAの 仮想アドレス空間 物理アドレス空間 プロセスAのメモリ
  11. 個々のプロセスの挙動 • プロセスが指定するアドレスはすべて仮想アドレス ◦ 物理メモリに直接アクセス不能 物理メモリ(システムに搭載されているメモリ ) プロセスAのメモリ 1. 仮想アドレスXにアクセス

    2. アドレス変換& 物理アドレスYにアクセス
  12. 複数プロセスがある場合 物理メモリ プロセスAの 仮想アドレス空間 プロセスBの 仮想アドレス空間 プロセスAのメモリ プロセスBのメモリ

  13. 「コード/データマップ位置の重複」の解決 • 例) 同じプロセスを二つ実行 ◦ testファイルからプロセス Aを生成 test(実行ファイル) 物理メモリ コード

    データ
  14. 「コード/データマップ位置の重複」の解決 • 例) 同じプロセスを二つ実行 1. testファイルからプロセス Aを生成 test(実行ファイル) 物理メモリ コード

    データ Aのコード Aのデータ プロセスAの 仮想アドレス空間
  15. 「コード/データマップ位置の重複」の解決 • 例) 同じプロセスを二つ実行 1. testファイルからプロセス Aを生成 2. testファイルからプロセス Bを生成

    test(実行ファイル) 物理メモリ コード データ Aのコード Aのデータ プロセスAの 仮想アドレス空間 プロセスBの 仮想アドレス空間 Bのコード Bのデータ *) 実際はコード領域は共有するが説明は省略
  16. データ保護 物理メモリ プロセスAの 仮想アドレス空間 プロセスBの 仮想アドレス空間 プロセスAのメモリ プロセスBのメモリ 見えない 見えない

  17. まとめ • 仮想記憶はシステム上で複数のプログラムを実行する際の課題を解決できる ◦ コード/データのマップ先の重複 ◦ データ保護 • プロセスごとに仮想アドレス空間をもつ ◦

    プロセスが指定するアドレスは全部仮想アドレス • 詳細は別動画で