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
40
仮想アドレスと物理アドレスの対応を実機確認してみよう
以下動画のテキストです
https://youtu.be/o1gRyW8U3dA
Satoru Takeuchi
PRO
June 15, 2024
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
無いはずのパーティションがある Phantom Atari Partition
sat
PRO
1
22
仮想アドレスから物理アドレスにはどうやって変換するの?
sat
PRO
2
40
俺とキャンプ4
sat
PRO
0
42
小さな疑問を大事にすると成長に繋がる
sat
PRO
3
94
データ冗長化のしくみ RAID ~冗長性が無いRAID0編~
sat
PRO
2
29
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
320
俺とキャンプ2
sat
PRO
1
120
俺とキャンプ3
sat
PRO
0
91
データ冗長化のしくみRAID 基礎概念とRAID1編
sat
PRO
2
51
Other Decks in Technology
See All in Technology
[GSF Japan] AIとSustainabilityの不思議な関係
dahatake
3
100
フロントエンドの Monorepo をやめてリポジトリ分割したワケ / Why did we stop using Monorepo on the frontend and split the repository?
kaminashi
5
1.5k
超アナログ中心な印刷会社で「エンジニアリング」を見直す
logica0419
4
140
The Path to Zero Touch Production
ramimac
0
830
お手並み拝見にしないオンボーディング
zuckey_17
2
1.1k
「ナンモワカラン」から「チョットワカル」へ!Private CA Connector for SCEPについて話します
tokushun
0
220
Cloud Nativeを支える要素技術・プロダクト・プラクティスの歩み / infrastudy-returns-01-amsy810
masayaaoyama
0
260
What's New in Firebase 2024
firebasethailand
1
110
スクラムゾンビになっちゃたので、古のフレームワークを導入した話 / Embracing Ancient Frameworks
kaonavi
0
170
みんなに役立つ「テスト」を学んでみよう!(20140105版)
mizunori
1
110
カード発行会社(イシュア)を 支えるシステム解説
yutadayo
0
160
Janus
bkuhlmann
1
540
Featured
See All Featured
Statistics for Hackers
jakevdp
791
220k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
88
46k
Web development in the modern age
philhawksworth
203
10k
Rebuilding a faster, lazier Slack
samanthasiow
75
8.4k
Fireside Chat
paigeccino
24
2.7k
Git: the NoSQL Database
bkeepers
PRO
423
64k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Designing Experiences People Love
moore
136
23k
Why Our Code Smells
bkeepers
PRO
331
56k
Ruby is Unlike a Banana
tanoku
96
10k
The World Runs on Bad Software
bkeepers
PRO
62
10k
We Have a Design System, Now What?
morganepeng
45
6.9k
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