5

私が読んだように、jiffies はタイマー ISR によってタイマーティックごとにインクリメントされます。しかし、SMP では、すべての CPU に独自のタイマー割り込みがあり、したがって独自のタイマー ISR があります。だから私の質問は:

jiffies はすべての CPU でグローバルですか? もしそうなら、どのCPUがタイマーISRでそれをどのようにインクリメントしますか?

私の理解では、jiffy を CPU ごとにすることはできません。そうしないと、同じプロセスを別の CPU でスケジュールすると、jiffy の値が異なります。

4

2 に答える 2

6

2つのタイマー割り込みがあります
。ローカルタイマー割り込み(LOCin /proc/interrupts)は、各CPUでjiffyごとに1回発生します。
グローバルタイマー割り込み(割り込み0)は、任意のCPUでjiffyごとに1回発生します。インクリメントしますjiffies

「TicklessKernel」構成オプション(Linux 2.6.21で導入CONFIG_NO_HZ)は、これらの割り込みを削除することに注意してください。ティックレスカーネルを使用すると、定期的な割り込みは発生しなくなります。代わりに、プロセスがクォンタムを開始すると、Linuxはハードウェアに「目覚まし時計」を設定して、クォンタムが終了したときに割り込みをトリガーします。

于 2012-07-19T13:26:36.197 に答える
0

この投稿リンクを参照してください。

基本的に、tick_do_timer_cpu変数は jiffy を管理するコードを実行することになっている CPU ID を保持します。jiffies 管理機能の実行は、1 つのコアから別のコアにジャンプできますが、明らかに異なるコアで同時に更新を行うことはできません。

こちらもご覧くださいkernel/time/tick-common.c

于 2015-10-05T14:01:26.050 に答える