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
June 15, 2024
Technology
0
140
仮想アドレスと物理アドレスの対応を実機確認してみよう
以下動画のテキストです
https://youtu.be/o1gRyW8U3dA
Satoru Takeuchi
PRO
June 15, 2024
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
俺とVSCode Python Debugger Extension
sat
PRO
1
150
コード再利用のしくみ ライブラリ
sat
PRO
3
40
AWKへの愛を語る
sat
PRO
3
500
syncコマンドのデータ同期 完了待ちやエラー検出
sat
PRO
0
48
動作中のLinux環境の全メモリを見る
sat
PRO
1
67
Linuxの時間を10秒止める
sat
PRO
2
190
プロセスへのメモリ割り当て4 - 実際に使うときにメモリを獲得するデマンドページング(実践編)
sat
PRO
1
96
プロセスへのメモリ割り当て(3) 実際に使うときにメモリを獲得するデマンドページング
sat
PRO
1
63
プロセスへのメモリ割り当て(1) mmap
sat
PRO
2
120
Other Decks in Technology
See All in Technology
新入社員 オンボーディング改善プロジェクト - シンプルな仕組みで変革のきっかけを
enpipi
0
520
LLMOps : ΔMLOps
shuntaito
13
2.5k
40代後半で開発エンジニアからクラウドインフラエンジニアにキャリアチェンジし、生き残れる自信がようやく持てた話
iwamot
9
8.3k
Databricksワークショップ - 生成AIとDWH
taka_aki
2
4.4k
WebRTC と Wasm の関係を振り返ってみた
tetter27
0
190
dbt-coreで実現するCore DataMartsのデータモデリング〜dbt編〜 / Core DataMarts Modeling with dbt-core
i125
0
180
巨大企業でDX革新を起こすということ BTCONJP 2024
yamaken66
1
490
Azure AI servicesと歯のおはなし/AzureTravelers_Fukuoka2024_baba
nina01
1
110
VueとViteで作るUIコンポーネントライブラリ ~デザインシステムとプロダクトの理想的な分離を目指して~ / 20241019_cloudsign_VueFesJapan2024_1
bengo4com
8
4.9k
Why and Why not of enabling swap in Kubernetes
hwchiu
0
340
Publication dès la conception : restitution et perspectives - MENJ / Code Lutin
bluehats
0
170
今日から始める技術的負債の解消
leveragestech
3
460
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
88
5.6k
Designing on Purpose - Digital PM Summit 2013
jponch
114
6.9k
Code Reviewing Like a Champion
maltzj
519
39k
KATA
mclloyd
29
13k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
4.9k
Why Our Code Smells
bkeepers
PRO
334
57k
Visualization
eitanlees
143
15k
GitHub's CSS Performance
jonrohan
1030
460k
Optimizing for Happiness
mojombo
376
69k
Making the Leap to Tech Lead
cromwellryan
131
8.9k
Docker and Python
trallard
40
3k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Transcript
仮想アドレスと 物理アドレスの対応を 実機確認してみよう Jun. 15th, 2024 Satoru Takeuchi X: satoru_takeuchi
1
はじめに • プロセスの仮想アドレスと物理アドレスがどう対応しているかはユーザ空間から確 認できる • 実際に実機確認してみよう • 環境 ◦ CPUアーキテクチャ:
x86_64 ◦ カーネル: 5.15.0-107-generic • 📝 x86_64以外でできるかどうかは確認していないので知らないです 2
確認方法 • /proc/<pid>/pagemapに各プロセスのページテーブル相当の情報がある • ページ(4KiB)単位で8バイトのデータがメモリアドレス0から並んでいる • 主なデータ: ◦ bit 0
~ bit 54: page frame number: 4KiBをかけると物理メモリアドレスになる ◦ bit 63: present bit • 読み出すにはCAP_SYS_PTRACE capabilityが必要 ◦ Ubuntu 22.04.5のデフォルト設定なら rootならOK ◦ 権限が無ければzero fillされる • 📝 詳細は man procfsを参照 3
実機確認 • vp-conversion.py ◦ sudo ./vp-conversion.py <pid> <仮想アドレス> • 仮想端末上で動いているbashの実行ファイルをmapしている領域がどの物理アド
レスにマップされているか確認 ◦ cat /proc/$$/maps を実行してbashのメモリマップを確認 ◦ sudo ./vp-conversion.py $$ <仮想アドレス> を実行してアドレスの対応を見る • 📝 ある瞬間にページがメモリ上にあったとしても次の瞬間には無くなっているかも しれない。それはまた別動画で 4
まとめ • /proc/<pid>/pagemapを読めばプロセスの仮想アドレスと物理アドレスの対応がわ かる • かっこいい 5