CLOCKS(7) FreeBSD 多方面の情報マニュアル CLOCKS(7)
名称
clocks − いろいろなシステムタイマ |
書式
#include <time.h> |
解説
HZ (ヘルツ) は BSD におけるアプリケーションインタフェースの一部ではありま せん。 周波数の異なるいろいろな実体をもつクロックおよび仮想的 (計時用) なクロッ クがあります。 |
• スケジューリングクロック。周波数 100 となるはずの実クロックです。アプリケーションからは参照できません。
• 統計クロック。周波数 128 となるはずの実クロックです。アプリケーション から直接参照することはできません。 • clock(3) によって報告されるクロック。周波数が通常 128 の仮想クロック です。実際の周波数は CLOCKS_PER_SEC マクロによって与えられます。 CLOCKS_PER_SEC は浮動小数点値であるかもしれないことに注意してくださ い。 clock(3) は FreeBSD での新しいプログラムには使用しないでくださ い。これは getrusage(2) に比較して機能的に劣っていますが、 ANSI に適 合するために提供されています。 getrusage(2) をコールし、情報と結果を 受け渡すことによって実装されています。 • times(3) によって報告されるクロック。周波数が通常 128 の仮想クロック です。実際の周波数は CLK_TCK マクロ (非推奨です、使用しないでくださ い) と sysconf(SC_CLK_TCK) と sysctl(3) によって与えられます。この周 波数は CLOCKS_PER_SEC とは異なりうることに注意してください。 times(3) は FreeBSD での新しいプログラムには使用しないでください。これは getrusage(2) と組み合わせた gettimeofday(2) に比較して機能的に劣って いますが、 POSIX に適合するために提供されています。 gettimeofday(2) と getrusage(2) をコールし、情報と結果を受け渡すことによって実装され ています。 • プロファイリングクロック。 1024 の周波数をもつ実クロックです。これは 主に moncontrol(3) と kgmon(8) と gprof(1) で使用されます。アプリケー ションはこの実際の周波数を決定するためには sysctl(3) を使うか、プロ ファイリングデータファイルのヘッダを読んで調べなければなりません。 • mc14618a のクロック。 32768 の公称周波数をもつ実クロックです。分周さ れて統計クロックおよびプロファイリングクロックに使われます。このク ロックはアプリケーションからは参照できません。 • マイクロ秒クロック。 1000000 の周波数をもつ仮想クロックです。これは BSD ではほとんどの時間計測に使用され、アプリケーションに対して getrusage(2) や gettimeofday(2) や select(2) や getitimer(2) などでエ クスポートされています。これが通常 BSD のアプリケーションで使用される べきクロックです。 • i8254 クロック。 1193182 の公称周波数をもつ実クロック/タイマです。 3 個の独立したタイムカウンタを使用可能です。分周されてスケジューリング クロックに使われます。アプリケーションからは参照できません。 • 第 5 世代以降の x86 システムでの、TSC クロック (64 ビットレジスタ)。 CPU の 1 秒あたりのサイクル数に等しい周波数の、実クロックです。周波数 は、使用可能ならば sysctl machdep.tsc_freq を使用して得られます。これ はスケジューリングクロックの値の間に挿入するために使用されます。 perfmon(4) の PMIOTSTAMP 要求でアクセス可能です。 • ACPI クロック。 3579545 の公称周波数をもつ実クロック/タイマです。 24 または 32 ビットレジスタを介してアクセスされます。 TSC クロックとは異 なり、たとえ CPU がスリープしたり CPU のクロック速度が変わったりして も、それに関わらず一定のチック速度を維持します。アプリケーションから は参照できません。 まとめ: もし HZ (ヘルツ) が 1000000 でなければ、アプリケーションはおそら く間違ったクロックを使用することになるでしょう。 関連項目 |
gprof(1), clock_gettime(2), getitimer(2), getrusage(2), gettimeofday(2), select(2), clock(3), moncontrol(3), times(3) |
作者
このマニュアルページは Bruce Evans によって投稿された説明にもとづいて、 Jörg Wunsch によって書かれました。 FreeBSD 10.0 February 24, 2005 FreeBSD 10.0 |