NTPおよびNTPDナノコア

NTPおよびNTPDナノコア

以下のように、NTP Nanokernelについていくつかの質問があります。http://www.eecis.udel.edu/~mills/database/brief/nano/nano.pdf

最大の質問は、このナノカーネルがシステムクロックサイクル以下の精度(つまりns精度)をどのように提供できるかということです。

いくつかのマイナーな質問があります。

  1. この修正がメインラインLinuxカーネルに導入された場合、いつ導入されますか?
  2. 第二に、ナノカーネルは、CPUクロック周期(HZがどのように設定されたかに関係なく)とクロック周期カウンタの統合された組み合わせを使用しているようです。

「プロセスサイクルカウンタ(PCC)は、ティック割り込みの間にマイクロ秒またはナノ秒を挿入するために使用されます。」

私が知っている限り、割り込みを提供しないので、サイクルカウンタをどのように使用しますか?ナノカーネルは、現在カウンタを含むプロセッサレジストリ値を読み続けますか?

  1. 最後に、NTPDはCPUクロック周波数を変更しますか、またはコンピューティングクロック調整を適用するソフトウェアクロックのみを維持しますか?

ベストアンサー1

注:NTPには、NTPを使用しないオペレーティングシステムにパッチを適用するために使用できるマイクロカーネルというアイデアがありますが、特にLinuxではそうではありません。質問1で述べたように、NTPコードはカーネル自体にあります。

0:このナノコアはどのようにシステムクロック周期以下の精度(ns精度など)を提供しますか?

システムクロックのティック精度よりも高い精度は、他のコンピュータまたはデバイスの総精度に依存して達成されます。システムクロックティックは、このコンピュータのティック更新頻度を提供します。ただし、精度の桁数は通常、POSIX 標準を使用するオペレーティングシステムなど、使用される特定のソフトウェアで定義されます。述べたように、特定の時間構造に対するPOSIX規格はナノ秒精度を達成することができます。

システムクロックよりも優れた精度を得る方法を学ぶために、GPSデバイスやいくつかの素晴らしい原子時計が私のコンピュータに接続されているとしましょう。誰かが私に今何時か尋ねるたびに私は時計を見て答える。

ntpがLinuxと同じカーネルにある場合は、システムクロック時間の代わりにGPSデバイス時間を使用できます。一日の時間を取得します()着信電話。

コンピュータの時計はもちろん、GPSや原子時計で得た時間をコンピュータの時間と比較して1ティックが経過したら、質問3の回答で説明されているようにadjtime()を使用して調整するように調整します。

  1. この修正がメインラインLinuxカーネルに導入された場合、いつ導入されますか?

NTPナノカーネルのアイデアは、少なくとも1998年にさかのぼるntpバージョン4.0で導入されました。私はそれが少なくとも2.2.36以来、どんな形でもLinuxカーネルに存在していたと思います。Linux githubログntp.c2006年10月1日に、ntpコードがカーネルから独自のファイルに分割されたことが報告されました。しかしもちろんそれは以前にもありました。

おおむねこれは新しいものではありません。

  1. 私が知っている限り、割り込みを提供しないので、サイクルカウンタをどのように使用しますか?ナノカーネルは、現在カウンタを含むプロセッサレジストリ値を読み続けますか?

プログラム変数を読み取る他のプログラムと同じように使用します。これを使用するコードが実行され、値が必要な場合は、たとえば新しい情報が得られたため、変数を読み取って更新します。誰かが時間が必要な場合でも計算に使用されます。したがって、コードが非常に愚かな方法で書かれていない限り(そうではないと確信しています)、必要でない限り、「プロセッサレジストリ値を継続的に読み取ること」はありません。

  1. 最後に、NTPDはCPUクロック周波数を変更しますか、またはコンピューティングクロック調整を適用するソフトウェアクロックのみを維持しますか?

システムコールを使用します。時間を調整してください() 1998年以前までさかのぼります。 adjtimeの目的は、定期的にクロックカウンタを予約して増分を見逃して速度を遅くしたり、1を超えて増やして速度を上げることです。

おすすめ記事