2012-05-02 7 views
2

これは厳密には宿題に関する質問ではなく、分派です。プログラミング、アプリケーション、およびオペレーティングシステムの時間精度

オブジェクト指向言語ではどのように時間関数が実装されていますか、Cなどの命令型言語でも実装されていますか?タイムスタンプをナノ秒単位で取得し、それを文字列に変換する場合は、必ずしも正確ではないでしょうか?実際に

は、できるだけ早くあなたがタイミングデータを持つ任意の計算や作業を行うよう、それは今、いくつかの未知の程度に不正確ではないでしょうか?この仮定は正しいですか?

ネットワークレイテンシをかなり簡単に考慮することができますが、データが送信される前にローカルではどうなりますか?これまでに聞いたことのある人達は、時間関数は決して完全に正確ではないという結論に達したようです。

私が求めているのは、現実世界の時間アプリケーションはどのように実装されているのでしょうか?

+0

おそらく、数プロセッササイクルの遅延が顕著になる「現実世界の時間アプリケーション」の例を挙げることはできますか? – deceze

+0

Linuxのntpdデーモン?ガイダンスシステム? – atx

答えて

1

実際に宿題!

timeと呼ばれるものが進行します。長年前のこと は数字を持っていませんでした。ちょうど旅行の太陽と旅行の星は時間についてのヒント を与えていた。その後、特にデジタル革命の開始以来、Numbers がtimeに割り当てられました。 進行時間は、増加する数字に伴います。 異なるフォーマットについてはほとんど言わずに、私は、これらのスキームのほとんどが時間のためにorginを持っていると述べます。 Unix epoche は、たとえば1970年1月1日00:00:00 UTCの時刻です。もちろん、これは時間の始まりではありませんが、このような仮想的な起源は、数値を合理的なデータ構造に合わせるために選択されます。 Back to you question:現在の時間をキャプチャできますか?いいえ、私たちはできないでしょう。どんな時計を読むかは、光が私たちの目に向かう途中で時計を離れた時間を教えてくれるでしょう。それは非常に小さいかもしれませんが... 誰かが私たちに時間を頼んだら、我々は伝えてうれしいです。しかし、やはりいくらかの遅延が発生し、遅延を追加することなく同じ時間を伝えることができます。物理学は、私たちは私たちの目に届く光のための遅延を追加することができます知っ

、私たちの脳がかかったディレイと私たちの話し言葉が尋ねた人の耳に到達する必要があります遅延。

しかし..........

実際の時間アプリケーションはどのように実装できますか? THAT TIMEはありません。時間はあなたがいる場所に依存し、時間はあなたの周りの重力に依存し、時間はあなたの速度に依存します。

しかし.........

時間が通過するので、それは物事が起こっているということではありません。いいえ、時間は物事を起こさせます!ソフトウェアの問題で一般

Again back to your question:、時間についての質問は基本的に進展および/または同期についての質問です。あなたは何かと比較したい。 first callは、あなたが電話をかけた時にtimeを返します。 は基本的にtimeと呼ばれるこの進歩を提供するリソースへcalls可能2があります。しかし、後で結果を得ることを考慮する必要があります。だから、あなたがやっている時間は、やや過去のことです。 second callは、呼び出しが返されるtimeを返します。このような関数は、自分のサービスにどれくらいの時間が必要かを知っていなければならないため、これは少し異なる実装です。これはおそらくいくつかのキャリブレーションでのみ可能です。

これらは2つの主要な呼び出しです。

resolution(もう一度ご質問ください)では、原子時計をコンピュータに接続するオプションを除外したいと思います。あなたが棚のスーパーマーケットコンピュータから の所有者であるとします。数GHzで動作する可能性があります。あなたが観察するかもしれない最も高い頻度は、おそらくCPU頻度です。例えば、4GHzという周波数では、カウンタは1ナノ秒以内に4回増分することになります。これは250ピコ秒の時間分解です。だから一般的には、サブナノ秒の解像度があると言うかもしれません。実際には、一般的に使用される高周波カウンタはMHz範囲にあり、100ns単位の分解能を提供します。

しかし.......

は、これらの高周波数が時間のための定規として使用することはできますか?短期的に彼らはすることができます!しかし、長期的には、これらの時間ソースは、例えば、あなたのPC時間のような共通の時間ソースで位相ロックされなければならないので、はるかに複雑です。高周波数カウンタは、多くのμsの位相ドリフトを引き起こす重大な誤差を有する。これは、注意深い較正によってのみ克服することができます。適切な較正により、高周波カウンタをシステム時間に位相ロックすることができる。

時間ソースが数マイクロ秒の範囲であれば、潜在的なレイテンシを予測できるので、コードの動作を全く異なる方法で診断できます。 (哲学的アプローチ)を要約する

  1. 時間は、物事が起こることができます。あなたが言っているよう決してtrueまたは
  2. 時間isは、
  3. 最後に
  4. 時間に関連すると考えられ、任意の値が過去
  5. で時間を表し、真の価値なものactual timeは実際にはありませんを表しますTime can never be completely accurate (何もできません!)

Windowsの高解像度時間サービスの実装については、Windos Timestamp Projectを参照してください。

関連する問題