スポンサーリンク

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

スポンサーリンク