これまで私が理解したことは、プログラムがその下のファイルを開いて読み取ると、カーネルがすぐに/proc/
情報を生成することです。場合によっては、cpuinfo
ほとんどのデータはハードウェアによって決定され、システムの実行中は明らかに変更されません。わからないことはみんなこのデータのできないシステムの実行中に変更されました。
/proc/cpuinfo
システムを再起動せずに返される値を変更できますか?
答え1
はい。一方、このcpu MHz
フィールドは表示されるため頻繁に変更されます。現在のCPUの速度。たとえば、私のシステムでは次のようになります。
$ for i in {1..10}; do grep -m 1 MHz /proc/cpuinfo ; done
cpu MHz : 1596.000
cpu MHz : 1596.000
cpu MHz : 1596.000
cpu MHz : 1596.000
cpu MHz : 2394.000
cpu MHz : 2394.000
cpu MHz : 1596.000
cpu MHz : 1596.000
cpu MHz : 2394.000
cpu MHz : 2394.000
上記のコマンドは、cpu MHz
最初のCPUラインを10回印刷します。上記のように、これにより2つの別々の値が生成され、待ち時間も追加されません。このフィールドは頻繁に変更されると予想できます。他の値は変わらないと思いますが、テストでも変更されていませんが、誓うことはできません。
答え2
アーキテクチャによって異なります。関連コードはここにあります(ARMの場合)。
http://lxr.free-electrons.com/source/arch/arm/kernel/setup.c#L1074
注:ARMの場合、すべてのフィールドは計算後に変更されないままにする必要があります。いいえcpu MHz
(@terdonはアーキテクチャへの答えを引用しました)。
たとえば、Raspberry Piの出力は次のようになります。
pi@raspberrypi ~ $ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
processor : 1
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
processor : 2
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
processor : 3
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
Hardware : BCM2709
Revision : a01041
Serial : 000000002489fe23