下記パターンにおいて、どのようにUTCにあわせるのがベストなのか知りたいです。
OSはハードウェアのどの部分を参照して時間を知るのか/ハードウェアはどのように時間を管理しているのか など具体的に教えて下さい。
* A) マシン:ThinkPad X61, OS:WindowsXP
* B) マシン:PowerEdge T105, OS:CentOS5.3
* C) マシン:VirtualBox3.0.6上のVM(ホストは「A)」), OS:CentOS5.3
* D) マシン:MacBookPro, OS:Mac OS X Snow Leopard
一般的なPCであれば、通常マザーボード上に計時用のRTC(Real Time Clock)デバイスが実装されていて、AC電源が接続されていない間もマザーボード上に付けられたバックアップ用の電池で時刻が保持されています。
また、いわゆる「PC」(DOS/V互換機)についてはOADG(PCオープン・アーキテクチャー推進協議会)によってハードウェア仕様が規定されており、RTCの場合はI/Oポート70h/71hに接続されることになっています。(OADGテクニカル・リファレンス(ハードウェア))
制御方法としては、ポート70hにRTCレジスタ番号をライトした後、ポート71hからRTCレジスタの値をリード/ライトするという単純なものです。
※実際にはもうちょっと細かい制御が必要ですが、詳細が知りたい場合は上記OADGテクニカル・リファレンスの3-151ページあたりに書かれていますので参照してください。
なおWindowsであれば、I/Oポートはデバイスマネージャで見ることができ(システムCMOS/リアルタイムクロックなどの名称で表示されます)、「リソース」タブで実際のI/Oポートを確認できます。(I/Oの範囲:0070~0077などと表示されます)
ただ、OADGは汎用の制御仕様を規定しているだけで、実際のReal Time Clockの精度性能については各デバイスの実装に依存します。
例えばThinkPad X61の場合は、Intel ICH8チップセットを使っていますが、RTCはICH8に内蔵されています。(詳細はIntel I/O Controller Hub 8 (ICH8) Family Datasheetを参照)
この場合、Real Time Clockの性能はICH8の性能に依存します。
他のチップセットではまた性能が違ってくるでしょう。
ハードウェアに時計が実装されています。(クォーツかな?biosで設定するでしょ?)
で、XPとかはtime.windows.comとかのネットで実時間を自動的に合わせたりしますが、、、?
(日付と時刻の調整)
linuxはしらん。マックも、、
インターネット以前は、時計が狂うのは当たり前でしたよ。