2009-12-19 5 views
3

이 질문이 StackOverflow에 속하는지 모르겠지만 여기에 있습니다.최악의 운영 체제 클럭 정밀도?

한 파티에서 다른 파티로 전송할 데이터에 대해 C#을 사용하여 타임 스탬프를 생성해야하며 모든 운영 체제에서 시스템 클럭의 최악의 정확도가 무엇인지 알아야합니다 (Windows, Linux 및 유닉스)? 필자가 요구하는 것은 모든 운영 체제가이 타임 스탬프를 확인할 수 있도록 정밀도를 파악하는 것입니다.

예를 들어 Windows Vista 운영 체제의 클럭 해상도는 약 10-15 밀리 초입니다.

+0

시스템 시계에 대해 이야기하고 있습니까? 또는 "시스템 시계"? MB의 클럭은 보통 밀리 초 미만의 분해능을 갖습니다. 여러 테스트를 통해 알 수 있지만 Console.Writeline (System.DateTime.Now.Ticks); Thread.Sleep (100); Console.Writeline (System.DateTime.Now.Ticks); - 차이는 100ms보다 훨씬 큽니다. – GrayWizardx

+0

모든 운영 체제가 타임 스탬프를 확인할 수 있도록 일반적으로 사용해야하므로 "시스템 클럭"에 대해 이야기하고 있습니다. – Lopper

답변

0

흥미 롭습니다. 주요 운영체제는 최단 1 초의 분해능 (0.01 초)을 가지지 만, 정밀도가 더 높은 경우가 많습니다.

리눅스는 컴퓨터의 시계 하드웨어에 따라 타임 스탬프 (최대 1024 분의 1 초)를 제공합니다 (man utime 참조). Windows NT/Win2K/XP/등. 0.000 000 1 두 번째 단위 (초당 천만 개)의 모든 시스템 타임 스탬프를 차지하지만 파일 타임 스탬프에서 밀리 초 정밀도를 제공합니다 (NTFS 만 사용). 정확한 정확한 시간 해상도가 시스템간에 필요한 경우

, GPS 수신기는 쉽게 side effect of how they work로 100 나노초 정밀도를 달성, 많은 저렴한 모델을 할뿐만 아니라 10 NS. Special GPS models 파생 시간을 외부에서 사용할 수있게 만듭니다.

1

데이터에 대해 unix timestamp과 같은 것을 생성하려고합니까? 또는 기존 파일과 충돌하지 않는 타임 스탬프를 찾으십니까? 그것의 나중에 당신은 항상 진드기를 사용할 수 있었다.

"긴"타임 스탬프의 문제점은 시계를 다르게 설정할 수 있기 때문에 시계를 생성하는 기계와 관련이 있지만 다른 시스템의 충돌을 보장하지 않는다는 것입니다 (실제로는 부동이 아니라 실제로 다르게 설정 됨).).

데이터가 안전/민감하고 동기화 키 (ALA Kerberos)에 대한 시간 기반 메커니즘을보고있는 경우 특히 동기화 시스템에서 극복해야 할 많은 장애물이 있으므로 자신의 롤링을 제안하지 않습니다 동기화 된 상태로 유지합니다.

+0

나는 타임 스탬프를 사용하여 한 파티에서 다른 파티로 데이터가 전송되는 시간을 나타내며 고유하지 않아도됩니다. 그래서, 나는 기존 파일과 충돌하지 않을 타임 스탬프를 찾고 있지 않다. – Lopper

+1

나는 틱스 (Ticks)와 함께 갈 것이다. 당신에게 해상도와 깨끗한 스트레이트 포워드 (긴 가치)를 충분히 주어야하며 쉽게 DateTime으로 재구성 될 수있다. 클라이언트가 Non-.NET 인 경우 Unix 타임 스탬프도 좋은 옵션입니다. – GrayWizardx