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
Satoru Takeuchi
PRO
October 18, 2025
250
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
メモリマップトファイル
以下動画のスライドです
https://youtu.be/x8oS9mSCZtI
Satoru Takeuchi
PRO
October 18, 2025
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
44
114-ファイルのshallow_copy.pdf
sat
PRO
2
26
113-Btrfsのスナップショット.pdf
sat
PRO
0
10
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
54
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
2
61
ファイルシステムの整合性を回復するfsck
sat
PRO
1
62
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
5k
ファイルシステムの不整合
sat
PRO
2
150
書籍執筆での生成AIの活用
sat
PRO
2
520
Featured
See All Featured
Optimizing for Happiness
mojombo
378
71k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
170
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
260
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
860
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
440
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
メモリマップトファイル Oct. 18th, 2025 Satoru Takeuchi X: satoru_takeuchi 1
メモリマップトファイルとは • ファイルを読み書きする方法の一つ • read(),write()システムコールではなくmmap()システムコールを使う • 📝 mmapシステムコールといえば… ◦ 過去動画:
その75 プロセスへのメモリ割り当て (1) 2
mmap()を発行 3 仮想アドレス空間 物理メモリ ストレージデバイス プロセスのメモリ ファイルのデータ 仮想アドレス空間上の領域を ファイル上の領域と結びつける
読み出し 4 仮想アドレス空間 物理メモリ ストレージデバイス プロセスのメモリ ファイルのデータ ページキャッシュ 2. ページキャッシュに
コピー 1. メモリ読み出しアクセス 3. ページキャッシュ から読み出し
書き込み時 5 仮想アドレス空間 物理メモリ ストレージデバイス プロセスのメモリ ファイルのデータ ページキャッシュ 後で書き込み 1.メモリアドレスに書き込み
更新されたデータ 更新されたデータ 2.ページキャッシュに書き 込み
メモリマップトファイルの活用例 • 実行ファイルやライブラリは仮想アドレス空間にマップされている • デマンドページングによりメモリ使用量は最小限に抑えられる ◦ プログラム起動時、ライブラリ読み出し時は即座にメモリを消費するわけではない ◦ 実際にそれらにアクセスしたときにページキャッシュに読み出されてメモリを消費する 6
$ cat /proc/self/maps … 626927c4c000-626927c51000 r-xp 00002000 08:02 2492037 /usr/bin/cat … 7f9f59a28000-7f9f59bb0000 r-xp 00028000 08:02 2497229 /usr/lib/x86_64-linux-gnu/libc.so.6 …
cat起動時にmmap()を呼んでいる様子 • 📝 mmap()を呼んでいるのはcat本体ではなくld.soというライブラリ ◦ そのうち動画で説明するかも • 📝 catの実行ファイルをメモリマップする処理はカーネルが実施するのでstraceに は現れない
7 $ strace -o out.txt cat /proc/self/maps … $ cat log.txt … openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 … mmap(0x73acc0028000, 1605632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x73acc0028000 …
まとめ • mmap(): メモリアクセスによってファイルにアクセスする方法 ◦ read,write: 読み書きするごとにシステムコールを発行 • 実行ファイルやライブラリは仮想アドレス空間にマップされている 8