EN JA
EVENTTIMERS(4)
EVENTTIMERS(4) FreeBSD Kernel Interfaces Manual EVENTTIMERS(4)

名称

eventtimersカーネルイベントタイマサブシステム

書式

カーネルは、次のようないくつかのタイプの時間関連のデバイスを使用します。リアルタイムクロック、時間カウンタとイベントタイマです。リアルタイムクロックは、ほとんどシステムがダウンしているとき、実際の世界時間を追跡するのに関与しています。時間カウンタは、システムが実行しているとき、正確な稼働時間を追跡する目的のために単調に増加するタイムスタンプの生成に関与しています。イベントタイマは、異なった時間ベースのイベントを実行するために、指定された時間または定期的に割り込みを生成するのに関与しています。このページは、最終です。

解説

カーネルは、次の多くの異なる目的のために時間ベースのイベントを使用します: callout(9) メカニズムに基づく、スケジューリング、統計、時間キープ、プロファイリングと他の多くのものです。これらの目的は、今や、3 つの主なコールバックに分類されます:
hardclock()
callout(9) とタイムキーピングイベントエントリ。 hz 変数、通常 1000Hz、によって定義された周波数で呼び出されます。
statclock()
統計とスケジューライベントエントリ。約 128Hz の周波数で呼び出されます。
profclock()
プロファイライベントエントリ。有効にされるとき、約 8KHz の周波数で呼び出されます。

異なったプラットフォームは、異なった種類のタイマハードウェアを提供します。イベントタイマサブシステムの目標は、すべての必要な時間ベースのイベントをカーネルに供給して、そのハードウェアを制御して、それを使用する、統一された方法を提供することです。

各ドライバは、イベントタイマを実装して、サブシステムでそれらを登録します。 kern.eventtimer sysctl を通して、このような現在のイベントタイマのリストを見ることは可能です:

kern.eventtimer.choice: HPET(550) LAPIC(400) i8254(100) RTC(0) 
kern.eventtimer.et.LAPIC.flags: 15 
kern.eventtimer.et.LAPIC.frequency: 0 
kern.eventtimer.et.LAPIC.quality: 400 
kern.eventtimer.et.i8254.flags: 1 
kern.eventtimer.et.i8254.frequency: 1193182 
kern.eventtimer.et.i8254.quality: 100 
kern.eventtimer.et.RTC.flags: 17 
kern.eventtimer.et.RTC.frequency: 32768 
kern.eventtimer.et.RTC.quality: 0 
kern.eventtimer.et.HPET.flags: 7 
kern.eventtimer.et.HPET.frequency: 14318180 
kern.eventtimer.et.HPET.quality: 550

ここで:

kern.eventtimer.et. X .flags
は、次のイベントタイマケーパビリティを定義するビットマスクです:
1
サポートされた周期的モード。
2
サポートされた 1 回限りのモード。
4
タイマは、CPU 毎です。
8
CPU がスリープ状態まで進むとき、タイマは、停止するかもしれません。
16
タイマは、2 のべき乗の除数だけをサポートします。
kern.eventtimer.et. X .frequency
は、タイマの基本周波数です。
kern.eventtimer.et. X .quality
は、他のものと比較して、このタイマがどのように良いかを定義する整数値です。

カーネルのタイマ管理コードは、そのリストから 1 つのタイマを選びます。 kern.eventtimer.timer 調整変数/sysctl を通して現在の選択を読み込んで影響を与えることができます。いくつかの他の調整変数/sysctl は、このタイマが正確にどのように使用されているかに影響しています:

kern.eventtimer.periodic
周期的と 1 回限りの操作モードを選択することができます。周期的モードで、タイマハードウェアからの周期的な割り込みは、時間イベントのための時間の唯一のソースと考えられます。 1 回限りのモードは、指定された時間に正確に割り込みを発生するためにすべての必要なイベントとプログラムイベントタイマを正確にスケジュールするために現在選択された時間カウンタを代わりに使用します。デフォルト値は、選択されたタイマケーパビリティに依存しますが、もう一方がユーザまたはハードウェアによって強制されるまで、 1 回限りのモードが優先されます。
kern.eventtimer.singlemul
周期的モードで、タイマ周波数がどのくらい高いはずであるかを指定します。厳密でない、別名 hardclock() と statclock() イベント。訳注: 原文がおかしく、意味不明。デフォルト値は、設定された HZ 値によって、1、2 または 4 です。
kern.eventtimer.idletick
それたが忙しいかどうかにかかわらずあらゆるタイマ割り込みと無関係に各 CPU に受信させます。デフォルトで、このオプションは、無効にされます。選ばれたタイマが CPU 毎であり、周期的モードで実行しているなら、このオプションは、効果がありません - すべての割り込みは、常に発生されます。
March 13, 2012 FreeBSD