¿Cuál es la representación física del montón y la pila?

9

Puedo entender fácilmente cómo .bss y el código tienen representaciones físicas en el procesador que tiene un banco de memoria para las instrucciones que el contador de un programa puede contar y el bss (símbolo de inicio de bloque) es solo datos globales. Pero luego está la pila para las variables locales y el montón para la memoria dinámica. ¿Cómo se ponen estas cosas en el circuito físicamente?

    

2 respuestas

6

Nota: me refiero principalmente a x86 porque estoy más familiarizado con él y está ampliamente documentado:

En x86 (y en la mayoría de las otras arquitecturas) la pila es solo reside en la memoria como todo lo demás. El procesador manipula la pila a través de un puntero, que generalmente se almacena en un registro (el puntero de la pila). Las instrucciones push y pop cambiarán el valor del puntero de la pila, cambiando la ubicación de la parte superior de la pila.

El montón es una abstracción de software . Como su nombre lo indica, es solo una cantidad de RAM a la que un asignador corta y reparte los punteros. En términos físicos, el montón no se ve diferente a ninguna otra parte de la RAM.

Sin embargo, la paginación y la segmentación están relacionadas tangencialmente con el montón. La mayoría de ellos tienen que ver con tareas múltiples, donde los procesos no pueden modificar RAM que no poseen explícitamente.

    
respondido por el Mathew Hall
4

Hablando de forma lógica, la pila y el montón suelen ser solo memoria; sin embargo, en un nivel de implementación, se espera que se sirvan principalmente desde el caché. En la mayoría de los sistemas, llegan dinámicamente a través de algoritmos de almacenamiento en caché, pero ha habido sistemas que admiten la ubicación explícita en la memoria caché u otra memoria más rápida de lo normal, y probablemente también aquellos que admiten dejar en claro que los datos en particular deben tener prioridad preferencial para la ubicación allí como el espacio lo permite.

El diseño de software de bajo nivel y los generadores de código del compilador se espera que tenga en cuenta la organización del acceso a los datos, lo que probablemente resulte en una buena utilización de la memoria caché, en comparación con la falta constante de memoria caché.

Algunos procesadores tienen un registro de dirección de retorno, que funciona como una especie de caché de pila explícita de un solo profundidad (probablemente también haya varios con pilas de hardware profundas, aunque no se me ocurren ejemplos).

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas