1

OSによって答えが異なると思うので、Mac OS Xに関連する答えだけに興味があります。

たとえば、Apple はこのドキュメントでカーネル変数 avenrun について言及しています。他にもたくさんあることを知っており、次のようにすることで完全なリストを生成できると思います。

nm -j /mach_kernel

ただし、名前のリストを持っているだけでは、変数の構造や使用方法については何もわかりません。

私が疑問に思っていたのは、どのカーネル変数が利用可能で、どのように使用され、どのように使用されるかを学習する方法です。

4

1 に答える 1

1

最良のアイデアは、Appleのダウンロードページから入手できるカーネルソースを調べることです。これはhttp://www.opensource.apple.com/source/xnu/で入手できます。

残念ながら、カーネル変数が何であるかを知っているだけでは、あまり役に立ちません。それは本当にあなたが達成しようとしていることに依存します。純粋にカーネルについて学習する目的でそれを行っている場合は、ソースの方がはるかに優れた学習場所です。ただし、変数が何をするかは、特定の問題の解決策を見つけることほど重要ではありません。この場合、それは述べられていません。

'uname -a'を実行すると、問題のカーネルバージョンへのリンクが表示されます。

$ uname -a
Darwin my.host.name 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun  7 16:32:41 PDT 2011; root:xnu-1504.15.3~1/RELEASE_X86_64 x86_64

したがって、これは1504.15.3に基づいており、次の場所にあります。http ://www.opensource.apple.com/source/xnu/xnu-1504.15.3/

有用な情報のほとんどは、「sysctl -a kern。」を介してアクセスできますが、これは、次の場所にあるbsd / kern/kern_sysctlファイルに実装されています。

http://www.opensource.apple.com/source/xnu/xnu-1504.15.3/bsd/kern/kern_sysctl.c

残念ながら、それはこのavenrun変数について具体的に教えてくれません。ただし、host.cを見ると:

http://www.opensource.apple.com/source/xnu/xnu-1504.15.3/osfmk/kern/host.c

これは、平均ホスト負荷の計算に使用されている変数として表示されます。したがって、これを使用して、任意の時点でシステムの負荷を判断できる可能性があります。

ただし、質問が「システムの負荷をどのように見つけるか」である場合。次に、'sysctl-a|を実行します。grep load'と'vm.loadavg'を考え出し、それをsysctl( http://www.opensource.apple.com/source/xnu/xnu-1504.15.3/bsd/sys/sysctl.h)で探します。読み方を確認します。

于 2011-07-12T08:39:29.277 に答える