私のプロセスの1つに対してカーネルが管理しているページテーブルを見たいです。私の場合、PID 4680はにマップされているので、dhclient
ページテーブルを表示するために次のことを試しました。
sudo cat /proc/4680/pagemap
ただし、このコマンドは出力なしでUbuntu 14.04で中断されます。 2分ほど待ってから殺そうとしました。
もっと良い方法がありますか?
ベストアンサー1
~によると文書、/proc/PID/pagemap
各仮想ページには64ビット値が含まれています。
4096バイトのページがあり、64ビットの仮想アドレス空間があり、2**52
ページがあります。したがって、ファイル全体はそれぞれ8バイトのエントリにpagemap
なります。2**52
非常に大きなファイルです。全体をキャプチャするのに時間がかかります。 2分未満。本当に久しぶりです。私のコンピュータで速度テストを行ったところ、約21年かかりました。
ほとんどゼロで埋められます(プロセスでマップされていないすべての仮想アドレスについて)。\0
端末への複数の出力は、目に見える効果はありません。ぶら下げではなく、好きなように行われます。
テキストファイルではないため、ゼロ以外の項目も端末で見えにくくなります。
ページマップファイルを使用する正しい方法は、探している仮想アドレスを知って、それを見つけて8バイトを読み取ることです。または、さまざまな情報が必要な場合は、8バイトの倍数を読んでください。ゼロ以外のすべての項目が必要な場合は、まず読んで/proc/PID/maps
マップされた範囲を見つけます。