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
41
114-ファイルのshallow_copy.pdf
sat
PRO
2
22
113-Btrfsのスナップショット.pdf
sat
PRO
0
7
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
54
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
2
60
ファイルシステムの整合性を回復するfsck
sat
PRO
1
60
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
4.9k
ファイルシステムの不整合
sat
PRO
2
150
書籍執筆での生成AIの活用
sat
PRO
2
520
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
460
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
140
Code Reviewing Like a Champion
maltzj
528
40k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
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