電子書籍の厳選無料作品が豊富!

題名がイケてない気がしますが、以下のことを知りたいです。

OSが管理しているシステムクロック(=カーネルクロック)は、どのようにしてカウントを進めるのですか?

私はマザーボードに載っているICが割り込みを発生させて、それを用いて更新しているのかと思ったのですが、調べてみると違いました。

OSが起動した際に、マザーボードのハードウェアクロックを読み込み、OSのシステムクロックに設定します。
で、場合によっては、タイミングはわかりませんが、NTPを利用して、原子時計に近い値に更新も出来るようです。
で、Windowsの場合は一定周期毎/Linuxの場合は起動時停止時に、ハードウェアクロックをOSから更新するようです。

そこで、疑問が発生します。OSはどのようにして、カウントを進めているのですか?★
ハードウェアを利用していないとカウントできないような気がするのです。
CPUの動作周波数ですらマザーボード上のICが発生させる信号を元に動作しているので、CPUクロックのカウントに比例させて計測することが出来るとも思えません。
この程度の前知識はあって、足りない部分を補足して欲しいです。★
(「システムクロック」などの思いつくキーワードで検索しても見つけられませんでした。)

以上、よろしくお願いします。

A 回答 (1件)

ご想像の通り、マザーボード上に、「RTC(Real Time Clock)」という回路があり、一度設定するとその時刻から自動的にカウントアップしています。


パソコンの電源がOFFになっても、CMOSバッテリーを用いて動作し、途切れることはありません。

http://park12.wakwak.com/~eslab/pcmemo/clock/ind …

ただし、この回路の精度はそう高いものではないので、一ヶ月に秒単位で狂ったりもします。

そこで、一日に1回程度、原子時計を使ったNTPサーバ等から正確な時刻をもらい、設定してやれば、数日間は十分に正確な時刻を刻んでいると見て良いだろう、ということになります。

マザーボード上には、CMOS設定を保持するボタン電池がありますが、これが切れると、BIOS設定が飛ばずとも、起動ごとに時計が狂ってしまったりする症状も出たりします。
数年間使ってきたマザーボードが故障したと思ったら、ボタン電池が切れただけだった、というのもよくある話。
    • good
    • 0
この回答へのお礼

レスありがとうございます。

>>私はマザーボードに載っているICが割り込みを発生させて、
>>それを用いて更新しているのかと思ったのですが、調べてみると違いました。
>http://park12.wakwak.com/~eslab/pcmemo/clock/ind …

http://jibun.atmarkit.co.jp/lskill01/rensai/lpic …

↑↑や↑を読んではいたのですが、読み足りなくて勘違いしてしまったみたいです。
ハードウェア的なカウンタが使われているのですね。
納得できました。ありがとうございます。

ハードウェアカウンタを用いて、
 ・RTCの更新
 ・IRQ0でOSにシステムクロックの更新通知
が行われているようですね。
で、電池が切れるとリセット。

IRQ8でRTC更新。更新は、
 ・ユーザが手動で設定
 ・NTPを利用した自動設定
と、こんな感じですね。

お礼日時:2011/10/31 22:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!