-
Não há uma pilha do kernel. Para cada encadeamento, há uma região de memória que é usada como espaço de pilha quando o processo faz uma chamada do sistema. Há também "pilhas de interrupção" separadas, uma por CPU, que são usadas pelo manipulador de interrupções. Essas áreas de memória residem no espaço de endereço do kernel (acima de
0xc0000000
em sua figura. -
Os quadros de pilha (C quadros de tempo de execução, quadro de main, etc.) fazem parte da pilha. Os argumentos do processo (
argv
) e o ambiente são áreas separadas e não fazem parte da pilha. -
A área entre
0x0
e0x08048000
(cerca de 128 MB) não é usada para nada. Originalmente, o i386 System V ABI reservava essa área para a pilha, mas o Linux faz as coisas de maneira diferente. Deixar a área sem uso não desperdiça RAM, apenas espaço de endereçamento, porque a área não está mapeada. Observe que essas informações estão quase totalmente obsoletas agora, pois descrevem como as coisas são feitas na arquitetura x86 de 32 bits. Máquinas x86 de 32 bits são difíceis de encontrar hoje e as distribuições estão eliminando o suporte para elas.