Pila de llamadas

Estructura de la pila de llamadas.
En la figura se ve una pila, creciendo de abajo hacia arriba.
La subrutina DrawSquare (DibujaCuadrado) es llamada y se crea un stack frame para ella (en azul). Luego, DrawSquare llama a la subrutina DrawLine (DibujaLinea), la cual tiene su propio stack frame (en verde).
El stack frame de cada subrutina tiene, en este caso, tres partes: * una dirección de retorno que indica la siguiente dirección a ejecutar después de que termine la subrutina, * los parámetros con que fue llamada la subrutina (que se cargan antes de llamarla), * y un espacio reservado para las variables y las constantes locales de la subrutina.

En ciencias de la computación, una pila de llamadas (en inglés call stack) es una estructura dinámica de datos LIFO, (una pila), que almacena la información sobre las subrutinas activas de un programa de computadora. Esta clase de pila también es conocida como una pila de ejecución, pila de programa, pila de control, pila de función, o pila de tiempo de ejecución, y a menudo se describe simplemente como "la pila". Aunque el mantenimiento de la pila de llamadas es importante para el correcto funcionamiento de la mayoría de programas, los detalles por lo general están ocultos y de forma automática en los lenguajes de alto nivel. Muchos conjuntos de instrucciones de computadora proveen instrucciones especiales para manipular pilas.

Una pila de llamadas es de uso frecuente para varios propósitos relacionados, pero la principal razón de su uso, es seguir el curso del punto al cual cada subrutina activa debe retornar el control cuando termine de ejecutar. (Las subrutinas activas son las que se han llamado pero todavía no han completado su ejecución ni retornando al lugar siguiente desde donde han sido llamadas). Si, por ejemplo, una subrutina DibujaCuadrado llama a una subrutina DibujaLinea desde cuatro lugares diferentes, el código de DibujaLinea debe tener una manera de saber a dónde retornar. Esto es típicamente hecho por un código que, para cada llamada dentro de DibujaCuadrado, pone la dirección de la instrucción luego de la sentencia de llamada particular (la "dirección de retorno") en la pila de llamadas.


From Wikipedia, the free encyclopedia · View on Wikipedia

Developed by Nelliwinne