说我有两台电脑 - 一台位于洛杉矶,另一台位于波士顿。是否有任何已知的协议或Linux命令可以将这两个计算机时钟同步到1毫秒以上并且根本不使用GPS?我的印象是答案是否定的(What's the best way to synchronize times to millisecond accuracy AND precision between machines?)
或者,是否有任何标准协议(如NTP),即使绝对时间同步关闭,也可以在这两台计算机之间准确地知道相对时间差?
我只是想知道是否有任何免费或廉价的方法可以获得优于1毫秒的时间精度,而无需使用GPS。
谢谢
答案 0 :(得分:1)
我不知道任何已知的协议(可能存在),但可以提供类似于科学家测量接近光速的方法的方法:
让两个服务器上的进程“ping”另一个服务器并等待响应,并计算响应所花费的时间。然后,当你期望最后一次ping进入时,定期开始定期ping。平均(并丢弃任何远处的样本)你将在一段时间后以相同的节奏“砰地一声”使两台服务器。这两者还可以通过将(长)时间段中的节拍数除以高精度来判断每个“节拍”之间的时间间隔。
在建立“节奏”后,如果您知道服务器的某个时间是正确的,或者您想以其时间为基础,那么您就知道服务器的信号到达另一台服务器的时间。连同响应一起,它会向您发送IT时间。然后,您可以使用该时间与您的时间系统建立同步。
最后但并非最不重要的是,大多数操作系统都使非内核用户能够以至少32毫秒的精度行事,即:您不能指望在不到几毫秒的时间内发生某些事情。解决这个问题的唯一方法是拥有一个可以响应并运行时钟的“本机”DLL。这也只会给你一定的反应速度,具体取决于系统(硬件和软件)。
了解实时系统和您正在谈论的“服务器”(Windows?Linux?微芯片上的嵌入式软件?还有什么?)