• ベストアンサー

linux の ハードウエア クロックとソフトウエア クロック

ご存知の方教えてください。 なんで linux の クロックは、ハードウエア クロックとソフトウエア クロックがあるのでしょう。なにか理由があるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • onosuke
  • ベストアンサー率67% (310/456)
回答No.2

今回は、クロックの役割として クロック役割その1:時計としてのクロック クロック役割その2:タイマカウンタとしてのクロック と2つの役割を考えましょう。 このうち、  役割その1は、単純な時計。  役割その2は、OSの動作に不可欠なタイマ機構に関数するもの。  役割その1は、偶にしか使わない。  役割その2は、OS動作の中枢。 つまり、Linuxにとって必要なクロックとは、クロックの「役割その2」を十二分に果たしてくれる存在でなければいけません。 単純な話、IBMPC互換機のハードウェアクロック(rtc:リアルタイムクロック)は「役割その2」を果たせる存在ではないため、結果、ソフトウェアクロックが必要となりました。 (さらに、その結果、Linux共通の仕組みとして、必ずソフトウェアクロックとハードウェアクロックの2つが存在することになった)

psychesine
質問者

お礼

今までソフトウエアクロックの存在が疑問でした。 onosukeさんの説明で納得しました ありがとうございます。

その他の回答 (1)

  • vais
  • ベストアンサー率75% (47/62)
回答No.1

これは、Linuxに限った事ではないと認識しております。 コンピュータに電源を入れると、ハードウェアクロックにあわせて、ソフトウェアクロックがセットされて、以降はハードウェアクロックを参照することはないのです。  長く立ち上げたままにしておくうちにこれがずれてきますから、ご存じかと思いますが、NTPサーバなどにアクセスして日時をあわせたりする行為が必要になります。  ハードウェアクロックについては、マシンの電源を落としても内部の電池によって、常に稼働しているので、次回OSを起動したときにも、通常はずれてはいません。  しかし、電池で動くわけなので、いずれは電池がなくなり、電源を落とすたびに時計が狂ってしまう・・なんてこともあります。  腕時計や他の時計でもそうですが、電波時計でもないかぎり放置しているうちに時間がずれてきちゃうんですよ。  それぞれの存在はそういったものになります。  ハードウェアクロックは独立したタイマーで、これを基準にしているというわけです。  ハードウェアクロックもずれてきますから、NTPコマンドで日時をあわせたら、ハードウェアクロック側をソフトウェアクロックにあわせてあげるわけです。

psychesine
質問者

お礼

よく解かりました。 ありがとうございます。

関連するQ&A

  • ハードウェアとソフトウェア

     ハードウェアとソフトウェアが独立しているのはなぜ?理由を教えてください。

  • ハードウェアとソフトウェア

    ハードウェアとソフトウェア 授業に出てきたのですが、これからはハードウェアとソフトウェアではどちらが重要ですか?という問いが出ました。 ハードウェアおよびソフトウェアの長所と短所は何なんでしょうか?

  • ハードウェアとソフトウェア

    ハードウェアとソフトウェアの違いが分かりません。 ハードウェアは何を意味し、ソフトウェアはどういうものを指すのでしょうか? なにぶん初心者のため、なるべく分かりやすい、ご回答のほどをよろしくお願いします。

  • ハードウェアとソフトウェア

    ハードウェアで行われることがらの多くは、ソフトウェアで実現することができますが、以前ハードウェアで行われることで、現在はソフトウェアで行われていることって何がありますか??複数お願いします。

  • ハードウェアとソフトウェア

    ハードウェアとソフトウェアの関係ってハードウェアの中にソhトウェアがはいって、はじめて起動するでいいんですか?

  • ハードウエア・ソフトウエア

    ハードウエアとソフトウエアの違いは何ですか?

  • ハードウェアとソフトウェアってどちらが先ですか?

    語源とかの話ではなくて。 現在、日常生活でも欠かせなくなっているコンピュータの存在ですが、コンピュータを構成しているものを大別するならば、ハードウェアとソフトウェアであると私は思っています。 このハードウェアとソフトウェアに関してですが、歴史的にどちらが先に考えられたのでしょうか? 私は今大学生で、また、小さいころにもコンピュータに興味を持っていたというわけではないので、詳しい話は分からないのですが、少し疑問に思ったので質問させていただきました。 大学を決めるときに、コンピュータをはじめとする工学系の分野に興味を持ちましたので、大学では電子情報系に入りました。人間が自然の原理を応用して、ここまで体系だったものを作れるんだ、と思うと、とても素晴らしいと感じたためです。 今もいろいろなことを勉強してみたいと思っているのですが、大学ではLinuxを用いてのEmacsの使い方や、シェルの概念など、主にソフトウェアに関してで、どのようにしてそのような概念が必要とされているのか、また、用いることが出来るのかなど、本質的(?)なことを教えてくれません。 このようなことを考えていくうちに、やはりハードウェアについての知識がなければいけないのかな、などと現在は思いいたり、幾分かは我慢していますが、果たして本当にハードウェアについて学べば分かるのかと不安に思い、質問してみました。 コンピュータの動作原理については全く知りませんので、分かりやすく教えていただきたいです。 回答、よろしくお願いします。

  • ソフトウエアとハードウエア

    ソフトウエアとハードウエアの技術の進歩は何の役にたつと思いますか?みなさんの意見をきかせてください!!

  • Linuxの時刻同期の仕組みについて

    Linuxにはハードウェアクロックとソフトウェアクロックがありますが、BIOS クロックやCMOS クロックからハードウェアクロックが取得できない場合、UNIXエポックの1970年1月1日真夜中(午前0時0分0秒)で起動して、その後、NTPサーバーとの時刻同期ができない場合、ソフトウェアクロックは、UNIXエポックの1970年1月1日真夜中(午前0時0分0秒)のままという認識でよろしいでしょうか。 お手数をおかけしますがご教示を頂けますようお願い致します。

  • ハードウェア化すると速い?

    最近ハードウェアに関する本を読んでいるんですが、ソフトウェア上で実行するアプリケーションをハードウェア化にすると高速に実行できるって書いてあります。 それはなぜですか?ソフト上では1クロックのCPUで1命令しか実行できないに対して、ハードウェアでは数命令もできるらしいですが、具体的にまだよく理解できないです。 特に最近FPGAとかを使用するとハードウェア化を実現可能ですって。。 でも、1命令でパイプライン処理するとソフト上でも数命令できると思います。 この辺はよくご存じる方がいれば是非教えてください。 よろしくお願いします。