Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Uma rotina de temporizador do sistema normalmente permite que o chamador especifique um tempo de expiração absoluto ou relativo para um temporizador. Por exemplo, consulte KeWaitForSingleObject, KeSetTimer ou KeDelayExecutionThread. A precisão com que o sistema operacional pode medir os tempos de expiração é limitada pela granularidade do relógio do sistema.
A hora do sistema é atualizada a cada passo do relógio do sistema e apenas é precisa até ao último tick. Se o chamador especificar um tempo de expiração absoluto, a expiração do temporizador será detetada durante o processamento do primeiro tique do relógio do sistema que ocorre após o tempo especificado. Assim, o temporizador pode expirar tanto quanto um período de relógio do sistema mais tarde do que o tempo de expiração absoluto especificado. Se, em vez disso, for especificado um intervalo de temporizador ou tempo de expiração relativo, a expiração pode ocorrer até um período anterior ou um período posterior ao tempo especificado, dependendo de onde exatamente as horas de início e término desse intervalo caem entre os ticks do relógio do sistema. Independentemente de ser especificado um tempo absoluto ou relativo, a expiração do temporizador pode não ser notada até ainda mais tarde se o processamento de interrupção para o relógio do sistema for atrasado pelo processamento de interrupção para outros dispositivos.
Quando o chamador especifica um tempo de expiração relativo, a rotina do temporizador adiciona a hora do relógio do sistema atual ao tempo de expiração relativo especificado para calcular o tempo de expiração absoluta a ser usado para o temporizador. Como a hora do sistema é precisa apenas até ao último tick do relógio do sistema, o tempo de expiração calculado pode ser até um período do relógio do sistema antes do tempo de expiração esperado pelo chamador. Se um tempo de expiração relativo especificado for próximo ou menor do que o período de relógio do sistema, o temporizador pode expirar imediatamente, sem atraso.
Uma maneira possível de suportar com mais precisão tempos de expiração mais curtos é diminuir o tempo entre os tiques do relógio do sistema, mas isso provavelmente aumentará o consumo de energia. Além disso, a redução do período do relógio do sistema pode não resultar de forma fiável numa granularidade mais fina do relógio, a menos que se possa garantir que o processamento de interrupções dos outros dispositivos na plataforma não atrase o processamento das interrupções do relógio do sistema.
A partir do Windows 8, KeDelayExecutionThread usa uma técnica mais precisa para calcular o tempo de expiração absoluta a partir de um tempo de expiração relativo especificado pelo chamador. Primeiro, para obter uma estimativa mais precisa do tempo atual do sistema, a rotina usa o contador de desempenho do sistema para medir o tempo decorrido desde o último tique-taque do relógio do sistema. Em seguida, a rotina adiciona essa estimativa mais precisa do tempo do sistema ao tempo de expiração relativo para calcular o tempo de expiração absoluta. O tempo de expiração absoluto calculado por esta técnica é preciso dentro de um microssegundo. Como resultado, o temporizador não expirará antes que o tempo de expiração relativo especificado transcorra. O temporizador pode ainda expirar até um período de ciclo do sistema posterior ao tempo especificado, e poderá expirar ainda mais tarde se o processamento da interrupção do ciclo do sistema for atrasado pelo tratamento de interrupções de outros dispositivos.
Se a hora do sistema mudar antes de um temporizador expirar, um temporizador relativo não é afetado, mas o sistema ajusta cada temporizador absoluto. Um temporizador relativo sempre expira após o número especificado de unidades de tempo decorrer, independentemente do tempo absoluto do sistema. Um temporizador absoluto expira em um momento específico do sistema, portanto, uma alteração no tempo do sistema altera a duração de espera de um temporizador absoluto.