首页 > 范文大全 > 正文

为什么你的电脑不“准时”?

开篇:润墨网以专业的文秘视角,为您筛选了一篇为什么你的电脑不“准时”?范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

相信很多MCGer都注意到,即使把自己电脑的系统时间与北京时间对得分秒不差,过不了两天也会发现它变快或变慢了十几秒,如果不及时校正,也许再过几天误差就积累到了几分钟。那么这个烦人的问题是如何产生的呢?

首先肯定一点,电脑的时间

误差是普遍存在的

如果你的电脑时间每天误差好几分钟,那肯定是主板上给CMOS供电的纽扣电池没电了,赶紧去买一颗新的换上吧。不过就算是你的电脑没有任何问题,但由于主板上用于计算时间的晶振在制作过程中都会有些许误差,导致所产生出来的震荡频率不是完全精准,所以转换出来的时间快慢不一,一天下来出现几秒钟的误差完全正常得很。看来,决定系统时间准确性的根本因素是晶振的制造工艺,那么一块完美的晶振会不会带来精确的时间呢?

Windows时钟就从没走准过

点开电脑桌面右下角的时钟,仔细观察表盘上秒针的运动规律,你会发现“四快一慢”这个十分有意思的现象:前4秒钟数字和秒针变化较快,第5秒感觉却很长。不要以为是你的电脑出了故障,任何一台运行Windows 2000/XP/2003操作系统的电脑都存在这个问题,这跟晶振的优劣毫无关系。难道Windows的系统时间就从来没有精确过?

原因出在Windows自带的时钟的精度上。在C++程序语言中, WM_TIMER是常用的定时器,但这个定时器的精度可不高。在Windows的Clock这个子程序中,实际上就是调用了WM_TIMER进行定时。当时钟程序显示秒针时,表盘的更新由这样一句语句触发:

SetTimer (hWnd, TimerID, OPEN_TLEN, 0L);OPEN_TLEN是Timer的触发时间,这个时间是一个常量,在上述的几个操作系统里面被定义为450ms,也就是不到半秒。关键就在这个450上,它意味着每隔450ms,Timer就会被触发一次,重新取得当前时间并重绘(更新)表盘。

可以看到,在第1 秒内( 更新毫秒数

难道M$的程序员在偷懒?

那么微软的程序员为什么不把定时器的触发时间定义为1000ms呢?这样秒针的跳动频率不就和真实的时间完全同步了吗?这就不得不提到“时钟中断”问题了。x86电脑上用于计时的8253/8254 定时计数器每秒钟有 18.206 次时钟中断,也就是每隔 55 ms(54.925493ms)一个中断,这也是所有定时执行程序的最短时间间隔。小学生都知道,55×18=990,55×19=1045 , 如果将Timer设定为1000ms触发一次,那么真实的间隔其实是1045ms,这样一来每隔二十几秒就会发生时间显示的错误(比如会从229900直接跳到24035,也就是没有00:00:23这样的时间),所以微软选了一个比较折中的量作为触发时间。

总有办法让电脑时钟准起来

你的电脑变得“准时”起来的最简单方法,就是开启动系统的时间自动同步功能。微软的时间服务器 ()使用 NIST(美国国家标准和技术协会)作为其外部时间提供者,可以将电脑时钟的误差设置到不超过 10 ms。不过由于Windows用户太多,微软官方服务器经常出现无法同步或同步时间过长的问题。如果经常遇到这种情况,我们可在“服务器”一栏中输入中国国家授时中心服务器的IP地址(210.72.145.44),同步成功率当然就高得多了。此外,也可以选择各地天文台提供的时间服务器(如stdtime.gov.hk)来校对本地电脑的时间。

Windows系统默认的自动对时周期是一个星期,不过肯定有很多MCGe r 无法忍受这一点。为了免除那些患有“对时强迫症”的家伙每隔几个小时就得手动点一次“立即更新”按钮的痛苦,MCG告诉大家一个对时小窍门:打开注册表“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Ser vices\W32Time\TimeProviders\NtpClient”分支,双击SpecialPollInter val键值并切换到“十进制”,将默认的 “604800”(即168小时)修改为自己需要的时间间隔(单位为秒)就行了。不过,这个时间间隔也别设得太短了(24小时、86400秒同步一次足矣),毕竟再强的服务器也受不了几亿人高频率的啊。