Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
仮想記憶 ~概念編~
Search
Satoru Takeuchi
PRO
January 15, 2023
Technology
310
2
Share
仮想記憶 ~概念編~
以下動画のテキストです。
https://youtu.be/8E85MD6INYs
Satoru Takeuchi
PRO
January 15, 2023
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
52
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
1
57
ファイルシステムの整合性を回復するfsck
sat
PRO
1
58
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
4.8k
ファイルシステムの不整合
sat
PRO
2
150
書籍執筆での生成AIの活用
sat
PRO
2
500
ChatGPTに従って体調管理2026
sat
PRO
0
180
eBPF
sat
PRO
1
160
waruiBPF
sat
PRO
0
140
Other Decks in Technology
See All in Technology
JJUG CCC 2026 Spring AI時代の開発こそ標準化を武器に! ― 方式・プロセス・プラットフォームの標準化
s27watanabe
2
720
AI Engineering Summit Tokyo 2026 AIの前に、やることがある 〜医療データ企業の4フェーズ〜
dtaniwaki
0
1.8k
PHP と TypeScript の型システム比較:AI 時代の「型」は誰のためにあるのか? #frontend_phpcon_do / frontend_phpcon_do_2026
shogogg
1
240
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
noUncheckedIndexedAccess、3時間、1万円。 / noUncheckedIndexedAccess, 3 Hours, 10,000 JPY.
kaonavi
1
290
はじめてのDatadog
kairim0
0
270
先取りMaven4 ~16年ぶりのメジャーアップデート、その進化とは?~
ogiwarat
0
140
「コーディング」しない人のための Claude Code 入門 ChatGPT の次の一歩 — 業務に組み込む 育成・共有・自動化
rfdnxbro
2
1.2k
ブロックチェーン / Blockchain
ks91
PRO
0
110
「気づいたら仕事が終わっている」バクラクAIエージェント本番運用の裏側 / layerx-bakuraku-aie2026
yuya4
18
9.9k
イベントストーミングとKiroの仕様駆動開発で実現する要件の認識合わせプロセス
syobochim
7
1.2k
ルールやカスタム機能、どう使う?理想の出力を引き出すために今知りたいIBM Bob 5つの機能
muehara
1
330
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
400
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Discover your Explorer Soul
emna__ayadi
2
1.1k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
150
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
How to Talk to Developers About Accessibility
jct
2
220
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Building an army of robots
kneath
306
46k
Paper Plane (Part 1)
katiecoart
PRO
0
8.5k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
960
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Designing for humans not robots
tammielis
254
26k
Transcript
仮想記憶 ~ 概念編 ~ Jan. 15th, 2022 Satoru Takeuchi twitter:
satoru_takeuchi
はじめに • 仮想記憶という機能の説明 ◦ システム上で複数のプロセスを動作させる際の課題を解決 ◦ プロセスごとに独自のメモリ空間を見せる ◦ 本動画では概念だけ説明。機能を実現するしくみは別動画で説明 •
事前に見ておく必要がある動画 ◦ その34 実行ファイル • 話を簡単にするために実行ファイルはPIEではないとする ◦ その35 Address Space Location Randomization
プロセスが生まれてから消えるまで 1. ユーザが実行ファイルを指定してカーネルにプロセスを実行するよう依頼 2. 実行ファイル内の情報をもとにコードとデータをメモリ上に配置 3. 実行ファイル内に書かれているエントリポイントから実行開始 test(実行ファイル) メモリ コード
データ コード データ マップ
二つの課題 • コード/データマップ位置の重複 • データ保護
コード/データマップ位置の重複 • 例) 同じプロセスを二つ実行 test(実行ファイル) メモリ コード データ
コード/データマップ位置の重複 • 例) 同じプロセスを二つ実行 1. testファイルからプロセスを生成 test(実行ファイル) メモリ コード データ
コード データ マップ
コード/データマップ位置の重複 • 例) 同じプロセスを二つ実行 1. testファイルからプロセスを生成 2. testファイルから二つめのプロセスを生成しようとするが … test(実行ファイル)
メモリ コード データ コード データ 既にマップ済み
データ保護 • システムに2つのプロセスA,Bが存在すると仮定 プロセスA プロセスB メモリ *) カーネルの存在は省略
データ保護 • お互いのメモリにアクセスできるとまずい プロセスA 盗み見、破壊可能? プロセスB メモリ
仮想記憶 • Linuxや他の多くのOSは仮想記憶という機能によって2つの問題を解決 ◦ 📝 他にも方法は色々あるが省略 • プロセスごとに独自のメモリ空間を見せる 物理メモリ(システムに搭載されているメモリ )
プロセスAの 仮想アドレス空間 物理アドレス空間 プロセスAのメモリ
個々のプロセスの挙動 • プロセスが指定するアドレスはすべて仮想アドレス ◦ 物理メモリに直接アクセス不能 物理メモリ(システムに搭載されているメモリ ) プロセスAのメモリ 1. 仮想アドレスXにアクセス
2. アドレス変換& 物理アドレスYにアクセス
複数プロセスがある場合 物理メモリ プロセスAの 仮想アドレス空間 プロセスBの 仮想アドレス空間 プロセスAのメモリ プロセスBのメモリ
「コード/データマップ位置の重複」の解決 • 例) 同じプロセスを二つ実行 ◦ testファイルからプロセス Aを生成 test(実行ファイル) 物理メモリ コード
データ
「コード/データマップ位置の重複」の解決 • 例) 同じプロセスを二つ実行 1. testファイルからプロセス Aを生成 test(実行ファイル) 物理メモリ コード
データ Aのコード Aのデータ プロセスAの 仮想アドレス空間
「コード/データマップ位置の重複」の解決 • 例) 同じプロセスを二つ実行 1. testファイルからプロセス Aを生成 2. testファイルからプロセス Bを生成
test(実行ファイル) 物理メモリ コード データ Aのコード Aのデータ プロセスAの 仮想アドレス空間 プロセスBの 仮想アドレス空間 Bのコード Bのデータ *) 実際はコード領域は共有するが説明は省略
データ保護 物理メモリ プロセスAの 仮想アドレス空間 プロセスBの 仮想アドレス空間 プロセスAのメモリ プロセスBのメモリ 見えない 見えない
まとめ • 仮想記憶はシステム上で複数のプログラムを実行する際の課題を解決できる ◦ コード/データのマップ先の重複 ◦ データ保護 • プロセスごとに仮想アドレス空間をもつ ◦
プロセスが指定するアドレスは全部仮想アドレス • 詳細は別動画で