2017-11-14 24 views
3

私はこれを理解するのに苦労しています。カーネルタイマーシステムとはどのようなもので、スケジューラーとの関係は?

  • スケジューラは、一定の期間が経過したことをどのように知っていますか?
  • 何らかの種類のシステムコールを使用しているのですか?
  • 秒の代わりに定数HZを使用する点は何ですか?
  • システムタイマはスケジューラと何が関係していますか?
+1

Robert Loveの第11章(タイマーと時間管理)のLinuxカーネル開発をお勧めします。 – Varun

+2

@Varun:[CONFIG_NO_HZ_FULL = y'/'CONFIG_NO_HZ_IDLE = y' ](https://www.kernel.org/doc/Documentation/timers/NO_HZ.txt)やそのような様々なことは?しかし、それでもおそらく良い提案です。 –

+3

この質問はあまりにも広すぎます。あなたは事前の知識の束を仮定し、実際にタイミングとスケジューリングの仕方に関する全体的な質問に実際に答えることができない場合にのみ、各箇条書きに短い回答を与えることができます。先制的なマルチタスキングを一般的に理解していますか?そうでない場合は、お好みのOS教科書をお読みください。 関連:https://www.kernel.org/doc/Documentation/timers/(特にhttps://www.kernel.org/doc/Documentation/timers/timekeeping.txt)。 –

答えて

3

どのスケジューラは、一定期間が経過したことを知っていますか?

スケジューラはシステムクロックを調べます。

これは何らかの種類のシステムコールまたは割り込みを使用していますか?

システムクロックは頻繁に更新されるため、スケジューラは現在の値を読み取るだけで十分です。スケジューラはすでにカーネルモードになっているので、クロックの読み込みに関連するシステムコールインターフェイスはありません。

はい、ハードウェアレジスタを読み取り、システムクロックの現在の値を進める割り込みサービスルーチンであるISRをトリガするタイマ割り込みがあります。

秒の代わりに定数HZを使用する点は何ですか?

は昔ISRを呼び出すに多大なコストがあった、と呼び出すたびに、そのような期限切れスケジューラ量子を探していると、TCP RTO再送信タイマーを発射として、簿記の一定量を行いました。ハードウェアの柔軟性は限られており、一定間隔でISRを呼び出すことしかできなかった。 HZが100より大きい場合は10msごとにHZ値が高くなります.HZ値が高くなると、ISRが実行され、何もしないことが判明し、前回の実行以来イベントが発生していないことがわかります。仕事。 HZ値が低いとディスパッチ待ち時間に影響を与え、ネットワークや対話型応答時間が遅くなります。 HZチューニングのトレードオフは、実際のハードウェアシステムでは100または1000近くのどこかになる傾向がありました。システムクロック時間を報告したAPIは、各ISR呼び出しがクロックを1ティックだけ進めるティック単位でしか行うことができませんでした。したがって、発信者はティックユニットをS.I.ユニットに変換するためにHZの価値を知る必要があります。現代のシステムは、別々にスケジュールされたTCPカーネルスレッド上でネットワークタスクを実行し、これらの古い仮定の多くを廃棄するティックレスカーネルをサポートすることがあります。

スケジューラとは何が関係していますか?

スケジューラは、システムタイマが割り込みを発生させると実行されます。プリエンプティブスケジューラの性質は、ユーザモードコードを「スピン(spinning)」することができます。 while (1) {}を実行し、シングルコアシステムであっても実行キューを操作します。

さらに、スケジューラはプロセスが自発的にタイムスライスを放棄したときに実行されます。システムコールを発行するとき、またはページフォルトを取るとき。

+1

最新のx86 Linuxでは、「システムクロック」は 'rdtsc' +拡張のためのいくつかの命令です。そう、はい、それは非常に*急速に変わります。それを2回連続して読むときに同じ値を得ることは不可能です。 (このケースでは、ターボ/パワーセーブ( 'constant_tsc')に関係なく固定速度で動作するTSCを持つNehalemのように、最近の8年ほどの間に現代的な意味を持ち、コアクロックが停止しても停止しません(' nonstop_tsc ')。コア2は' nonstop_tsc'を見つけられないかもしれないので、壁時計としては役に立たないので、LinuxはHPETに落ちます) –

関連する問題