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
プロセスへのメモリ割り当て2-Pythonのようなナウい言語ではどうやってメモリ獲得するのか
Search
Satoru Takeuchi
PRO
July 10, 2024
190
1
Share
プロセスへのメモリ割り当て2-Pythonのようなナウい言語ではどうやってメモリ獲得するのか
以下動画のテキストです。
https://youtu.be/aI7ancLZUTQ
Satoru Takeuchi
PRO
July 10, 2024
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
51
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
1
56
ファイルシステムの整合性を回復するfsck
sat
PRO
1
58
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
4.8k
ファイルシステムの不整合
sat
PRO
2
150
書籍執筆での生成AIの活用
sat
PRO
2
500
ChatGPTに従って体調管理2026
sat
PRO
0
180
eBPF
sat
PRO
1
150
waruiBPF
sat
PRO
0
140
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Language of Interfaces
destraynor
162
27k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
360
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
550
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
280
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
From π to Pie charts
rasagy
0
200
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Color Theory Basics | Prateek | Gurzu
gurzu
0
320
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
190
How to Talk to Developers About Accessibility
jct
2
220
Transcript
プロセスへのメモリ割り当て(2) Pythonのようなナウい言語では どうやってメモリ獲得するのか Jul. 10th, 2024 Satoru Takeuchi X: satoru_takeuchi
1
はじめに • 前回の動画で学んだこと ◦ プロセスへのメモリ割り当てには mmapというシステムコールを使う • 疑問 ◦ Pythonのようなナウい言語はメモリやらアドレスを直接意識せずに変数を操作できる
◦ ナウい言語で変数を動的に作成すると何が起こる ? • 備考 ◦ 📝 Pythonでも抽象化された形で mmapを呼ぶことはできます 2
答え • 言語処理系が頑張って、変数を作るときに裏でmmapを呼んでいます • 雑に書くと以下のようになっている ◦ プログラム作成時に変数を格納するためのメモリ領域を一定量獲得しておく ◦ 変数が獲得されるたびに確保済みのメモリ領域を一部ずつ切り出す ◦
確保済みの領域が足りなくなれば mmapを発行して領域の数を増やす 3
Pythonの場合は? • Pythonの公式実装(CPython)はCプログラム • 処理系のメモリ獲得の方法 ◦ mmapを呼ぶ ◦ C標準のメモリ獲得関数 mallocを呼ぶ
▪ その裏側ではC標準ライブラリ(glibc)がmmapを呼んでいる 4
実機確認 • Pythonで大きなメモリ領域を獲得した際にmmapが発行されることを確認 • mem.pyプログラム ◦ メモリ獲得前であることを示すメッセージを表示する ◦ メモリ獲得後であることを示すメッセージを表示する •
mem.pyをstrace経由で動かしたとき、2つのメッセージが表示される間にmmapが 発行されるかを確認。 5
まとめ PythonスクリプトもC言語の処理系を通してmmapによってメモリを獲得 6