topのソースコードリーディング

プロセス毎の統計情報をどのように監視, 管理いるのかを知るために,
まずはtopコマンドのソースコードから順番にカーネルまで調べていきたい.
最初に,topのソースコードでprocessの情報を取得している部分を探した.

1. window_show関数は画面に収まる範囲内のprocessの情報をtask_show関数で表示する.
2. task_show関数では,optionに応じてプロセスの情報が提示される.
全てのプロセスの情報はproc_t **ppt内に格納されているようだ.
0. pptはsummary_show関数で返されている.
processが存在していない場合, procs_refreshでtableの取得をしている.
putp関数は何をしているのだろうか...
2回目以降もprocs_refresh関数でp_tableを更新している.

  • 1. procs_refresh関数の動作はprocessとthreadを分けて表示するか否かで挙動が異なる.

prochlp関数
openproc関数
PROCTAB構造体
readproc関数
について次回は掘り下げる.
/proc/[pid] 以下をgrepして取得しているだけだったら、どうしたものか.
その場合,ファイルに書き込んでいるプロセスを探す必要がある.
また,十分に読み込めていないが,threadの情報取得についてもチェックしておきたい.