![Linux では proc ファイル システムはどのくらいの頻度で更新されますか?](https://rvso.com/image/31685/Linux%20%E3%81%A7%E3%81%AF%20proc%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%20%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AF%E3%81%A9%E3%81%AE%E3%81%8F%E3%82%89%E3%81%84%E3%81%AE%E9%A0%BB%E5%BA%A6%E3%81%A7%E6%9B%B4%E6%96%B0%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
Linux ではファイル システムはどのくらいの頻度でproc
更新されますか? 20 ミリ秒 (タイム クォンタム) ですか?
答え1
proc ファイルシステムから読み取った情報は、どのメディアにも (RAM にも) 保存されないため、更新するものはありません。
proc ファイル システムの目的は、読み書きされるデータがメディア上に存在しない場合でも、ユーザー空間プログラムがシンプルで使い慣れたファイル システム セマンティクス (、、、、) を使用してカーネル データを取得または設定できるようにすることですopen
。この設計上の決定は、形式を事前に指定できないデータの取得と設定には、 ASN1でエンコードされた OID などを実装するよりも優れている (つまり、人間が読み取り可能で、簡単にスクリプト化できる) と判断されました。ASN1 でエンコードされた OID も問題なく動作していました。close
read
write
lseek
proc ファイルシステムから読み取るときに表示されるデータは、ファイルの先頭から読み取りを行うときにオンザフライで生成されます。つまり、読み取りを行うと、読み取っているファイルに固有のカーネル コールバック関数によってデータが生成されます。ファイルの先頭から読み取りを行ってlseek
再度読み取ると、コールバックが再度呼び出され、データが再度生成されます。同様に、proc ファイルシステムの書き込み可能なファイルに書き込むと、入力を解析してカーネル変数を設定するコールバック関数が呼び出されます。生の形式の入力データは保存されません。
上記は、Hauke Laging 氏が簡潔に述べたことを、少しだけ冗長に述べたものです。彼の回答を受け入れることをお勧めします。
答え2
アクセスするたびに更新されます。その瞬間のカーネルの状態が表示されます。そのため、「ファイル」に表示されるサイズは実際のサイズではありません。実際のサイズは変更される可能性があり、ファイルにアクセスした瞬間に決定されます。
見なければ何日も更新されないかもしれません。:-)