domingo, junio 29, 2008

El fin del mundo: 2038

Hoooola!

Relajándome un poquito antes del partido he leído por "el interné" una noticia muuuyyy curiosa...

Resulta que, como todos sabemos, el tiempo en los procesadores se mide en binario (0 y 1 para quien no lo sepa), resulta que los sistemas actuales están todos basados en 32 bits (cada bit corresponde a un 0 o a un 1). Luego la hora se cuenta desde el año 1900 y se corresponde con 32 ceros seguidos:

00000000000000000000000000000000

cuando llegue a 32 unos... que?

11111111111111111111111111111111

pues que petará... y entonces volveremos al 00000000000000000000000000000000

nota: para quien no lo sepa los números binarios van así, ejemplo con 3 bits
000 -> 0
001 -> 1
010 -> 2
011 -> 3
100 -> 4
101 -> 5
111 -> 6

cuando llega al 111 en teoría acaba.

en esta animación podréis ver el efecto 2k38 como lo han bautizado:



Pensaréis: "bueno, pero es como el efecto 2000..."

NOOOORRR!!!!

el efecto 2000 era "más sencillo" de arreglar, simplemente era cambiar que en vez de contar las dos últimas cifras del año contara las 4, en vez de 19XX que utilizara XXXX

Se está empezando a migrar a tipos de 64 bits, con lo que el problema se resolvería, pero no es tan sencillo, por que hay que cambiar un tipo de dato nativo del lenguaje de programación C.

Si buscáis en wikipedia pone lo siguiente:

"Esta representación es un estándar en los sistemas tipo Unix y también en los programas escritos para muchos otros sistemas operativos - como windows o mac - debido al gran alcance del lenguaje de programación C. En la mayoría de sistemas de 32 bits, el tipo de dato time_t usado para guardar el contador de segundos es un entero de 32 bits con signo, es decir, que puede representar un rango de números entre -2.147.483.648 y 2.147.483.647 (-231 y 231-1; 1 bit para el signo, y 31 para el valor absoluto), por lo que el último segundo representable con este formato será a las 03:14:07 UTC del 19 de enero de 2038, cuando el contador llegue a 2147483647. Un segundo después, el contador se desbordará, y saltará al valor -2.147.483.648, que causará el fallo de programas que interpretarán el tiempo como que están en 1901 ó 1970 (dependiendo de la implementación), en vez de 2038. A su vez, esto causaría cálculo y procesamiento incorrecto.

No hay una forma sencilla de arreglar este problema para las combinaciones existentes de CPU/SO. Cambiar la definición de time_t para usar un tipo de 64 bits rompería la compatibilidad binaria para el software, almacenamiento de datos, y, por lo general, cualquier cosa que tenga algo que ver con la representación binaria del tiempo. Cambiar time_t a un entero de 32 bits sin signo afectaría a los programas que hacen cálculos con diferencias de tiempo.

La mayoría de sistemas operativos para arquitecturas de 64 bits utilizan enteros de 64 bits para time_t. La migración a estos sistemas está todavía en proceso y se espera que se complete antes del 2038. Sin embargo, cientos de millones de sistemas de 32 bits son utilizados todavía en el 2008, muchos en sistemas integrados, y no es posible asegurar que todos ellos habrán sido reemplazados antes del 2038."

Para acabar dicen un apunte muy simpático:

"Usar un entero de 64 bits retrasaría la fecha del problema unos 290 mil millones de años, mucho tiempo después de que el sol se haya extinguido."

JUAS!

La verdad es que no me preocupa mucho, en 30 años yo creo que tendremos ordenadores neuronales o atómicos y todo esto pasará a la historia, por que no utilizarán el sistema binario... será ternario o de varios niveles... gracias a la posibilidad de cambiar de orbital de los electrónes, pero eso es otra historia.

de hecho, hoy en día, está pasando algo parecido con las IP (los numeritos de los ordenadores para conectarse a internet), resulta que son 4 octetos, pues hay tantos ordenadores,pda, móviles, cohces con internet... en el mundo que se están acabando los números. Se calcula que dos terceras partes de las direcciones ya se han dado... Ahora se está migrando de IPv4 a IPv6,
que pasará de dar 2 elevado a 32 posibles direcciones a dar 2 elevado a 128 posibilidades, CASI NADA!

bueno, si queréis saber más... san google y santa wikipedia

No quiero acabar el post sin decir:

ESPAÑA! ESPAÑA!!! HOY CENAMOS FRANKFURT Y DE POSTRES STRÜDEL !!!!

No hay comentarios: