next up previous
Next: Los procesos en UNIX Up: Ficheros ejecutables Previous: El fichero ejecutable binario

Imagen de un proceso

Cuando un usuario solicita ejecutar un fichero binario, el sistema operativo carga en una zona de memoria independiente del espacio de direcciones las áreas de código y de datos del ejecutable. A continuación añade un área extra de memoria que contiene la siguiente información (ver figura 1.3):
1.
bss: es un área de memoria reservada para aquellas variables no han sido inicializadas en tiempo de compilación y si en tiempo de ejecución. Su tamaño se conoce en tiempo de compilación y por eso size puede calcularlo.

2.
heap: espacio de direcciones de memoria reservada para variables dinámicas, es decir, creadas en tiempo de ejecución y que pueden variar en número y tamaño. Por ejemplo, cuando cuando asignamos memoria a un array dinámico con la instrucción malloc() del lenguaje C, reservamos memoria del heap. Normalmente el heap crece desde direcciones decrecientes a direcciones crecientes, aunque esto para el programador es irrelevante.

3.
stack: es el área de memoria dedicada a gestionar las llamadas y retornos de las funciones invocadas. Típicamente, cuando llamamos recursivamente a una función indefinidamente y se produce un fallo de segmentación (nuestro proceso escribe en una dirección de memoria que no le ha sido asignada) es que hemos llenado la memoria dinámica que fue asignada con el stack. Normalmente el stack crece desde direcciones crecientes a direcciones decrecientes.


  
Figura 1.3: Estructura de un proceso.
\begin{figure}\centerline{\epsfig{figure=basico/estructura.eps,width=8 cm}}
\end{figure}

Pero el ejecutable cargado en memoria de esta manera no es suficiente. El sistema operativo tiene que multiplexar la CPU entre todos los procesos que se ejecutan en la computadora. Para ello necesita añadir información extra que le permita asignar y retirar la CPU a un proceso. El núcleo del sistema operativo inserta al ejecutable un entorno que contiene esa información, típicamente: contenido de los registros de la CPU, directorio de trabajo, estado de los ficheros abiertos en el instante en el que perdió la atención de la CPU, recursos consumidos, etc. A la combinación de ejecutable antes descrita y el entorno se le denomina imagen. Esta estructura si contiene toda la información necesaria para que un proceso se ejecute creyendo poseer todos los recursos del ordenador.


next up previous
Next: Los procesos en UNIX Up: Ficheros ejecutables Previous: El fichero ejecutable binario
Vicente González Ruiz
1998-07-13