计算机如何跟踪时间?


68

计算机如何每次都能分辨出正确的时间和日期?

每当我关闭计算机(关闭计算机)时,内部的所有连接和进程都会停止。再次打开计算机时,如何显示正确的正确时间?关闭计算机时,计算机是否无法完全关闭?还有一些进程在运行吗?但是,当我取出电池(然后强行停止所有过程)并在几天后重新启动时,笔记本电脑如何指示正确的时间?


3
这个问题真的是这个网站的主题吗?超级用户对我来说似乎更合适。
Ilmari Karonen

3
@IlmariKaronen如果我正确理解该术语,这似乎算作有关“计算机体系结构”的问题。
PyRulez

Answers:


96

计算机具有“实时时钟”-主板上用于维护时间的特殊硬件设备(例如,包含石英晶体)。即使关闭计算机电源,它也始终通电。另外,即使您断开计算机电源,主板上的一块小电池也可用于为时钟设备供电。电池不会持久使用,但至少可以使用几周。即使计算机关闭了,这也可以帮助计算机跟踪时间。实时时钟不需要太多电能,因此不会浪费能源。如果除了取出主电池和断开电源线之外还取出时钟电池,则笔记本计算机将失去时间跟踪,并要求您在重新启动笔记本计算机时输入时间和日期。

要了解更多信息,请参阅实时时钟CMOS电池以及为什么我的主板有电池

另外,在许多计算机上,当您将计算机连接到Internet连接时,操作系统将在网络上查找时间服务器并查询时间服务器的当前时间。操作系统可以使用它非常准确地设置计算机的本地时钟。这使用了网络时间协议,也称为NTP。


1
操作系统可以设置BIOS时间吗?我的意思是,如果我强行重置硬件时钟,然后启动并连接到NTP或自行设置时钟,BIOS是否会识别出这一点?

1
是。更改操作系统的系统时间可设置实时时钟,也称为BIOS时间。在内部,时钟只是在计算自大纪元(通常是1970年1月1日00:00)以来的秒数(或毫秒),因此它工作量不大,并且可以使用硬币大小的电池供电多年。操作系统中的高级功能可以完成将计数转换为要显示的日期/时间的工作。
克里斯·纳瓦

石英不是跟踪时间的特殊硬件设备(尽管它是其中的一个组成部分)。
immibis

1
@tatan不,手机一直在用电池供电。它与应该关闭PC(但未从墙上插座断开连接)时按电源按钮来打开PC的功能基本相同。
鲁斯兰

1
我将最后一段改写为将计算机更改为操作系统。连接到Internet的任何PC都可能无法连接,反之亦然-这是OS的工作,而不是PC(暗示硬件)。
MatthewRock '16

13

如果您卸下主板上的电池,则计算机将无法显示时间。

移动电话也是如此。如果让手机放电,然后不给手机充电超过几周,这也会“忘记时间”,因为小的辅助电池已完全放电,并且实时时钟没有电源。

如果您有一部旧手机,可以尝试打开它的电源,然后自己检查一下,以确保它“忘记了时间”。

这就是电池的外观。 https://yandex.com/images/touch/search?text=mobo%20battery&source=tabbar

当我开始持续不到一天的时间时,我不得不购买几次。每次打开PC时,我都必须配置时钟。


3
现在,许多操作系统都使用NTP(网络时间协议),并且可以使用NTP在启动时自动重置自身,因此它们实际上不需要内置时钟。
詹姆斯·斯内尔

3
@JamesSnell但是,这会弄乱日志文件中的时间戳以及启动NTP之前在引导过程中修改的任何文件。
卡巴斯德,2016年

@kasperd-时间戳确实不像以前那样重要,因为许多系统使用其他元数据(版本控制)。查看来自缺乏RTC的系统的启动日志,例如路由器或树莓派,它们会记录时间的更新时间(以及更新时间)。在断开连接的系统中,它可能更重要,但是随着时间的流逝,它的重要性已变得不那么重要。
詹姆斯·斯内尔

1
@JamesSnell我有几台能够运行标准x86操作系统的单板计算机,但是它们缺少电池供电的RTC。最后,我让他们从虚拟磁盘中运行了一个绝对最小的网络堆栈,以便在发生任何磁盘访问之前运行“ ntpdate”。
kasperd

@JamesSnell是的,但是笔记本电脑和平板电脑在启动后会连接到wifi(至少大多数这样做),并且它们没有以太网连接,因此几乎所有计算机都在使用电池。此外,台式计算机也不总是有互联网。有些人在晚上关闭路由器,或者只是想玩游戏或看电影而不打开路由器,就一直不使用互联网。并非所有人都希望一直连接到互联网。
yoyo_fun 16-4-15

2

启动Windows时,它可以直接访问实时时钟(RTC)的内存,并使用其日期和时间值设置计算机的日期和时间。Windows运行时,计时器中断可维持计算机时间。Windows中的时间守护程序大约在Windows启动后每小时运行一次。时间守护程序将Windows中的时间与RTC中的时间进行比较。如果两次相隔一分钟以上,则Windows会更改时间和日期以匹配RTC。您不能更改时间守护程序运行的时间间隔。

如果您使用时间同步服务,例如Windows NT 4.0 Resource Kit附带的TimeServ.exe工具,则该工具将更新Windows和计算机的RTC中的时间。如果Windows时间服务在基于Windows 2000的计算机上运行,​​则Windows启动后每小时大约不能在Windows中运行一次“时间守护程序”。

有关更多详细信息,请访问以下链接:http : //msdn2.microsoft.com/en-us/library/ms724936.aspxhttp : //msdn2.microsoft.com/en-us/library/ms724942.aspx


有趣。那么Windows如何确定当前精确时间(以微秒为单位)以响应程序调用(例如python中的time.time()),以及该频率在多长时间内以及如何更新该时间的当前值?
jacanterbury
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.