
En informática , el tiempo del sistema representa la noción que tiene un sistema informático de un punto en el tiempo .
El tiempo del sistema se mide mediante un reloj del sistema , que normalmente se implementa como un simple recuento del número de ticks que han transcurrido desde una fecha de inicio arbitraria, llamada época . Por ejemplo, los sistemas Unix y compatibles con POSIX codifican el tiempo del sistema (" tiempo Unix ") como el número de segundos transcurridos desde el inicio de la época Unix el 1 de enero de 1970 a las 00:00:00 UT , con excepciones para los segundos intercalares . Los sistemas que implementan las versiones de 32 bits y 64 bits de la API de Windows , como Windows 9x y Windows NT , proporcionan el tiempo del sistema como SYSTEMTIME , representado como un valor de año/mes/día/hora/minuto/segundo/milisegundo, y FILETIME , representado como un recuento del número de ticks de 100 nanosegundos desde el 1 de enero de 1601 a las 00:00:00 UT según se calcula en el calendario gregoriano proleptico .
La hora del sistema se puede convertir a hora del calendario , un formato más fácil de comprender. Por ejemplo, la hora del sistema Unix de 1 000 000 000 segundos desde el inicio de la época se traduce a la hora del calendario 9 de septiembre de 2001 a la 01:46:40 UT . Las subrutinas de la biblioteca que gestionan estas conversiones también pueden tener en cuenta los ajustes por zonas horarias , horario de verano , segundos intercalares y la configuración regional del usuario . Generalmente, también se proporcionan rutinas de biblioteca para convertir la hora del calendario a hora del sistema.
Muchas implementaciones que actualmente almacenan la hora del sistema como valores enteros de 32 bits sufrirán problemas como el inminente problema del año 2038. Estos valores de tiempo se desbordarán ("se quedarán sin bits") al final de su época de tiempo del sistema, lo que provocará errores de software y hardware . Estos sistemas requerirán algún tipo de corrección, similar a los esfuerzos necesarios para resolver el problema anterior del año 2000. Esto también representará un problema potencialmente mucho mayor para los formatos de archivos de datos existentes que contienen marcas de tiempo del sistema almacenadas como valores de 32 bits.
Otras mediciones de tiempo
Estrechamente relacionado con el tiempo del sistema se encuentra el tiempo de proceso , que es el tiempo total de CPU consumido por un proceso en ejecución . Este se puede dividir en tiempo de CPU de usuario y de sistema , que representan el tiempo dedicado a la ejecución del código de usuario y del código del núcleo del sistema , respectivamente. Los tiempos de proceso son un recuento del tiempo que tardan las instrucciones de la CPU o los ciclos de reloj y, por lo general, no tienen una correlación directa con el tiempo real .
Los sistemas de archivos registran los momentos en que se crean, modifican o acceden a los archivos, almacenando marcas de tiempo en el bloque de control de archivos (o inodo ) de cada archivo y directorio .
Historia
La mayoría de las computadoras personales de primera generación no registraban la fecha y la hora. Esto incluía sistemas que ejecutaban el sistema operativo CP/M , así como los primeros modelos de Apple II , BBC Micro y Commodore PET , entre otros. Existían tarjetas periféricas adicionales con chips de reloj en tiempo real y batería de respaldo integrada para IBM PC y XT , pero IBM AT fue la primera PC ampliamente disponible que venía equipada con hardware de fecha y hora integrado en la placa base . Antes de la disponibilidad generalizada de las redes informáticas , la mayoría de los sistemas informáticos personales que sí registraban la hora del sistema lo hacían solo con respecto a la hora local y no tenían en cuenta las diferentes zonas horarias .
Con la tecnología actual, la mayoría de las computadoras modernas registran la hora local, al igual que muchos otros dispositivos domésticos y personales como videograbadoras , grabadoras de video digital , receptores de televisión por cable , PDA , buscapersonas , teléfonos celulares , máquinas de fax , contestadores automáticos , cámaras , videocámaras , aires acondicionados centrales y hornos microondas .
Los microcontroladores que operan en sistemas embebidos (como Raspberry Pi , Arduino y otros sistemas similares ) no siempre cuentan con hardware interno para controlar la hora. Muchos de estos sistemas de control funcionan sin conocer la hora externa. Aquellos que requieren dicha información suelen inicializar su hora base al reiniciarse , obteniendo la hora actual de una fuente externa, como un servidor de hora o un reloj externo, o solicitando al usuario que introduzca manualmente la hora actual.
Implementación
El reloj del sistema se implementa normalmente como un temporizador de intervalos programable que interrumpe periódicamente la CPU, la cual inicia entonces una rutina de servicio de interrupción del temporizador. Esta rutina suele añadir un ciclo al reloj del sistema (un contador simple) y gestiona otras tareas de mantenimiento periódicas ( preempción , etc.) antes de retomar la tarea que la CPU estaba ejecutando antes de la interrupción.
Obteniendo la hora actual del sistema.
Las siguientes tablas ilustran métodos para obtener la hora actual del sistema en diversos sistemas operativos , lenguajes de programación y aplicaciones . Los valores marcados con (*) dependen del sistema y pueden variar entre implementaciones. Todas las fechas se presentan en el calendario gregoriano o en el calendario gregoriano proleptico .
La resolución de la medición del tiempo de una implementación no implica la misma precisión en dichas mediciones. Por ejemplo, un sistema podría devolver la hora actual como un valor medido en microsegundos, pero en realidad ser capaz de distinguir pulsos de reloj individuales con una frecuencia de solo 100 Hz (10 ms).
Sistemas operativos
Lenguajes de programación y aplicaciones
Véase también
- Calendario
- FECHA (comando)
- Época
- hora GPS
- Instante
- Protocolo de tiempo de red
- fecha de finalización
- TIEMPO (comando)
- tiempo.h
- tiempo_t
- Errores de formato y almacenamiento de hora
- Protocolo de tiempo
- Estándar de tiempo
- Marca de tiempo
- Comando de fecha de Unix
- Hora Unix
- Comando de tiempo de Unix
- Tiempo real transcurrido
- Problema del año 2000
- Problema del año 2038
Notas
- 1 2 La documentación para desarrolladores de Apple no aclara la precisión y el rango de CFAbsoluteTime/CFTimeInterval, excepto en la documentación de CFRunLoopTimerCreate, que menciona una precisión de "como máximo un submilisegundo". Sin embargo, el tipo similar NSTimeInterval parece ser intercambiable y sí especifica la precisión y el rango.
- 1 2 3 4 La biblioteca estándar de C no especifica ninguna resolución, época, rango o tipo de datos específicos para los valores de tiempo del sistema . La biblioteca de C++ engloba la biblioteca de C, por lo que utiliza la misma implementación de tiempo del sistema que C.
Referencias
- ↑ Ralf D. Brown (2000). "Int 0x1A, AH=0x00" . Lista de interrupciones de Ralf Brown .
- ↑ Ralf D. Brown (2000). "Int 0x1A, AH=0x02" . Lista de interrupciones de Ralf Brown .
- ↑ Ralf D. Brown (2000). "Int 0x1A, AH=0x04" . Lista de interrupciones de Ralf Brown .
- ↑ "Guía del sistema operativo CP/M Plus (CP/M versión 3.0)" (PDF) .
- ↑ "Llamadas al sistema BDOS" .
- ↑ Ralf D. Brown (2000). "Int 0x21, AH=0x2c" . Lista de interrupciones de Ralf Brown .
- ↑ Ralf D. Brown (2000). "Int 0x21, AH=0x2a" . Lista de interrupciones de Ralf Brown .
- ↑ "CFAbsoluteTimeGetCurrent" . Documentación para desarrolladores de Apple . 2007.
- 1 2 "CFRunLoopTimerCreate" . Documentación para desarrolladores de Apple . Consultado el 5 de agosto de 2025 .
- ^ Ruth E. Goldenberg; Lawrence J. Kenah; Denise E. Dumas (1991). Componentes internos y estructuras de datos de VAX/VMS, versión 5.2 . Prensa digital. ISBN 978-1555580599.
- ↑ "¿Por qué el miércoles 17 de noviembre de 1858 es la hora base para OpenVMS (VAX VMS)?" . Universidad de Stanford . 24 de julio de 1997. Archivado del original el 24 de julio de 1997 . Consultado el 8 de enero de 2020 .
- 1 2 "Manual de referencia de la biblioteca de tiempo de ejecución VSI C para sistemas OpenVMS" (PDF) . VSI. Noviembre de 2020. Consultado el 17 de abril de 2021 .
- ↑ "OpenVMS y el año 2038" . HP . Consultado el 17 de abril de 2021 .
- 1 2 z/Architecture Principios de funcionamiento (PDF) . Poughkeepsie, Nueva York: International Business Machines. 2007.
- ↑ IBM tiene la intención de extender el rango de fechas en sistemas futuros más allá de 2042. z/Architecture Principles of Operation , (Poughkeepsie, Nueva York: International Business Machines, 2007) 1-15, 4-45 a 4-47.
- ↑ "Valores de tiempo de 64 bits ampliados" . IBM . Consultado el 18 de abril de 2021 .
- ↑ Jonathan de Boyne Pollard. "El intérprete de comandos de 32 bits" .
En OS/2 Warp 4, la fecha y la hora pueden funcionar mucho más allá del año 2000, e incluso mucho más allá del año 2038, y de hecho hasta el año 2079, que es el límite del reloj en tiempo real de OS/2 Warp 4.
- 1 2 3 "Propiedad DateTime.Now" . Documentación de Microsoft .
- 1 2 3 "Propiedad DateTime.UtcNow" . Documentación de Microsoft .
- 1 2 3 "Propiedad DateTime.Ticks" . Documentación de Microsoft .
- ↑ "Soporte para fecha y hora" . Embarcadero Developer Network . 2013.
- ↑ "System.SysUtils.Time" . Embarcadero Developer Network . 2013.
- ↑ "System.SysUtils.GetTime" . Embarcadero Developer Network . 2013.
- ↑ "System.SysUtils.Date" . Embarcadero Developer Network2013.
- ↑ "System.DateUtils.Today" . Embarcadero Developer Network . 2013.
- ↑ "System.DateUtils.Tomorrow" . Embarcadero Developer Network . 2013.
- ↑ "System.DateUtils.Yesterday" . Embarcadero Developer Network . 2013.
- ↑ "System.SysUtils.Now" . Embarcadero Developer Network . 2013.
- ↑ "System.SysUtils.DayOfWeek" . Embarcadero Developer Network . 2013.
- ↑ "System.SysUtils.CurrentYear" . Embarcadero Developer Network . 2013.
- 1 2 3 "Tiempo y corrección de tiempo en Erlang" . www.erlang.org .
- ↑ "XL2000: Las fechas iniciales en el componente de hoja de cálculo de Office difieren de Excel" . Soporte técnico de Microsoft . 2003. Archivado del original el 24 de octubre de 2007.
En el componente de hoja de cálculo de Microsoft Office, el valor 0 corresponde al 30 de diciembre de 1899 y el valor 1 al 31 de diciembre de 1899. ... En Excel, el valor 0 corresponde al 0 de enero de 1900 y el valor 1 al 1 de enero de 1900.
- ↑ "SYSTEM_CLOCK" . Guía y referencia para desarrolladores del compilador Intel Fortran 19.0 . 29 de abril de 2019. Consultado el 23 de julio de 2019 .
- ↑ "SYSTEM_CLOCK — Función de tiempo" . El compilador GNU Fortran . Consultado el 27 de octubre de 2011 .
- 1 2 "Método System.nanoTime()" . Java Platform, Standard Edition 6: Especificación de API . 2015. Consultado el 23 de julio de 2019 .
- ↑ "Clock.systemUTC() y otros métodos" . Java Platform, Standard Edition 8: Especificación de la API . 2014. Consultado el 15 de enero de 2015 .
- ↑ "JSR-310 Java Time System" . Java Platform, Standard Edition 8: API Specification . 2014. Consultado el 15 de enero de 2015 .
- ↑ "Fechas" . Documentación de Julia 1.12 . Consultado el 26 de noviembre de 2025 .
- ↑ "Ayuda de Matlab" .
- 1 2 "NSTimeInterval - Foundation" . Documentación para desarrolladores de Apple .
- ^ Douglas Wegscheild, R. Schertler y Jarkko Hietaniemi, "Time::HiRes" . CPAN: red integral de archivos Perl . 2011 . Consultado el 27 de octubre de 2011 .
- ↑ "Clase de tiempo" .
- ↑ Yugui (18 de agosto de 2010). "Se lanza Ruby 1.9.2" .
La nueva versión 1.9.2 es casi compatible con la 1.9.1, excepto por estos cambios: ... Se reimplementa el tiempo. Se corrige el error con el año 2038.
- ↑ "MIT/GNU Scheme 9.2: 15.5 Fecha y hora" .
- ↑ "Uso del cmdlet Get-Date" . Microsoft Docs . 22 de octubre de 2009. Consultado el 23 de julio de 2019 .
- ↑ "Consejo de la semana de Windows PowerShell: formato de fechas y horas" . Microsoft Docs . 26 de mayo de 2010. Consultado el 23 de julio de 2019 .
Enlaces externos
- Fechas críticas y significativas , JR Stockton (consultado el 3 de diciembre de 2015)
- La biblioteca Boost de fecha y hora (C++)
- La biblioteca Boost Chrono (C++)
- La biblioteca de fecha y hora de Chronos (Smalltalk)
- Joda Time , la biblioteca de fecha y hora de Joda (Java)
- El proyecto Perl DateTime se archivó el 19 de febrero de 2009 en la Wayback Machine (Perl).
- Fecha: Documentación de la biblioteca estándar de Ruby (Ruby)
- Tecnología de sistemas operativos
- Programación informática
- Relojes en tiempo real