Las computadoras implementan el tiempo del reloj de pared principalmente utilizando una serie de vibraciones de un cristal de cuarzo por segundo. Un chip (generalmente uno separado de la CPU con una fuente de alimentación de respaldo como un reloj digital) los cuenta y obtiene un número, que la computadora usa.
El tiempo generalmente se mantiene en lo que se llama Código de tiempo universal (UTC). Esto representa el concepto de una sola vez en todo el mundo. Es un poco bugaboo porque, debido a la velocidad de la luz, puede apagarse en una fracción considerable de segundo, pero está bastante bien, ya que solo es preciso en un segundo.
Internamente, la hora y la fecha del reloj de pared se representan con referencia a una fecha particular en la historia reciente. Los diferentes sistemas tienen fechas de referencia diferentes, pero generalmente es un tiempo en las épocas Hippie o Disco. Las conversiones a UTC generalmente se manejan automáticamente, pero eso no solía ser el caso, causando muchos dolores de cabeza. Muchas personas que no fueron lo suficientemente cuidadosas como para usar enteros de 32 bits sin firmar en UNIX se sentirán realmente avergonzados en 2038, suponiendo que ellos y su software todavía estén presentes.
- ¿Cuándo la regresión logística funciona mal y se debe preferir la máquina de vectores de soporte (SVM)?
- ¿Cuáles son algunos de los algoritmos importantes utilizados en Machine Learning?
- Cómo resolver mis problemas relacionados con el calentamiento de computadoras portátiles
- ¿Cuáles son las unidades de medida más comunes en informática y qué miden?
- ¿Cuál es la mejor fuente de ejemplos exitosos de productos de arquitectura de la vida real, por ejemplo, definiciones de sistemas, diagramas UML, procesos de negocios?
Los cristales de cuarzo en estos chips se desplazan y son sensibles a la temperatura, de los cuales puede haber mucho en una computadora. Por lo tanto, con frecuencia se sincronizan con los servicios de red, que en su mayoría obtienen tiempos de estándares como WWV, que generalmente se reducen a un reloj atómico. La sincronización causa el problema de que, ocasionalmente, es posible retroceder en el tiempo. Esto no tiene mucho efecto en la mayoría de las aplicaciones ejecutadas por personas, pero puede ser un verdadero problema en las bases de datos que usan el seguimiento de fechas.
UTC puede representar la hora como la hora media de Greenwich (hora zulú) o como una hora local con un desplazamiento de la hora media de Greenwich, que es en horas y minutos. Esto representa aproximadamente la mitad de la información que necesita para las zonas horarias, de una manera simple que permite el cálculo fácil para otra zona horaria.
Sin embargo, no funciona. Falla en el caso del horario de verano. No trata, por ejemplo, el hecho de que aproximadamente la mitad de Indiana hace el horario de verano, y la otra mitad no, calificándola despectivamente de “tiempo rápido”. (Viví en Indiana durante unos meses, así que lo sé. A los hoosiers no les gusta nada que se mueva más rápido que los cultivos. Es bastante terapéutico si te estás recuperando de un trauma, como yo).
Entonces, hay un mecanismo separado para lidiar con esto, generalmente basado en la ciudad más cercana, que tampoco funciona, excepto que las personas pueden ser capacitadas para evitarlo. Todos estos son diferentes, y este es un dolor real en el tochus. (De hecho, estoy lidiando con uno ahora, y estoy escribiendo esto parcialmente para tener una perspectiva con la esperanza de que mi cerebro de alguna manera me presente una gran idea que siempre funcionará).
Para una mayor granularidad y precisión de un segundo, también hay un reloj del sistema, generalmente basado en un mecanismo completamente separado que la hora del reloj de pared. Esto representa segundos desde el inicio del sistema en “ticks”. La cantidad de tiempo que hay en una marca varía de un sistema a otro, pero son comunes 30 y 60 marcas por segundo. Solo recientemente se ha hecho posible en algunos sistemas preguntar directamente cuántos tics hay en un segundo. Antes de eso, la gente usaba constantes definidas la mayor parte del tiempo. El número puede disminuir en función de cómo se usa el procesador, aunque la mayoría de las máquinas modernas solucionan esto. Tampoco es bueno en varias máquinas, lo que puede dificultar el procesamiento paralelo.
Un concepto de tiempo que las computadoras no usan es el que usan los relojes de pared electromecánicos enchufables, que cuentan el número de ciclos en la energía. Las compañías de servicios públicos modifican la velocidad de sus alternadores para que, a la larga, esto sea mucho más preciso que un cristal de cuarzo. Sin embargo, algunos se han detenido, porque es muy difícil de hacer, y la mayoría de los relojes usan cristales de cuarzo de todos modos.
ETA: No voy a tratar de convencerte de “entender”, porque esa es una charla de hackers, y todos sabemos que no es literal.