Desde el punto de vista del hardware, un reloj está compuesto por un oscilador de cuarzo que va generando impulsos. En cada impulso se decrementa una unidad de un registro contador. Cuando ese registro contador llega a 0 se lanza una interrupción, que es tratada por el gestor de reloj (software), y se vuelve a restaurar el contador con su valor inicial. Respecto al gestor de reloj, se tiene un contador en memoria que se va incrementando cada vez que se produzca una interrupción.
La información del momento en el que se produce la interrupción se puede guardar de distintas formatos:
Fecha y hora desde 1/1/1970 (UNIX lo usa e incrementa en segundos)
Fecha y hora en segundos desde una fecha referencia (necesitaremos 64 bits)
Fecha y hora en minutos desde 1/1/1980
Fecha y hora desde el arranque más el tiempo transcurrido
También cabe decir que se pueden combinar entre ellos. GNU/Linux usa 1 y 2, y 4 como información adicional.
La función principal de los temporizadores y las alarmas es proveer servicios para solicitar al sistema operativo que avisa al proceso pasado un tiempo. Los temporizadores se usan internamente para limitar tiempos de espera, y las alarmas, son para aplicaciones en tiempo real que permiten programar una serie de tareas.
Los temporizadores dependen directamente del timer, se decrementan a impulsos de reloj. No se vena fectados por los cambios de hora del reloj, las alarmas en cambio sí.