「Linux/時計」の版間の差分

提供: Wikinote
移動: 案内検索
(2 つの時計)
(起動時の設定)
行16: 行16:
 
# 1. に戻る
 
# 1. に戻る
  
=== 起動時の設定 ===
+
=== 起動時・終了時の動作 ===
RTC からシステムクロックへの読み込みは、/etc/rc.d/rc.sysinit で行われる。
+
 
 +
起動時の RTC からシステムクロックへの読み込みは、/etc/rc.d/rc.sysinit で行われる。
  
 
# /etc/sysconfig/clock を読み込み
 
# /etc/sysconfig/clock を読み込み
行23: 行24:
 
# <code>UTC=yes|true</code> ならば、<code>$CLOCKFLAGS</code> に <code>--utc</code> を設定。<code>UTC=no|false</code> ならば、<code>--localtime</code> を設定
 
# <code>UTC=yes|true</code> ならば、<code>$CLOCKFLAGS</code> に <code>--utc</code> を設定。<code>UTC=no|false</code> ならば、<code>--localtime</code> を設定
 
# 以下で hwclock を実行
 
# 以下で hwclock を実行
 +
 
  [ -x /sbin/hwclock ] && /sbin/hwclock $CLOCKFLAGS
 
  [ -x /sbin/hwclock ] && /sbin/hwclock $CLOCKFLAGS
 
   
 
   
 
  action $"Setting clock $CLOCKDEF: `date`" /bin/true
 
  action $"Setting clock $CLOCKDEF: `date`" /bin/true
 +
 +
終了時は /etc/rc.d/init.d/halt で、起動時とほぼ同様の動作が行われる。
 +
<code>--hctosys</code> が <code>--systohc</code> になるだけである。
 +
 +
[ -x /sbin/hwclock ] && action $"Syncing hardware clock to system time" /sbin/hwclock $CLOCKFLAGS
  
 
== 関連用語 ==
 
== 関連用語 ==

2009年5月1日 (金) 13:28時点における版

Linux でどのように時計が動いているのか。

2 つの時計

ハードウェアクロック (リアルタイムクロック; RTC)
マザーボードに実装されたチップで、電源がオフでも進み続ける。精度はそれほどよくない。
ソフトウェアクロック (システムクロック)
カーネルが管理している、タイマ割り込みによって進められる時計 (カウンタ)。もちろん電源オフ時は消滅する。調節すれば、かなりの高精度になる。

この 2 つの時計は、以下のような関係で動作している。 Clock.png

  1. 電源オフ時、RTC のみが時間を刻んでいる。
  2. 起動時に OS が RTC の時刻を読み取り、以後タイマ割り込みでシステムクロックを刻む。
  3. NTP 等を利用していて時刻が正確だとわかると、11 分ごとにシステムクロックを RTC に書き戻す。
  4. シャットダウン時にシステムクロックを RTC に書き戻す。
  5. 1. に戻る

起動時・終了時の動作

起動時の RTC からシステムクロックへの読み込みは、/etc/rc.d/rc.sysinit で行われる。

  1. /etc/sysconfig/clock を読み込み
  2. $CLOCKFLAGS--hctosys を設定
  3. UTC=yes|true ならば、$CLOCKFLAGS--utc を設定。UTC=no|false ならば、--localtime を設定
  4. 以下で hwclock を実行
[ -x /sbin/hwclock ] && /sbin/hwclock $CLOCKFLAGS

action $"Setting clock $CLOCKDEF: `date`" /bin/true

終了時は /etc/rc.d/init.d/halt で、起動時とほぼ同様の動作が行われる。 --hctosys--systohc になるだけである。

[ -x /sbin/hwclock ] && action $"Syncing hardware clock to system time" /sbin/hwclock $CLOCKFLAGS

関連用語

jiffies 変数
タイマ割り込みの回数を記録する。jiffies_64 の下位 32 ビットが jiffies。グローバルタイマ割り込みハンドラ do_timer() にてインクリメントされる。
HZ マクロ
1 秒間に発生するタイマ割り込みの回数。RHEL では 1000、SLES では 250
xtime 変数
1970/01/01 からの経過時間。グローバルタイマ割り込みハンドラ do_timer() にて進められる。