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
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
55
あなたの知らないバージョン命名規則
sat
PRO
2
660
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
59
Machine Check Exception
sat
PRO
2
55
バイナリダンプの模様を読む
sat
PRO
0
80
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
68
114-ファイルのshallow_copy.pdf
sat
PRO
2
45
113-Btrfsのスナップショット.pdf
sat
PRO
0
30
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
66
Other Decks in Technology
See All in Technology
35分でわかるEffective Platform Engineering
nwiizo
5
630
2027年のMetricKit
kantacky
0
170
マイナンバーカード本人確認の実装比較(OAuth/OIDC Numa (Immersion) Workshop 2026) / 20260825 numa-12
oidfj
PRO
0
130
ブラウザで変わるID連携(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
140
RelayerというPHPのフレームワークを作った
polidog
PRO
0
140
tamachi.go 誕生の裏側
rymiyamoto
1
200
長期運営で肥大化したExcelマスターデータの解消に向けた移行事例
gree_tech
PRO
0
460
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.5k
AI for Science時代を切り開く、政府の次世代HPC戦略の展望
gpuunite_official
0
250
Kiro入門|仕様駆動開発で変わるAI時代の開発スタイル
cmkudo
0
360
Kiro5兄弟のいまどきのセキュリティ基礎知識
kentapapa
0
110
RapidCopy2 Matrix I/Oエンジンによるファイルコピーソフトウェアの設計と実装
kengosawa2
1
390
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
490
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
440
Designing for humans not robots
tammielis
254
26k
Embracing the Ebb and Flow
colly
88
5.1k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
470
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
HDC tutorial
michielstock
2
820
Amusing Abliteration
ianozsvald
1
260
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Making the Leap to Tech Lead
cromwellryan
135
10k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
970
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はページ単位でメモリを管理する • 仮想記憶という仕組みによってプロセスごとに別のメモリ空間を見せている • 仮想記憶によって以下のようなメリットがある ◦ プロセスが自分に与えられたもの以外のメモリに読み書きできなくなる ◦
物理メモリが断片化してもプロセスには連続領域として見せられる