二つの時間概念 ハードウェア時刻 –RTC (Real Time Clock) – コンピュータの電源が入っていないときでも、 バッテリーを用いて計測 システム時刻 –Software Clock とも – 起動時に RTC を参照して現在時刻を設定 以後は、タイマ割り込み時にインクリメント
tick (clock tick) 時分割処理の契機となるタイマ割り込み – 時計の音「チクタク( tick-tack )」から 伝統的に 10ms とされる – 環境や条件によって異なり、変更も可能 Linux kernel 2.6 では 1ms –1tick が 10ms から離れる毎に時計の精度が低下
adjtimex(8) 時間に関係するカーネル変数を変更 より正確な tick を刻むのに必要 –1tick = 10.0ms と 1tick = 9.96ms では? 一日 tick * 0.04 ms = 345.6sec ≒ 6 分
adjtime(2) システム時刻を調整 – 時間は連続的でなければならない 12:25:05 だったのに 12:24:38 になってはいけない – 徐々にシステム時刻を調整 システム時刻 12:25:05 、本来の時刻が 12:24:05 1 分経つ間に、本来の 1 秒毎に 0.5 秒しか変化させな い
hwclock ハードウェア時刻とシステム時刻の同期 – ハードウェア時刻からシステム時刻を設定 – システム時刻からハードウェア時刻を設定 /etc/adjtime – ハードウェアクロックは正確ではないが 「不正確さ」は予想の範疇 – 規則的な時間のずれを記載
tick の正確性 RTC とは別のハードウェアにより発生 –PIT(Programmable Interval Timer) 供給される clock により精度が決定
参考 時間を計る手段 –tick (Programmable Interval Timer) タイマ割り込み –RTC (Real Time Clock) –RDTSC (Read-Time Stamp Counter) CPU Counter
参考資料 bin/wiki/wiki.cgi?page=Kernel%A5%E1%A5%E2+%BB%FE%B4%D6%B4 %C9%CD%FD%CA%D A1%BC%A4%CE%C0%BA%C5%D9