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
Linuxのメモリ管理入門 プロセスごとに違う世界を見せる 仮想記憶
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Satoru Takeuchi
PRO
November 30, 2023
Technology
1
220
Linuxのメモリ管理入門 プロセスごとに違う世界を見せる 仮想記憶
以下動画のテキストです
https://youtu.be/hd08SJyrBgM
Satoru Takeuchi
PRO
November 30, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
3.4k
ファイルシステムの不整合
sat
PRO
2
130
書籍執筆での生成AIの活用
sat
PRO
2
440
ChatGPTに従って体調管理2026
sat
PRO
0
170
eBPF
sat
PRO
1
140
waruiBPF
sat
PRO
0
120
eBPFとwaruiBPF
sat
PRO
5
4.3k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
1
110
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
220
Other Decks in Technology
See All in Technology
Phase08_クイックウィン実装
overflowinc
0
1.8k
20260320_JaSST26_Tokyo_登壇資料.pdf
mura_shin
0
120
Kubernetesの「隠れメモリ消費」によるNode共倒れと、Request適正化という処方箋
g0xu
0
130
スピンアウト講座02_ファイル管理
overflowinc
0
1.4k
スピンアウト講座04_ルーティン処理
overflowinc
0
1.2k
BFCacheを活用して無限スクロールのUX を改善した話
apple_yagi
0
120
Change Calendarで今はOK?を仕組みにする
tommy0124
1
110
大規模ECサイトのあるバッチのパフォーマンスを改善するために僕たちのチームがしてきたこと
panda_program
1
390
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
210
来期の評価で変えようと思っていること 〜AI時代に変わること・変わらないこと〜
estie
0
100
契約書からの情報抽出を行うLLMのスループットを、バッチ処理を用いて最大40%改善した話
sansantech
PRO
2
270
Phase01_AI座学_基礎
overflowinc
0
4k
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
210
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
190
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
140
The World Runs on Bad Software
bkeepers
PRO
72
12k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
340
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
310
The Limits of Empathy - UXLibs8
cassininazir
1
270
How to make the Groovebox
asonas
2
2k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
91
エンジニアに許された特別な時間の終わり
watany
106
240k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
270
Transcript
Linuxのメモリ管理入門 プロセスごとに違う世界を見せる 仮想記憶 Nov. 30th, 2023 Satoru Takeuchi twitter: satoru_takeuchi
Linuxカーネルはメモリをページ単位で管理する • x86_64の場合は1ページ4KiB ◦ 📝 1ページ2MiBのhuge pageというものを使うこともある。いずれ触れるかも • メモリ32GiBのシステムだと800万個以上のページがある •
物理的に存在するメモリのことを物理メモリと呼ぶ 物理メモリ (32GiB) ページ ページ ページ 800万個以上のページ 4KiB 0 8KiB 32GiB
単純化すると、こんなかんじでメモリを共有 物理メモリ カーネル プロセスA プロセスB 空き領域 4KiB 0 8KiB 12KiB
16KiB 20KiB 32KiB 24KiB 28KiB
直接アクセスすると考えると… 物理メモリ カーネル プロセスA プロセスB 空き領域 4KiB 0 8KiB 12KiB
16KiB 20KiB 32KiB 24KiB 28KiB プロセスA プロセスB
直接アクセスすると考えると… 物理メモリ カーネル プロセスA プロセスB 空き領域 4KiB 0 8KiB 12KiB
16KiB 20KiB 32KiB 24KiB 28KiB プロセスA プロセスB 懸念点 • 他のプロセスとアドレスが重なるので扱うのが面倒では? • というか盗み見たり破壊したりできるのでは? • なんならカーネルもぶち壊せるのでは?
実はプロセスごとに違う世界が見えている • これが仮想記憶 ◦ の、ページング方式 物理メモリ カーネル プロセスA プロセスB 空き領域
4KiB 0 8KiB 12KiB 16KiB 20KiB 32KiB 24KiB 28KiB プロセスA プロセスB 4KiB 0 8KiB 4KiB 0 8KiB
ここで難しい用語がたくさん出てくる 物理メモリ カーネル プロセスA プロセスB 空き領域 4KiB 0 8KiB 12KiB
16KiB 20KiB 32KiB 24KiB 28KiB プロセスA プロセスB 4KiB 0 8KiB 4KiB 0 8KiB プロセスAの 仮想アドレス空間 プロセスBの 仮想アドレス空間 物理アドレス空間(*1) *1) 本当はここももうちょっと複雑
自分用以外のメモリにアクセスできない(させない) 物理メモリ カーネル プロセスA プロセスB 空き領域 4KiB 0 8KiB 12KiB
16KiB 20KiB 32KiB 24KiB 28KiB プロセスA 4KiB 0 8KiB プロセスAの 仮想アドレス空間 物理アドレス空間
物理アドレス空間 物理メモリ上のばらばらの領域を連続領域に見せられる 物理メモリ カーネル プロセスA プロセスB 空き領域 4KiB 0 8KiB
12KiB 16KiB 20KiB 32KiB 24KiB 28KiB プロセスA 4KiB 0 8KiB プロセスAの 仮想アドレス空間
まとめ • Linuxはページ単位でメモリを管理する • 仮想記憶という仕組みによってプロセスごとに別のメモリ空間を見せている • 仮想記憶によって以下のようなメリットがある ◦ プロセスが自分に与えられたもの以外のメモリに読み書きできなくなる ◦
物理メモリが断片化してもプロセスには連続領域として見せられる