UTNianos

Versión completa: Diferenciar RAM y ROM: implicaciones prácticas en programación
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Estoy explorando los conceptos fundamentales de RAM y ROM en sistemas informáticos y me pregunto sobre sus implicaciones prácticas en la programación. Aquí hay un fragmento de código para contexto:


# Python code involving memory operations
data = [1, 2, 3, 4, 5]
result = sum(data)
print("Sum of data:", result)



Si bien el código es sencillo, me interesa comprender las diferencias prácticas entre RAM y ROM y cómo afectan operaciones como la de este código. ¿En qué se diferencian el almacenamiento de datos, la velocidad de acceso y la volatilidad en la RAM de la naturaleza no volátil de la ROM, y cómo influyen estas distinciones en las decisiones de programación? Mientras exploro varios sitios[/code], también me pregunto si hay situaciones particulares en las que el uso de RAM o ROM se vuelve esencial para obtener la mejor velocidad y confiabilidad del código posible.
Holii

El manejo de memoria en la programación es un tema muuuuy complejo. Te cuento que si todavía no llegaste, en la materia Sistemas Operativos vas a tener que jugar con eso un ratito largo.

Intentando responder de una manera directa y concisa, te cuento:
* Almacenamiento de datos: Cada vez que declarás una variable, función o lo que sea, estás pidiendo memoria (RAM o ROM)
* Velocidad de acceso: es el tiempo que tenés desde que pedís un dato (ya sea variable, función o lo que sea) hasta que ese dato está accedido. También puede ser en RAM o ROM.

Algunas cuestiones para aclarar:
* ¿Por qué te digo que podés pedir memoria RAM o ROM? Porque inicialmente vos pedís memoria RAM, pero cada vez que ejecutás un proceso, el mismo no se carga completo en memoria RAM, sino que se carga una sola parte, la que necesitás en el momento, mientras que el resto se encuentra almacenado en disco y solo es cargado en RAM cuando se necesita.
Toda esta gestión es realizada por el sistema operativo, quien incluso tiene sus propias políticas de acceso a los datos y reemplazo en memoria volátil.

* El cuidado en el pedido de memoria "era" una buena práctica en lenguajes de programación antiguos, como C e incluso más viejos, donde tenés que especificar explícitamente la memoria que vas a necesitar durante la ejecución de tu proceso y luego liberarla, evitando así "memory leaks" o "fallas de acceso de memoria" (dos cosas distintas). Es muy complejo de realizar y una forma sencilla de generar bugs en tu código. Actualmente los lenguajes de programación, como Java o Python, tienen algo que se llama "garbage collector", que es un proceso automático de gestión de memoria, donde limpia directamente la memoria que desperdiciaste durante la programación de tu código. Por lo que termina resultando más sencillo pedir memoria de más, que de menos, total luego la misma va a ser devuelta al sistema operativo de manera automática.


Si querés conocer más a fondo el tema de memoria, te aconsejo que esperes a cursar Sistemas Operativos, como te dije, o bien ir chusmeando un poco la bibliografía de la misma. Te comparto además un RESUMEN teórico de esta materia que utilicé en su momento para rendir el final de la misma. Es muy claro y completo.
Besis y éxitos love
URLs de referencia