プロセスのページテーブルの表示

プロセスのページテーブルの表示

私のプロセスの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マップされた範囲を見つけます。

おすすめ記事