Qual é a representação física da pilha e da pilha?


9

Eu posso entender facilmente como .bss e o código têm representações físicas no processador, que possui um banco de memória para as instruções que um contador de programa pode contar e o bss (símbolo de início do bloco) são apenas dados globais. Mas há a pilha para variáveis ​​locais e a pilha para memória dinâmica. Como essas coisas são colocadas no circuito fisicamente?

Respostas:


6

Nota: Refiro-me principalmente ao x86 porque estou mais familiarizado com ele e está amplamente documentado:

No x86 (e na maioria das outras arquiteturas), a pilha reside apenas na memória, como todo o resto. O processador manipula a pilha através de um ponteiro, que geralmente é armazenado em um registro (o ponteiro da pilha). As instruções push e pop alteram o valor do ponteiro da pilha, alterando onde está a parte superior da pilha.

A pilha é uma abstração de software . Como o nome indica, é apenas um pedaço de RAM que um alocador divide e distribui ponteiros. Em termos físicos, o heap não parece diferente de qualquer outra parte da RAM.

A paginação e a segmentação estão tangencialmente relacionadas à pilha, no entanto. Eles são principalmente relacionados à multitarefa, onde os processos não podem modificar a RAM que eles não possuem explicitamente.


3
A paginação é mais sobre gerenciamento de memória em geral - a unidade na qual a memória física é mapeada para um endereço lógico - do que apenas restrições de acesso, embora as últimas tendam a ser aplicadas como um recurso adicional da unidade de gerenciamento de memória.
18712 Chris Stratton

4

Logicamente falando, a pilha e o heap geralmente são apenas memória; no nível da implementação, esperamos que sejam servidos principalmente a partir do cache. Na maioria dos sistemas, eles chegam lá dinamicamente por meio de algoritmos de armazenamento em cache, mas existem sistemas que suportam localização explícita no cache ou outra memória mais rápida que o normal e provavelmente também aqueles que suportam deixar dicas de que dados específicos devem ter prioridade preferencial para posicionamento lá, como licenças de espaço.

Espera-se que o projeto de geradores de software de baixo nível e código de compilador leve em consideração a organização do acesso a dados, o que provavelmente resultará em uma boa utilização do cache, em comparação com constantes falhas no cache.

Alguns processadores têm um registro de endereço de retorno, que funciona como uma espécie de cache de pilha explícita de um nível profundo (provavelmente existem aqueles com várias pilhas de hardware profundas também, apesar de exemplos não virem à mente).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.