PCの時計が1時間進んだ! 極めて珍しいアクシデントの理由をPCの時間合わせから考える

写真拡大

時計を合わせる。
この行為、いまどきは、あまりしないのかもしれない。

昭和の話になるが、以前は「117」で時報を聞きながら家電や時計の時間を合わせたりしていたものだ。

いまはわざわざ電話などしなくとも、PCや手元のスマートフォンなどで時間を確認すれば、正確な時間がわかる。

ところが今週、
Windows PCで表示される時間が1時間進むという、事態が起こった。

マイクロソフトはこの問題について、
原因や発生したOS、その発生条件などは明らかにしていない。
しかし、
・グローバルで起きた問題であること
・すでに対応したこと
は、認めている。
現在、影響を受けたマシンは自動で修正されている。

今回のトラブルの理由だが、マイクロソフトが言及しない限りわからないということになるので、
あれこれ憶測しても仕方ない。

そこで思考を切り換えて、そもそもPCはどうやって時間を合わせているのだろうか?
を、改めて考えてみよう。

◎ハードウェアクロックとシステムクロック
コンピュータにとって時間(時刻)情報は非常に重要なファクターだ。
その処理に経過時間は必須なため、内部的に時間を刻む機構を持っている。

一般にPCの場合、ざっくりいうと
「ハードウェアクロック」
マザーボード(CPUや各種チップが搭載された電子回路基板をさす)がハード的に持つ時計

「システムクロック」
OSが内部に保持するタイマー

この2本立てで時間を保持している。

ハードウェアクロック(RTC: Real Time Clock)は、PCに電源が入っているときには電源から、PCに電源が入っていない場合はマザーボード上の電池から供給される電気で動き、時間を刻み続ける。

OSは、システムの起動時にこのハードウェアクロックを参照し、その時刻をシステムクロックに設定する。システムクロックはOSをシャットダウンしてしまうと保持できず、再起動のたび、この動作を行い、時間を更新するという仕組みだ。

RTCは「一定の微量の電気を流すと規則正しい振動をする」という水晶の性質を用いた水晶振動子からなる。
水晶振動子は、現在、時計や時間を管理する必要があるエレクトロニクス機器にはたいてい使われており、現代の必須デバイスモジュールと言える。

◎NTPサーバで時計合わせ
とはいえ、水晶振動子に依存した時間管理は、PCのように電源を、コンセントなどACからの供給やマザーボード上の電池に頼る機器ではあ、電力供給そのものが不安定になる。
当然、動作も、その影響を受け、不安定となる。

そのため、最近では、ネットワークにつながった環境では定期的にタイムサーバと通信を行い、時計合わせを行っているのだ。

このとき、PCや家電類のタイムサーバとして使われるのが「NTPサーバ」なのだ。

「NTPサーバ」は、「Network Time Protocol」というデバイスの時計を正しい時刻へ同期するための通信プロトコルに基づき、UTC(Coordinated Universal Time:協定世界時)を配信するサーバで、NTPクライアント(多くはOSがその機能を持つ)がNTPサーバと同期することで、世界中で同じ時刻を使いましょうというもの。

非常に高い精度で時刻を刻む原子時計や標準電波をトップに階層構造が取られており、複数サーバ間で問い合わせを行い同期することで、極力、時間の精度に差が出ないよう、遅延が起こらないように運用されている。

近年、PCだけでなく、テレビやHDDレコーダーなどネットワークにつながっている家電の時間が、まったくズレないというのはこういう仕組みになっているからだ。

したがって、今回、Windows搭載の一部のマシンで時間がズレたのは、この「NTPサーバ」関連に原因がある(つまり、参照先のタイムサーバの誤動作、いわゆるサマータイムの誤適用)とも推測する声も上がっているのも、無理はない。

実は、MacでもWindowsでも、ユーザー自身が任意の「NTPサーバ」を設定することもできる(通常に使用する分にはPCの参照するNTPサーバを手作業でカスタマイズする必要はあまりないだろうが)。
また、情報通信研究機構(NICT、日本標準時を決定・維持する機関)のサイトで自分のPCの時間とNTPサーバが配信する時間の照合を行うこともできる。


http://www.nict.go.jp/JST/JST5.html


ちなみにNICTは、UTCでは世界時との差が0.9秒に収まるよう「うるう秒」が挿入されるのだが、2017年1月1日に行われた「うるう秒」の挿入の様子を動画で公開したことも話題になった。


大内孝子