我想知道是否每个人都知道在Windows 2008上如何保证精确的PTP同步。
我知道这个线程:在windows中进程的最低保证时间是多少?,它讨论了windows的本地时间,是的,这根本没有提供任何保证。
但是,当涉及到硬件解决方案(PTP)时呢?是否有任何限制阻止保证< 1ms?我知道依赖于时间的进程将竞争CPU时间,但是如果进程在需要时确实有CPU时间,那么还有什么可能会出现吗?
编辑1:我在标题中添加了“(与Linux相比)”,因为这最初是我关心的问题之一。
发布于 2012-10-30 11:30:46
为了在Windows 2008上获得可靠的进程时间,可以安排一些事情。其中一些是:
REALTIME_PRIORITY_CLASS和THREAD_PRIORITY_TIME_CRITICAL一样高。Core 0上运行。Core 0专用于某些系统服务。使用不同的代码可以避免依赖关系。Sleep(0)。睡眠(0)是一个异步服务,迫使调度程序作出反应。通过这种方式,您可以触发调度程序,它将选择进程/线程以获得CPU,因为它具有最高优先级。timeBeginPeriod返回的wPeriodMin。这将迫使您的系统以其最大中断频率运行。完成后,不要忘记通过调用timeEndPeriod来释放多媒体计时器资源。当这些规则被狂喜地遵循时,精确的计时进入10微秒的范围是可以获得的高可靠性。然而,所有这些的总和导致了某种复杂性。因此,永远不可能提供保证。但即使在实时操作系统系统中,也没有这样的保证。当编码没有正确地完成时,不管操作系统是如何调用的,事情都不会按照他们应该做的方式工作。还可以找到更多指向等效.Net服务的注释和链接,这里。
所有这些都可以使时间同步(精确时间协议)的实现缩短到10微秒。
精确时间协议开发人员常见问题可以找到http://wiki.eclipse.org/PTP/sync-projects。
Linux之后的编辑也被要求:有一些可用的包,例如这 one。这里报告的典型精度也在10到100微秒范围内。
毫不奇怪,在运行在类似标准硬件上时,Windows和Linux的结果非常相似。这两个人中的任何一个都能做任何魔术。
https://stackoverflow.com/questions/13136320
复制相似问题