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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Satoru Takeuchi
PRO
January 15, 2023
Technology
2
300
仮想記憶 ~概念編~
以下動画のテキストです。
https://youtu.be/8E85MD6INYs
Satoru Takeuchi
PRO
January 15, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
書籍執筆での生成AIの活用
sat
PRO
1
300
ChatGPTに従って体調管理2026
sat
PRO
0
150
eBPF
sat
PRO
1
110
waruiBPF
sat
PRO
0
110
eBPFとwaruiBPF
sat
PRO
5
3.8k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
1
100
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
200
様々なファイルシステム
sat
PRO
0
340
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
430
Other Decks in Technology
See All in Technology
20260204_Midosuji_Tech
takuyay0ne
1
160
Agent Skils
dip_tech
PRO
0
130
OpenShiftでllm-dを動かそう!
jpishikawa
0
140
Exadata Fleet Update
oracle4engineer
PRO
0
1.1k
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
550
猫でもわかるKiro CLI(セキュリティ編)
kentapapa
0
110
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
500
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
210
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
480
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
150
AIが実装する時代、人間は仕様と検証を設計する
gotalab555
1
380
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
110
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
340
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
68
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3k
Accessibility Awareness
sabderemane
0
56
How to Talk to Developers About Accessibility
jct
2
140
The SEO identity crisis: Don't let AI make you average
varn
0
330
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
160
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
From π to Pie charts
rasagy
0
130
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
The Curious Case for Waylosing
cassininazir
0
240
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のメモリ 見えない 見えない
まとめ • 仮想記憶はシステム上で複数のプログラムを実行する際の課題を解決できる ◦ コード/データのマップ先の重複 ◦ データ保護 • プロセスごとに仮想アドレス空間をもつ ◦
プロセスが指定するアドレスは全部仮想アドレス • 詳細は別動画で