コンピュータが時間をどのように特定しているか教えて下さい。

下記パターンにおいて、どのように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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/10/10 17:30:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ardarim No.5

回答回数897ベストアンサー獲得回数145

ポイント20pt

一般的な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の性能に依存します。

他のチップセットではまた性能が違ってくるでしょう。

id:kunitz

有難うございます。ここまででのイルカ賞です。

2009/10/03 22:24:33

その他の回答4件)

id:seble No.1

回答回数4796ベストアンサー獲得回数629

ポイント20pt

ハードウェアに時計が実装されています。(クォーツかな?biosで設定するでしょ?)

で、XPとかはtime.windows.comとかのネットで実時間を自動的に合わせたりしますが、、、?

(日付と時刻の調整)

linuxはしらん。マックも、、

インターネット以前は、時計が狂うのは当たり前でしたよ。

http://q.hatena.ne.jp/1254558390

id:kunitz

有難うございます。

A) マシン:ThinkPad X61, OS:WindowsXP

のパターンは、

定期的にtime.windows.comに問い合わせて、RTCの時間を更新することによりUTCにあわせている

という認識で大丈夫でしょうか?

* RTCはクォーツ式でしょうか?他の形式もあるのでしょうか?またマシン毎にRTCの性能も違うのでしょうか?RTCの仕様(OS・BIOSとのインタフェースなど)についての情報もあったら知りたいです

* time.windows.comはどのような仕様・規格で実装されたサーバなのでしょうか?

2009/10/03 18:44:44
id:qnighy No.2

回答回数19ベストアンサー獲得回数1

ポイント20pt

ネットワークを利用した時刻の同期には、NTP(Network Time Protocol)という仕様があります。たぶん殆どのシステムがこれで時刻を同期しているはずです。またNTPサーバーも各所にあります。

http://ja.wikipedia.org/wiki/Network_Time_Protocol

ハードウェアのことはよくわかりませんが、下記のサイトには、BIOSの時刻管理は水晶振動子を使っていると書いてありますね。

http://home.impress.co.jp/magazine/dosvpr/q-a/0310/qa0310_2.htm

id:pyopyopyo No.3

回答回数377ベストアンサー獲得回数98

ポイント20pt

time.windows.com は NTPサーバですね。 NTPという、時計の時刻合わせをする為の通信規格にしたがったサーバです。

http://ja.wikipedia.org/wiki/Network_Time_Protocol

http://www.atmarkit.co.jp/fwin2k/win2ktips/050nettime/nettime2.h...

とりあえずパソコンの時刻合わせをされたい、ということであれば NTPのクライアントをインストールする方法が、一番簡単で、一番確実です。


RTCは、パソコンに限らず、カーナビとかいろいろな製品で利用されている、時刻モジュールの総称です。

通常のPC用RTCモジュールだと、その仕組みは水晶発振子を使う方式です。

ただし、

http://ja.wikipedia.org/wiki/%E6%B0%B4%E6%99%B6%E6%8C%AF%E5%8B%9...

にあるように水晶発振では精度があまり出ません(普通のPCだと、月あたり五秒ぐらいずれます)

そこでNTPサーバのような正確な時刻が必要なサーバでは、原子時計をRTCとして使っているそうです。たとえばこんなの。

http://www.aist.go.jp/aist_j/press_release/pr2003/pr20030609/pr2...

id:makeworld No.4

回答回数75ベストアンサー獲得回数23

ポイント20pt

どの構成もハードウェアクロック(RTC)と、システムクロックという2つの時計を使用しています。

リアルタイムクロック - Wikipedia

RTCを読み出すのは、システムクロックに比べて時間がかかるので、通常OS起動時と終了時のみで、OS起動中はシステムクロックを使用します。

PCがネットワークに接続していれば、NTPを使用してシステムクロックを補正します。

  • A) マシン:ThinkPad X61, OS:WindowsXP

RTCはローカル時刻(日本時間など)を保持します。OS起動時にローカル時刻をUTCに変換して、システムクロックとします。

  • B) マシン:PowerEdge T105, OS:CentOS5.3

RTCは、UTC又はローカル時刻を保持します(どちらでも対応できる)。ただし、Windowsとの併用を考慮して、RTCはローカル時刻に設定してある可能性が高いです。コマンド「hwclock」でRTCを表示できます。

OS起動時に、RTCをUTCに変換して、システムクロックとします。

  • C) マシン:VirtualBox3.0.6上のVM(ホストは「A)」), OS:CentOS5.3

こちらもWindowsでの起動を意識して、RTCはローカル時刻が設定されているはずです。コマンド「hwclock」でRTCを表示できます。

  • D) マシン:MacBookPro, OS:Mac OS X Snow Leopard

Macの場合は、RTCにUTCが設定されているようです。

tomoyo - Mac で Windows 時刻問題

id:kunitz

有難うございます。ここまででのイルカ賞です。

2009/10/03 21:19:34
id:ardarim No.5

回答回数897ベストアンサー獲得回数145ここでベストアンサー

ポイント20pt

一般的な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の性能に依存します。

他のチップセットではまた性能が違ってくるでしょう。

id:kunitz

有難うございます。ここまででのイルカ賞です。

2009/10/03 22:24:33

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません