プログラマブルインターバルタイマ(PIT)

Last-modified: 2008-05-05 (月) 21:19:30

6.1.3 プログラマブルインターバルタイマ(PIT)

プログラマブルインターバルタイマ(PIT)はデバイス。

このデバイスはタイマ割り込みと呼ばれる特別な割り込みを発生して、
カーネルに設定した通知時間が過ぎたことを知らせる。
またある特定の周期で割り込みを発生し続ける。

how to use?

I/Oポート 0x40-0x43を利用して、設定する。

tick

Linuxでは1000Hzの周波数でPITからIRQ0にタイマ割り込みを発生させるように
している(0.1回/ミリ秒)。この時間間隔はtickと呼ばれ、変数tick_nsecに格納されている。

  • tick_nsecは999,848ナノ秒(クロック周期は1000.15Hz)に初期化されるが、
    コンピューターが外部のクロックと同期している場合には、カーネルが自動的に調節する。
  • tickが短いとタイマーの性能が上がり、入出力の多重送信などにも軽快に対応できるようになる。
    しかし反動として、カーネルモードでトラフィックが増加するため、ユーザープログラムが遅くなる。

[質問]
tickは何に使われるのか?
tickを使っている例?

PITの初期化

init_IRQ()で初期化されている。
タイマ割り込みの周期を決定するマクロ定数
 - HZ 秒あたりのタイマ割り込みの回数(周波数) 1000
 - CLOCK_TICK_RATE = 8254内部オシレータの周波数、1,193,180
 - LATCH = CLOCK_TICK_RATEとHZの比

[質問]
何でLATCHをPITの初期化で使用しているのか?