Que zarpado... ahora es todo más compacto, más integrado que bueno es ver como se fue desarrollando toda la tecnología. Es apasionante.
Magnetic core y core dump
El núcleo magnético fue durante dos décadas el método más común para tener una memoria RAM, estamos hablando de la prehistoria de la informática, entre 1955 y 1975, cuando los transistores no existían y menos los circuitos integrados.
A falta de tales recursos el ingenio humano había optado por varios caminos y el eléctrico-magnético parecía ser el más eficiente en esos tiempos.
Cada "bit" era un toroide magnético con cableado para leer y escribir el bit almacenado, un bit se almacenaba en dos sentidos, del reloj o al revés, siendo un estado un uno o un cero, con un pulso eléctrico se podía cambiar la polaridad y se pasaba de un uno a un cero o viceversa.
El acto de leer un bit provocaba su cambio de estado así que era una memoria destructiva, todo lo que se leía se perdía al instante.
Sin explicar electromagnetismo es complicado entenderlo, pero créanme, funciona. Para fines de los 70 fue completamente reemplazada por la memoria en semiconductores más cercana a la actual, el cambio implicaba no sólo una diferencia enorme en cómo se almacenaban los datos, si no en los tamaños y capacidades, donde antes entraba un pequeño núcleo ferroso, hoy entran millones de transistores.
En la foto, por ejemplo (tomada de Wikipedia) podemos ver un core de 64x64 bits que mide 10.8x10.8 centímetros, considerando que un chip de memoria de 1Gb mide 1x1 cm, el cambio ha sido tan significativo que es imposible entenderlo. Esos 4096 bits necesitaban 10 centímetros cuadrados para existir, eran carísimos, hechos a mano y super delicados.
El costo era enorme, cada bit costaba en sus comienzos un dólar (que por inflación serían como 4 dólares actuales), y con el tiempo y la industrialización del método llegó a costar 0.01 centavos, igual, si lo comparamos con el costo por bit de los semiconductores seguía siendo carísimo de producir.
Es en este tipo de primitiva memoria donde nace el famoso y archiconocido por todos los programadores serios "Core Dump". Los lenguajes modernos y sus intérpretes mantienen al programador muy lejos de esto, aquellos que osamos intentar programar en Linux en C, sabemos lo que significa
Es que en los años 60 cuando un programa reventaba violentamente, un típico crash, se hacía un "core dump" a papel para ver el estado en que estaba la memoria en el momento del crash.
En esa época se generaba una gran hoja con el estado al momento de crashear del programa. Con el tiempo el "Core Dump" se mantuvo como expresión pero cambió notablemente al momento de pasar a los sistemas operativos y los discos, ahora el "dump" se escribía en un archivo, un log.
Todavía se puede ver cuando un programa revienta y nos quiere mostrar una serie de códigos hexadecimales incomprensibles, sirve para hacer un debug y tratar de encontrar el problema, en aquellos tiempos era más básico: lenguaje de máquina bit a bit y andá a entenderlo
Otros posts que podrían llegar a gustarte...
Comentarios
-
Programar en Linux en C es muy divertido, sobre todo cuando te tira segmentation fault porque le pifiaste con alguna expresión que resuelve a un índice de una matriz que está fuera del rango de memoria que reservaste y empezás a escribir en cualquier lado.
A mí siempre me dio mucha gracia la expresión "core dump" porque vivo hace unos cuantos años en Inglaterra y "take a dump" quiere decir, por expresarlo de una manera políticamente correcta, "ir al baño" (a hacer lo segundo).
Por eso cuando me tira "core dump" siempre pienso, "uh, se fue todo a la m.."
-
Si el hello_world.c ya te tira Core Dump, es porque entraste por la puerta grande al mundo de la programación
-
Ale dijo:
Programar en Linux en C es muy divertido, sobre todo cuando te tira segmentation fault porque le pifiaste con alguna expresión que resuelve a un índice de una matriz que está fuera del rango de memoria que reservaste y empezás a escribir en cualquier lado.
A mí siempre me dio mucha gracia la expresión "core dump" porque vivo hace unos cuantos años en Inglaterra y "take a dump" quiere decir, por expresarlo de una manera políticamente correcta, "ir al baño" (a hacer lo segundo).
Por eso cuando me tira "core dump" siempre pienso, "uh, se fue todo a la m.."
jeje es que es básicamente eso, porque nadie se va a poner a leer un core dump, es como ponerse a mirar el resultado del "take a dump" durante una hora