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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satoru Takeuchi
PRO
October 18, 2025
280
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
68
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
93
あなたの知らないバージョン命名規則
sat
PRO
3
900
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
64
Machine Check Exception
sat
PRO
2
66
バイナリダンプの模様を読む
sat
PRO
0
89
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
87
114-ファイルのshallow_copy.pdf
sat
PRO
2
57
113-Btrfsのスナップショット.pdf
sat
PRO
0
40
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
23k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
WCS-LA-2024
lcolladotor
0
830
The Limits of Empathy - UXLibs8
cassininazir
1
670
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Abbi's Birthday
coloredviolet
4
10k
Claude Code のすすめ
schroneko
67
230k
Making Projects Easy
brettharned
120
6.8k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
The untapped power of vector embeddings
frankvandijk
2
1.9k
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