タイマー割り込みを実装するために、Linuxカーネルはどのハードウェアを使用しますか?

タイマー割り込みを実装するために、Linuxカーネルはどのハードウェアを使用しますか?

私はすべてのタイマー割り込みに対して更新されるjiffiesについて読んでいます。タイマ割り込みの頻度はコンパイル時定数HZによって決まります。

X86には多くのハードウェアデバイスがあります。 1. RTC 2. プログラマブル割り込みタイマ 3. ローカル APIC 4. タイムスタンプカウンタ 5. HPET

これは jiffie 値を増やすために Linux カーネルが使用するデバイスです。

ロバート・ラブの本には「プログラム可能な割り込み時間」と記載されています。まだ効果的ですか?

 cat /sys/devices/system/clocksource/clocksource0/available_clocksource 
tsc hpet acpi_pm 

# cat /sys/devices/system/clocksource/clocksource0/current_clocksource 
tsc

上記のsysファイルはこの情報を提供していますか?

ベストアンサー1

私はあなたがこの記事や非常に似たものを読んでいると思います(https://elinux.org/Kernel_Timer_Systems):

タイマーホイール、JiffiesとHZ(それ以外の場合)

元のカーネルタイマーシステム(「タイマーホイール」と呼ばれる)は、すべてのタイマー割り込みに基づいてカーネルの内部値を増加させました。タイマー割り込みはデフォルトのスケジューラになり、他のすべてのタイマーは jiffies に基づいています。タイマー割り込み速度(および一時的な増加速度)は、HZというコンパイル時定数として定義されます。過去には、カーネルがHZ値として100を使用して10ms HZとなりました。 i386の値が1000に変更され、1ミリ秒の短い間隔が生成されます。最近(2.6.13)カーネルはi386のHZを250に変更しました。 (1000は高すぎると見なされます)。

だから、「どんなタイマーが重要ですか?」と聞いているようです。

削除方法別:RTC、最新の基本APIC、TSCは固定周波数割り込みをサポートしていません。以下で説明するように、HPETはPITを置き換えたようです。

だから最も可能性の高い答えは次のとおりです。高温PET。これは通常、位置する石英クリスタルによって引き起こされるカウンタに基づいています。ナンチャオ。この場合、 jiffy は単一の HPET コンパレータによって定期モードでクロックされ、次のようになります。邪魔する

ただし、LinuxではまだPITまたは他のタイマーを使用できます(参照:https://en.wikipedia.org/wiki/High_Precision_Event_Timer):

使い方と互換性

HPETが存在する前に設計されたオペレーティングシステムはHPETを使用できないため、他のタイマー機能を使用します。最新のオペレーティングシステムでは、どちらかを使用できる傾向があります。一部のハードウェアは両方を実行します。実際、ほとんどの最新のサウスブリッジチップは、オペレーティングシステムを使用するかどうかにかかわらず、PIT、PIC、APIC(Advanced Programmable Interrupt Controller)、およびRTCデバイスのレガシーサポートインスタンスをシリコンに統合するため、最新のPCが古いオペレーティングシステムを実行するのに非常に役立ちます。になります。システム。

PITとPETの接続

プログラム可能な割り込みタイマーは、コードの正常な実行を妨げる可能性があるアクティブタイマーです。 HPETに置き換えられたようです。:

PIT(プログラマブルインターバルタイマー)は、特にマルチタスク環境での最新のコンピュータの重要な部分です。様々なレジスタ値を設定することにより、PITチップが特定の速度でカウントアップまたはダウンし、特定の時間に割り込みをトリガすることができます。タイマーは、トリガー時に自動的にカウントを再開するようにループモードに設定するか、ワンショットカウントダウンモードに設定できます。

最新のハードウェアでは、PITの概念が進化したHPET(High Precision Event Timer)を提供できます。

おすすめ記事