Pregunta

Yo sé que hace 10 años, la precisión de reloj típica igualó un sistema de garrapata, que estaba en el rango de 10-30ms. En los últimos años, la precisión se incrementó en varios pasos. Hoy en día, hay maneras de medir intervalos de tiempo en nanosegundos reales. Sin embargo, los marcos habituales todavía regresan tiempo con una precisión de sólo alrededor del 15 ms.

Mi pregunta es, ¿qué pasos hizo aumentar la precisión, ¿cómo es posible medir en nanosegundos, y ¿Por qué seguimos recibiendo a menudo menos-que-microsegundo precisión (por ejemplo, en .NET) .

(Negación:.. Me parece extraño que esto no se le pidió antes, así que supongo que echaba de menos esta pregunta cuando busqué favor cerca y me apunte a la cuestión en ese caso, gracias Creo que esto pertenece el SO y no en cualquier otro sitio Sofu. entiendo la diferencia entre la precisión y la exactitud.)

¿Fue útil?

Solución

Realmente es una característica de la historia de la PC. El original de la IBM-PC utiliza un chip llamado el reloj de tiempo real, que fue respaldada por batería (¿Recuerdas la necesidad de cambiar las baterías de estos?) Estos funcionan cuando la máquina se apaga y se mantiene el tiempo. La frecuencia de estos era 32,768 kHz (2 ^ 15 ciclos / segundo), que hizo fácil de tiempo calcular en un sistema de 16 bits. A continuación, este reloj de tiempo real fue escrito para las OCM que estaba disponible a través de un sistema de interrupciones en los sistemas operativos más antiguos.

Un nuevo estándar está fuera de Microsoft e Intel llamados de alta precisión evento de temporizador que especifica una velocidad de reloj de 10 MHz http://www.intel.com/hardwaredesign/hpetspec_1.pdf Incluso más nuevas arquitecturas de PC toman este y se pone en el controlador Northbridge y el HPET pueden tun a 100 MHz o incluso mayor. En 10Mhz debemos ser capaces de obtener una resolución de 100 nanosegundos y al 100MHZ debemos ser capaces de obtener una resolución de 10 nano-segundos.

Los siguientes sistemas operativos son conocidos por no ser capaz de utilizar HPET: Windows XP, Windows Server 2003 y versiones anteriores de Windows, las versiones anteriores de Linux

versiones de Windows Vista, Windows 2008, Windows 7, basado en x86 de Mac OS X, los sistemas operativos Linux utilizando el kernel 2.6 y FreeBSD

Los siguientes sistemas operativos son conocidos por ser capaces de utilizar HPET.

Con un núcleo de Linux, necesita los nuevos "RTC-CMOS" controlador de dispositivo reloj de hardware en lugar del original "RTC" controlador

Dicho todo esto, ¿cómo acceder a esta resolución adicional? Podría cortar y pegar de artículos stackoverflow anteriores, pero no - Sólo la búsqueda de HPET y encontrarán las respuestas sobre cómo conseguir temporizadores más finos de trabajo

Otros consejos

Yo, literalmente, leí un post en MSDN de esto hoy, leer aquí , que cubre el tema bastante bien. Cuenta con un énfasis en DateTime C # 's pero es de aplicación universal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top