[解決済み] Linuxの/proc/pid/mapsや/proc/self/mapsを理解する。
2022-04-14 01:38:30
質問
組み込みLinuxアプリケーションのメモリ使用量を把握しようとしています。 その
/proc/pid/maps
ユーティリティ/ファイルは、詳細を見るための良いリソースのようです。 残念ながら、私はすべての列とエントリを理解していない。
anonymous inode 0 のエントリは何を意味するのでしょうか? これらは、より大きなメモリセグメントの一部のようです。
解決方法は?
の各行は
/proc/$PID/maps
は、プロセスまたはスレッド内の連続した仮想メモリの領域を記述します。各行には以下のフィールドがあります。
address perms offset dev inode pathname
08048000-08056000 r-xp 00000000 03:0c 64593 /usr/sbin/gpm
- 住所 - これはプロセスのアドレス空間における領域の開始と終了のアドレスである
-
パーミッション
- これは、領域内のページがどのようにアクセスできるかを記述しています。権限には、読み取り、書き込み、実行、共有の4種類があります。read/write/execute が無効の場合は
-
の代わりに表示されます。r
/w
/x
. リージョンが 共有 であれば、それは プライベート であるためp
が表示され、代わりにs
. プロセスが許可されていない方法でメモリにアクセスしようとすると、segmentation fault が生成されます。パーミッションの変更はmprotect
システムコールを使用します。 -
オフセット
- リージョンがファイルからマッピングされた場合 (
mmap
) 、これはマッピングを開始するファイル内のオフセットです。メモリがファイルからマッピングされていない場合は、0になります。 - デバイス - 領域がファイルからマップされた場合、これはファイルが存在するメジャーとマイナーのデバイス番号(16進数)です。
- イノード - 領域がファイルからマップされた場合、これはファイル番号である。
-
パス名
- 地域がファイルからマップされた場合、これはファイルの名前である。このフィールドは匿名マッピングされたリージョンでは空白です。のような名前を持つ特別なリージョンもあります。
[heap]
,[stack]
または[vdso]
.[vdso]
は仮想動的共有オブジェクトを意味します。カーネルモードに切り替えるためのシステムコールで使用される。 linux-gate.so.1とは何ですか?
多くの匿名領域があることに気づくかもしれません。これらは通常
mmap
が、どのファイルにも添付されていません。これらは、共有メモリやヒープに割り当てられないバッファなど、多くの雑多なものに使用されます。たとえば、pthread ライブラリは匿名マップ領域を新しいスレッドのスタックとして使用していると思います。
関連
-
Linux 5.10.10 正式版リリース:NULLポインタの不具合修正など。
-
TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] フォルダとそのサブフォルダ/ファイルのパーミッションを一括で変更する方法
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] ディレクトリへのシンボリックリンクを削除する
-
[解決済み] Linux/Unixで$PATHを永久に設定する方法 [終了しました].
-
[解決済み] Linuxのディレクトリ内のファイルを再帰的にカウントする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Linux sarコマンドによるシステム性能の詳細解析事例
-
deepin linuxでroot権限に切り替えるには?Deepinでrootに切り替えるためのヒント
-
deepin20のデフォルトブラウザを設定するには?deepinにデフォルトブラウザを追加するためのヒント
-
TclError: 表示名がなく、$DISPLAY環境変数もない。
-
Centos7 dns service named installation, encountered ** server can't find xxx.com: NXDOMAIN問題
-
sudo が sudo として表示される: setuid root である必要がある
-
floor'への未定義の参照/`&'への未定義の参照
-
[解決済み] すべてのディレクトリとサブディレクトリを再帰的にgrepするにはどうしたらいいですか?
-
[解決済み] Unix/Linuxで、ファイルのあるフォルダを別のフォルダにコピーするにはどうしたらいいですか?[クローズド]
-
[解決済み] POSIX」の意味を教えてください。