Qué es un programa — su relación con la CPU, la memoria y el almacenamiento

Este artículo forma parte del curso Fundamentos de informática, que construye desde cero los conocimientos prácticos de informática que necesitas como mínimo para programar y hacer vibe coding.
Un programa es una secuencia de instrucciones: al ejecutarlo se carga en la memoria y la CPU las va haciendo una a una. Con diagramas vemos por qué guardarlo no basta para que se ejecute, partiendo del reparto entre las tres piezas.

Este artículo trata qué ocurre dentro de la computadora cuando se ejecuta un programa.

Guardar un archivo y ejecutarlo son sucesos distintos dentro de la computadora.

La diferencia se explica por lo que hace cada una de las tres piezas: la CPU, la memoria y el almacenamiento.

  • Un programa es una secuencia de instrucciones y, al ejecutarlo, avanza línea a línea desde arriba
  • El reparto entre CPU, memoria y almacenamiento y qué desaparece al apagar
  • Por qué guardarlo no basta para ejecutarlo: la escritura llega solo hasta el almacenamiento
  • Qué entrega al entorno de ejecución el «ejecuta esto» de los manuales

Un programa es una serie de instrucciones y, al ejecutarlo, avanza en orden desde arriba

Un programa (program) son las instrucciones que quieres que haga la computadora, puestas en el orden en que se hacen.

El texto legible para personas es el código fuente (source code), y hacerlas una a una desde arriba es ejecutar (run / execute).

Las tres líneas de la izquierda del diagrama son el contenido de app.js, y la CPU nunca recibe más de una línea a la vez.

Una línea que solo recuerda un valor no muestra nada en pantalla.

Cuando termina la tercera línea, la ejecución misma termina y los valores recordados por el camino tampoco quedan.

Si una línea intermedia no puede ejecutarse, la ejecución termina ahí.

En las tres líneas siguientes, el nombre gokei del medio no está escrito en ninguna parte.

console.log("Voy a mostrar el total");
gokei();
console.log("Terminado");

Que se detuvo con un error significa que la ejecución terminó antes de llegar a la última línea.

La primera línea sí aparece en pantalla, la del medio muestra el texto del error y la última termina sin llegar a leerse.

Un programa es una secuencia de instrucciones que se hacen desde arriba

Un programa es lo que quieres que se haga, escrito en orden.

Ejecutarlo es hacer esa secuencia una a una desde arriba y, si una línea intermedia no se puede hacer, las líneas siguientes terminan sin llegar a leerse.

De qué se encarga cada una: CPU, memoria y almacenamiento

La «computadora» del diagrama anterior está hecha de tres piezas con funciones distintas.

La CPU (Central Processing Unit) hace las instrucciones una a una, la memoria (memory) guarda el contenido solo mientras algo se ejecuta y el almacenamiento (storage) lo conserva aunque se apague.

El reparto entre CPU, memoria y almacenamiento
CPUprocesadorMemoriaRAMAlmacenamientoSSD / discoHace instruccionesuna a unaGuarda lo activoy sus valoresConserva losarchivosNo queda nadaSe borraQueda«No hay memoria»es esto«No hay espacio»es esto
A la izquierda la pieza, en el centro de qué se encarga y a la derecha si queda al apagar. La columna de la derecha es la pista para leer los mensajes de advertencia.
Un archivo se divide en instrucciones y llegan una a una a la CPU
app.js en elalmacenamientoInstrucción 1Instrucción 2Instrucción 3La CPU las haceuna a unaMemoria
El app.js del almacenamiento, a la izquierda, es un solo archivo. Al cargarse en la memoria se divide en las instrucciones que contiene, y la CPU de la derecha las recibe una a una desde arriba.

Un archivo del almacenamiento se convierte dentro de la memoria en una secuencia de instrucciones, y la CPU recibe solo una de ellas cada vez.

Los valores intermedios de un cálculo también están en la memoria, y el archivo del almacenamiento no se reescribe durante la ejecución.

Las tres piezas se reparten así dentro de una misma computadora.

Las tres piezas que hay dentro de tu computadora
Tu computadora
Almacenamiento
  • El archivo app.js que guardaste
  • Queda tal cual aunque se apague
Memoria
  • El contenido de app.js que se cargó
  • Los valores recordados por el camino, como 150 y 200
  • Se borra entero al apagar
CPU
  • Recibe solo la instrucción que hace en ese momento
  • Ya no tiene las instrucciones terminadas
Fuera está tu computadora. En el almacenamiento quedan los archivos guardados y en la memoria entra solo lo que se está ejecutando ahora.

Lo que se mueve es solo el contenido; el propio app.js del almacenamiento sigue donde está.

En la memoria entra solo lo que se está ejecutando ahora y sus valores intermedios.

Esta distinción también aparece al leer los avisos que da la computadora.

«No hay memoria suficiente» habla de la memoria, así que borrar archivos normalmente no la aumenta.

«No hay espacio suficiente» habla del almacenamiento, y ahí sí aumenta al borrar archivos.

El lugar donde se guarda y el lugar donde se ejecuta son distintos

