Lección 10: Qué ocurre cuando ejecutas un programa — proceso, memoria y el sistema operativo
Llegamos a la última lección, y también al momento en que todo se conecta. Construimos un ejecutable — pero ¿qué ocurre exactamente cuando haces clic para ejecutarlo? El cargador del sistema operativo crea un proceso (Process): una instancia en ejecución del programa, con su propio espacio de memori
Cuando ejecutas un programa, el sistema operativo crea para él un 'proceso' — una copia viva en memoria con su propio espacio. Tiene una pila para las llamadas a funciones y un montículo para el espacio que se solicita sobre la marcha. Cuando el programa quiere hablar con el hardware, se lo pide al sistema operativo.
- Proceso (Process)
- Una instancia en ejecución de un programa, con su propio espacio de direcciones privado y estado, gestionada por el sistema operativo.
- Cargador (Loader)
- Parte del sistema operativo que copia un ejecutable a la memoria y crea un proceso a partir de él.
- Espacio de direcciones (Address Space)
- El rango de direcciones de memoria que un proceso ve como propio; cada proceso recibe un rango privado gracias a la memoria virtual.
- Segmento de código y segmento de datos
- El segmento de código contiene las instrucciones (generalmente de solo lectura); el segmento de datos contiene variables globales y constantes.
- Pila (Stack)
- Una región de memoria de marcos de llamadas a funciones — variables locales y direcciones de retorno; crece hacia abajo.
- Montículo (Heap)
- Una región de memoria para la asignación dinámica en tiempo de ejecución (malloc/new); crece hacia arriba según se necesite.
- Marco de pila (Stack Frame)
- El registro que se apila en la pila en cada llamada a función: sus variables locales y la dirección de retorno.
- Llamada al sistema (System Call)
- Una solicitud que un programa hace al sistema operativo para realizar una acción que requiere acceso al hardware, como una salida o una entrada.
- Memoria virtual (Virtual Memory)
- Un mecanismo en el que cada proceso recibe un espacio de direcciones privado, como si toda la memoria fuera suya, mapeado a la memoria física.
- Cambio de contexto (Context Switch)
- Guardar el estado del proceso en ejecución y cargar el de otro proceso, para que un solo CPU pueda atender a muchos procesos.