Na pior das hipóteses, precisão do relógio do sistema operacional?
-
20-09-2019 - |
Pergunta
Não tenho certeza se essa pergunta pertence ao StackOverflow, mas aqui está.
Preciso gerar um registro de data e hora usando C# para alguns dados que devem ser transferidos de uma parte para outra e preciso saber qual é a pior precisão do relógio do sistema em todo o sistema operacional (Windows, Linux e Unix)? O que eu preciso é descobrir a precisão de modo que todos os sistemas operacionais possam validar esse registro de data e hora.
Como exemplo, a resolução do relógio para os sistemas operacionais Windows Vista é de aproximadamente 10 a 15 milissegundos.
Solução
Interessante. Os principais sistemas operacionais têm uma resolução pior - centissegundo (0,01 segundos), embora isso seja frequentemente incorporado a mais precisão.
O Linux oferece resolução de microssegundos em seus registros de data e hora (ver man utime
) dependendo do hardware do relógio do computador. Windows NT/Win2K/XP/etc. Ofereça precisão de milissegundos em registros de data e hora (usando apenas NTFs), embora seja responsável por todos os registros de data e hora do sistema em 0.000 000 1
Segunda unidades (dez milhões por segundo).
Se preciso e É necessária uma resolução de tempo precisa entre os sistemas, os receptores GPS atingem facilmente 100 nanossegundo precisão como um Efeito colateral de como eles funcionam, e muitos modelos baratos são assim como 10 ns. Modelos GPS especiais disponibilizar o tempo derivado para uso externo.
Outras dicas
Você está procurando gerar algo como um UNIX Timestamp para os dados? Ou encontrar um registro de data e hora que não colidem com um arquivo existente? Se for mais tarde, você sempre pode usar carrapatos.
O problema com qualquer carimbo de data / hora "longo" é que ele será relativo à máquina que a gera, mas não garantirá a não colisão no outro sistema, pois os relógios podem ser definidos de maneira diferente (não flutuando, mas na verdade devem ser definidos de maneira diferente).
Se os dados forem seguros/sensíveis e você estiver olhando para um mecanismo baseado em tempo para as chaves de sincronização (Ala Kerberos) Eu não sugeriria rolar o seu próprio, pois há muitos obstáculos a serem superados, especialmente nos sistemas de sincronização e mantê-los sincronizados.