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
Satoru Takeuchi
PRO
November 30, 2023
Technology
230
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Linuxのメモリ管理入門 プロセスごとに違う世界を見せる 仮想記憶
以下動画のテキストです
https://youtu.be/hd08SJyrBgM
Satoru Takeuchi
PRO
November 30, 2023
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
Machine Check Exception
sat
PRO
2
44
バイナリダンプの模様を読む
sat
PRO
0
69
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
54
114-ファイルのshallow_copy.pdf
sat
PRO
2
39
113-Btrfsのスナップショット.pdf
sat
PRO
0
16
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
59
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
2
64
ファイルシステムの整合性を回復するfsck
sat
PRO
1
65
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
5.4k
Other Decks in Technology
See All in Technology
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
250
伝票作成AIエージェントを支える、LLMOpsとインフラの選択肢 / AICon2026_takeda
rakus_dev
0
270
既存repo / AIとのやり取りから、おれのハーネスエンジニアリングの現状と課題を見てもらった
tsukasagr
1
100
20260720_クラウド女子会×PyLadiesTokyoコラボ Amazon Bedrock ハンズオン用資料
yuuka51
2
120
「休む」重要さ
smt7174
6
1.7k
kaonavi Tech Night#1
kaonavi
0
170
全社でのソフトウェアサプライチェーン攻撃対策をやってみた with Takumi Guard
z63d
0
300
AI驚き屋発見器
yama3133
1
110
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
770
Claude Mythos、Fable...フロンティアAIの最新動向と企業のセキュリティ対策
flatt_security
0
130
reFACToring
moznion
0
290
AI工学特論: MLOps・継続的評価
asei
10
2.3k
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.9k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
390
Docker and Python
trallard
47
4k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.4k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
GraphQLとの向き合い方2022年版
quramy
50
15k
Accessibility Awareness
sabderemane
1
160
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
The SEO identity crisis: Don't let AI make you average
varn
0
520
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はページ単位でメモリを管理する • 仮想記憶という仕組みによってプロセスごとに別のメモリ空間を見せている • 仮想記憶によって以下のようなメリットがある ◦ プロセスが自分に与えられたもの以外のメモリに読み書きできなくなる ◦
物理メモリが断片化してもプロセスには連続領域として見せられる