10

我们如何处理毫秒(0.001)的计时器交易我们如何根据需要划分秒?我们如何处理第二个本身???

4

7 回答 7

38

http://computer.howstuffworks.com/question319.htm

在您的计算机(以及其他小工具)中,电池为称为实时时钟 (RTC) 芯片的芯片供电。RTC本质上是一块石英表,无论电脑是否有电,它都会一直运行。电池为这个时钟供电。当计算机启动时,部分过程是查询 RTC 以获取正确的时间和日期。一个像这样的小石英钟可以用一个小电池运行五到七年。然后是时候更换电池了。

于 2009-06-10T03:19:32.107 回答
9

您的 PC 将有一个硬件时钟,由电池供电,因此即使在计算机关闭时它也能保持滴答作响。PC 知道它的时钟运行速度有多快,因此它可以确定一秒钟的时间。

最初,PC 不知道现在是什么时间(即它只是从零开始计数),因此必须告诉它当前时间是什么 - 这可以在BIOS设置中设置并存储在CMOS中,或者可以可通过 Internet 获得(例如通过与NIST的时钟同步)。

于 2009-06-10T03:21:36.593 回答
7

一些回顾,以及更多信息:

1)计算机在启动时读取实时时钟,并使用它来设置它的内部时钟

2)从那时起,计算机仅使用它的 CPU 时钟 - 它不会重新读取 RTC(通常)。

3) 计算机的内部时钟会因热不稳定性、功率波动、无法准确找到秒的精确除数、中断延迟、宇宙射线和月相等原因而发生漂移。

4) 时钟漂移的幅度可以是每天几秒(每月几十或几百秒)。

5) 大多数计算机都能够连接到时间服务器(通过互联网)以定期重置其时钟。

6)使用时间服务器可以将精度提高到几十毫秒(通常)内。我的电脑每 15 分钟更新一次。

于 2009-06-16T18:18:53.517 回答
3

计算机知道时间,因为和你一样,它们有一块不时看的数字手表。

当你得到一台新电脑或搬到一个新的国家时,你可以设置手表,或者你的电脑可以在互联网上询问现在是几点,这有助于防止它运行缓慢或快速。

作为电脑的用户,你可以询问当前时间,也可以让电脑充当闹钟。有些电脑甚至可以在特定时间自动开机,以备份自己,或者用最喜欢的曲子唤醒你。

在内部,计算机能够以毫秒、微秒甚至纳秒为单位显示时间。然而,这并不完全准确,相邻的两台计算机对时间(以纳秒为单位)有不同的看法。但它仍然很有用。

计算机可以在未来设置几毫秒的警报,并且通常这样做是为了知道何时停止考虑您的电子邮件程序并花一些时间考虑您的网络浏览器。然后它会设置另一个警报,以便它知道几毫秒后返回您的电子邮件。

作为程序员,您也可以使用此功能,例如,您可以使用“计时器”为游戏中的关卡设置时间限制。或者您可以使用计时器来告诉您何时应该将动画的下一帧显示在显示器上——也许每秒 25 次(即每 40 毫秒)。

于 2009-06-16T10:06:02.760 回答
2

要回答主要问题,BIOS 时钟在您的主板上有一块电池,就像简的回答所说的那样。这可以在机器关闭时保持时间。

要回答我认为您的第二个问题,您可以通过将整数除以 1000 从毫秒值中获得第二个,如下所示:

second = (int) (milliseconds / 1000);

如果您要问我们如何才能获得如此准确的时间,请查看 Esteban 的答案……石英晶体在特定时间段内振动,例如 0.00001 秒。我们只是制作一个计算振动的电路。当我们达到 100000 次振动时,我们声明已经过了一秒并更新时钟。

我们可以通过这种方式计算振动来获得任何精度......任何大于我们正在使用的晶体振动周期的精度。

于 2009-06-12T21:33:19.877 回答
0

主板有一个滴答作响的时钟。每个刻度代表一个时间单位。

更准确地说,时钟通常是以给定频率振荡的石英晶体;一些常见的 CPU 时钟频率是 33.33 和 40 MHz。

于 2009-06-10T03:18:34.243 回答
0

绝对时间是从 1970 年开始使用 32 位秒计数器测量的。这可能导致“2038 问题”,它只是溢出。因此,现代 Windows 和 Unix 平台(包括基于 BSD 的 MacOS)上使用的 64 位时间 API。

很多时候,PC 用户对时间间隔感兴趣,而不是自重大事件发生后的绝对时间。计算机的常见实现具有称为计时器的东西,它允许这种情况发生。这些计时器甚至可以在 PC 不以轮询硬件以了解唤醒状态、切换睡眠模式或退出睡眠为目的时运行。英特尔的处理器文档详细介绍了这些内容。

于 2009-06-17T18:31:18.220 回答