Re: Windowsでの時刻同期についての質問
いいじまです。
> # 絨毯爆撃といった感じのNewsgroups指定でしたので,fj以外は削りました.
> # 議論が続くようであれば適切なNewsgroupsでお願いします.
japan.comp.windows-xp は戻しました。microsoft.* は他のネットワークからの
到達性がよくない(少なくともうちからはあんまり届かない)ので削ったまま。
#こういう状況を見ると Windows 関係ニュースグループの再編の話をしたくなり
#ますね。
> > 一般に、Windowsでの時刻管理(制御)は、LinuxやFreeBSDと比較すると、
> > あまり精度の良いものではない、ということをよく耳にするのですが、
> > それは、なぜなのでしょうか?
>
> 比較した話は実はそれほど聞いたことがなかったのですが,Windows98での
> タスク切り替え時間が60msで,というお話は以前読んだことがあります.
その話とは独立な話のはずです。そもそも AT 互換機はハードウェアレベルで
10ms の精度の時計を持っているはずです。
<余談>
PC-98x1 はこれを持っていなかったから、MS-DOS のシステムコールで時刻を取
得しても 1/100 秒単位を示すフィールドは常にゼロ。FMR/FM TOWNS はハードで
持っているのは 1 秒単位の時計だったけど、タイマー割り込みを使って 1 秒未
満の時計のカウントアップだの画面のリフレッシュだのを実現していたので、割
り込みを禁止すると次にハードウェアの時計がカウントアップするまで時計は止
まったままだし、テキスト VRAM をグラフィック 画面でエミュレートするアー
キテクチャの TOWNS ではテキスト画面の表示も止まる。
</余談>
☆
で、話を元に戻すと、「OS の設計の違い」という話になると思います。
そもそも AT 互換機の BIOS 自体には、1ms 以下で測れるタイマーはついていま
せんので、起動時にだけ BIOS から時刻を取得して、それ以降は OS が任意の精
度で時刻を計測します。その際に、Windows は「1ms 単位で十分」と判断したか
ら 1ms になっている(実際、Windows のシステムコールの時刻関係は 1ms 単位
です)、Linux や FreeBSD では 1μs まで頑張っている(実際に 1μs が出る
かどうかは CPU の速度に依存するでしょうけど)、ということではないでしょ
うか。
ちなみに Windows でも、QueryPerformanceCounter() を使えば、手元の環境では
1μs 以下の測定が可能です。内部的には Pentium 以降の CPU の RDTSC 命令を
使っているのでしょう。
========================================================================
飯嶋 浩光 / でるもんた・いいじま http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delmonta@ht.sakura.ne.jp
───【宣伝】─────────────────────────────
fj.os.ms-windows.server2003 または fj.os.ms-windows.server の新設の可否
を問う投票を実施中です。
fj.news.group.comp をご参照のうえ、ふるってご投票ください。
投票期限は 8/25(月)です。
────────────────────────────────────
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735