Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
メモリマップトファイル
Search
Satoru Takeuchi
PRO
October 18, 2025
300
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
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
78
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
110
あなたの知らないバージョン命名規則
sat
PRO
3
920
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
74
Machine Check Exception
sat
PRO
2
70
バイナリダンプの模様を読む
sat
PRO
0
110
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
110
114-ファイルのshallow_copy.pdf
sat
PRO
2
62
113-Btrfsのスナップショット.pdf
sat
PRO
0
46
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
4 Signs Your Business is Dying
shpigford
187
23k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
600
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
580
A Soul's Torment
seathinner
8
3.8k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
Leo the Paperboy
mayatellez
10
2.4k
The SEO Collaboration Effect
kristinabergwall1
1
590
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
620
Bash Introduction
62gerente
615
220k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
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