El almacenamiento es donde se guardan los archivos, la memoria es donde está lo que se ejecuta ahora, y la CPU es la que hace esas instrucciones una a una.

Lo escrito en el almacenamiento queda aunque se apague, y lo que estaba en la memoria se borra.

Por qué guardar el archivo no basta para que se ejecute

Guardar es escribir los caracteres del código fuente en el almacenamiento.

Se escriben dentro de la carpeta de my-app, la app de reservas que estás creando.

Al guardar, en qué parte del almacenamiento queda
Almacenamiento
my-app (la carpeta de la app de reservas que estás creando)
  • app.js — el código fuente que guardaste
  • Si lo vuelves a guardar, cambia el contenido de este archivo
Otras carpetas
  • Archivos de fotos y documentos
  • Los archivos que no se ejecutan también están ahí tal cual
Fuera está el almacenamiento. my-app es la carpeta de la app de reservas que estás creando, y el app.js que guardaste entra ahí dentro.

La CPU nunca va por su cuenta a leer un archivo que está aquí.

Cuando solo lo has guardado, todavía no se ha hecho ni una sola instrucción.

PasoAlmacenamientoMemoriaPantalla
Solo guardarSe escribe app.jsNo entra nadaNo aparece nada
Guardar y ejecutarapp.js sigue igualSe carga y empieza a ejecutarseAparece 350

La fila de solo guardar se detiene en el almacenamiento y, como no entra nada en la memoria, la CPU no recibe ni una instrucción.

En la pantalla no pasa nada porque no has indicado que se ejecute.

Al ejecutarlo de nuevo, el contenido viejo de la memoria se descarta y se carga el archivo nuevo.

Lo que corregiste se ejecuta en el momento en que ocurre esa recarga.

Por eso los pasos te dicen que lo ejecutes de nuevo.

Guardar no es aplicar el cambio

Guardar llega solo hasta escribir los caracteres en el almacenamiento.

Un programa en ejecución sigue con el contenido que tenía al cargarse, así que aunque corrijas el archivo el resultado de la pantalla no cambia hasta que lo ejecutas de nuevo.

«Ejecuta esto» significa entregar un archivo al entorno de ejecución

Quien carga el archivo en la memoria y lleva las instrucciones a la CPU es el entorno de ejecución (runtime: el software que lee el código fuente y hace que la CPU ejecute sus instrucciones).

El «ejecuta esto» de los pasos es entregar el archivo a este entorno de ejecución.

Lo único que tecleas tú es la línea de la izquierda del todo.

Esa línea aparece así en los pasos.

# Ejecutar código fuente de JavaScript (Node.js)
node app.js

# Ejecutar código fuente de Python
python app.py

Esa línea es un comando (command: una indicación en texto que le dice al software qué hacer).

Al principio va el nombre del entorno de ejecución y detrás el nombre del archivo del código fuente, separados por un espacio.

Qué hay dentro de una línea de comando
Una línea de comando (node app.js)
El principio — el nombre del entorno de ejecución
  • node — lee código fuente de JavaScript
  • python — lee código fuente de Python
Detrás — el archivo que le entregas
  • app.js — el nombre del archivo de código fuente que guardaste
  • El entorno de ejecución lo carga desde el almacenamiento
  • A veces, en lugar del nombre del archivo se escribe un nombre corto acordado de antemano
Fuera está la línea de comando y dentro están sus dos partes: el principio y lo que va detrás. Los comandos que aparecen en los pasos se leen separándolos en estas dos partes.

El principio te dice qué entorno de ejecución hace falta y lo que va detrás, qué archivo se carga.

La pantalla donde tecleas esta línea se trata en el artículo «Qué es un entorno de desarrollo» de este curso.

Aunque cambie el lenguaje, se lee igual: al principio va el software que lo recibe y detrás lo que le entregas.

Hay otro punto en el que cambia la redacción de los pasos.

La forma de terminar después de indicar la ejecución se divide en dos.

Después de indicar la ejecución, hay dos formas de terminar
Indicar laejecuciónLlega a la últimalínea y terminaSale el resultadoy vuelve el promptTiene una ordenque espera siempreNo termina hastaque lo detienes
De una sola indicación salen dos ramas. La rama de arriba es un programa que termina en la última línea y la de abajo un programa que no termina hasta que lo detienes.

La rama de abajo es la clase de programa que los pasos te dicen que dejes en marcha.

Hay entornos de ejecución que recargan el archivo automáticamente cada vez que guardas.

Incluso así, la pantalla cambia solo después de que se ha cargado el archivo nuevo.

Indicar la ejecución es entregar un archivo

«Ejecuta esto» significa que entregues el archivo al software llamado entorno de ejecución.

Se entrega con una línea como node app.js, y hay programas que llegan a la última línea y terminan y otros que no terminan hasta que los detienes.

QUIZ

Verificación de conocimientos

Responde cada pregunta una a una.

Pregunta 1¿En qué pieza está el archivo cuando solo has guardado el código fuente?

Pregunta 2¿Qué hace la computadora cuando «ejecuta un programa»?

Pregunta 3En el comando node app.js, ¿a qué se refiere el node del principio?