假设我有两台计算机-一台位于洛杉矶,另一台位于波士顿。有没有什么已知的协议或linux命令可以使这两台计算机的时钟同步到1ms以下,并且根本不使用GPS?我的印象是答案是否定的(What's the best way to synchronize times to millisecond accuracy AND precision between machines?)
或者,是否有任何标准协议(如NTP)可以在关闭绝对时间同步的情况下准确知道这两台计算机之间的相对时间差?
我只是想知道是否有任何免费或廉价的方法来获得优于1毫秒的时间精度,而不必求助于GPS。
发布于 2015-12-30 05:24:57
我不知道任何已知的协议(也许有),但可以提供一种类似于科学家测量接近光速的速度的方法:
在两个服务器上都有一个进程“time”另一个服务器并等待响应,并对响应所用的时间进行计时。然后,在您期望最后一个ping到达时,开始定期ping。平均(并丢弃任何较远的样本),您将在一段时间后以相同的节奏“敲打”两个服务器。这两个人还可以通过除以(长)时间段中的节拍计数,以非常高的精度告诉他们每个“节拍”之间需要多少时间。
在“节奏”建立之后,如果您知道其中一个服务器的时间是正确的,或者您希望将其时间作为基准,那么当您的服务器的信号到达另一个服务器时,您就知道它是什么时间。连同它发送给你的响应,它有多少时间。然后,您可以使用该时间与您的时间系统建立同步。
最后但并非最不重要的一点是,大多数操作系统允许非内核用户在至少32毫秒内执行操作,也就是说:您不能期望在少于32毫秒的时间内发生某些事情。克服这一问题的唯一方法是拥有一个“本机”DLL,它可以做出反应并与时钟一起运行。这也只会给你一定的反应速度,这取决于系统(硬件和软件)。
阅读有关实时系统和您所说的“服务器”(Windows?Linux?在微芯片上嵌入软件?还有别的吗?)
https://stackoverflow.com/questions/34519095
复制相似问题