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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Satoru Takeuchi
PRO
November 30, 2023
Technology
1
210
Linuxのメモリ管理入門 プロセスごとに違う世界を見せる 仮想記憶
以下動画のテキストです
https://youtu.be/hd08SJyrBgM
Satoru Takeuchi
PRO
November 30, 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.9k
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
Why Organizations Fail: ノーベル経済学賞「国家はなぜ衰退するのか」から考えるアジャイル組織論
kawaguti
PRO
1
210
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
850
AWS Network Firewall Proxyを触ってみた
nagisa53
1
250
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
5
530
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.4k
AI駆動開発を事業のコアに置く
tasukuonizawa
1
400
Claude Code for NOT Programming
kawaguti
PRO
1
110
OpenShiftでllm-dを動かそう!
jpishikawa
0
140
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
190
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
410
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
680
22nd ACRi Webinar - ChipTip Technology Eric-san's slide
nao_sumikawa
0
100
Featured
See All Featured
BBQ
matthewcrist
89
10k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Crafting Experiences
bethany
1
53
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
110
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
260
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
110
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
58
50k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
590
Prompt Engineering for Job Search
mfonobong
0
160
A better future with KSS
kneath
240
18k
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はページ単位でメモリを管理する • 仮想記憶という仕組みによってプロセスごとに別のメモリ空間を見せている • 仮想記憶によって以下のようなメリットがある ◦ プロセスが自分に与えられたもの以外のメモリに読み書きできなくなる ◦
物理メモリが断片化してもプロセスには連続領域として見せられる