|
本文转自:[color="RoyalBlue"]大学生开源社区 链接为:
http://www.open-src.org/viewthread.php?tid=946&extra=page%3D1
不少的Mandriva用户可能已经发现了,他们的计算机的显示时间在Mandriva下总比Windows下快8个小时,于是就认为Linux也太不咋地了,连时间都有bug……
真的是这样吗?本文将澄清这个误解。
一、硬件和软件时钟
一般PC都有一颗电池来驱动硬件时钟,这颗电池确保即使在计算机的其它部分没有电时时钟也能工作。硬件时钟可以从BIOS的设置屏幕上或从正在运行的操作系统中进行设置。
Linux内核从硬件时钟上直接取得时间。在引导期间,Linux将自己的时钟设置成与硬件时钟同步。在这以后,两个时钟都独立地运行。Linux维持着自己的时钟,因为读取硬件时钟是很慢的并且也比较复杂。
Linux的内核时钟总以世界时(UTC)的方式显示。这样,内核就根本不需要知道什么时区。这种简明性导致高可靠性并使得更新时区信息变得很容易。每一个进程独自处理时区的转换(使用属于时区软件包中的标准工具)。
注:整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。在本文中,UTC与GMT含义完全相同。
硬件时钟可以是本地时间也可以是世界时。通常将硬件时钟设置成世界时更好一些,因为这样当夏令时开始或结束时你就不需要调整硬件时钟了(UTC没有 DST)。不幸的是,不少PC操作系统,包括MS-DOS、Windows、OS/2,假设硬件时钟显示的是本地时间。Linux对于这两者都可以处理,但如果硬件时钟显示本地时间时,那么,在夏令时开始和结束时都需要调整它(否则,它将不会显示本地时间)。而这种差异也就是Mandriva产生快8个小时的来源。
二、如何快了8个小时?
现在由于Windows在PC上占据了统治地位,所以一般PC的硬件时钟都是设置的是本地时间,这样在BIOS和Windows里时间显示都是一致的本地时间。当安装或者设置Linux的时间时,如果你选择了UTC的时钟显示方式,则Linux启动的时候,将硬件时钟同步到软件时钟,并且认为这个硬件时钟是当前的UTC时间。这样,在系统中显示时间的时候,由于北京本地时间处于东八区,领先UTC八个小时,所以Linux会在它所认为的UTC软件时间上加 8个小时,这样就比Windows的显示就快了8小时,原因就是这么简单……
因此,如果大家要想Windows和Linux的显示的时间一致,需要在安装或者设置Linux的时间显示方式时,不要选择UTC方式,这样的话,Windows和Linux的软件时钟和PC的硬件时钟都使用本地时间,就不会出现快8小时的问题了。
|
|