Complementando os colegas:
• Texto: contém as instruções binárias do código executável do
processo (imagem).
• Dados: espaço para as variáveis do processo, declaradas
como globais no programa.
• Heap: memória para alocação sob-demanda durante a execução
– Alocação dinâmica (malloc/free)
• Pilha: memória para alocação:
– De variáveis locais a sub-rotinas (vide chamada de funções);
– Do endereço de retorno de uma sub-rotina.
http://www.inf.ufrgs.br/~johann/sisop1/aula07.threads.pdf
Tornando a questão certa:
O gerenciamento de memória no ambiente Linux envolve a definição de três tipos de segmentos lógicos para cada processo: texto, dados e pilha. Esses segmentos possuem características diferentes, especialmente em relação aos direitos de escrita durante a execução do processo; enquanto os segmentos de dados e pilha são de leitura e escrita, o segmento de texto é do tipo somente leitura.
Agora, pq apenas o segmento de texto é somente leitura? Pq é o único q contém as instruções do código executável; lógico q só pode ser lido, ou seria um caos as instruções sendo executadas e alteradas...na verdade, seria um desastre para o sistema todo.
Quanto aos demais, podem ser alterados à vontade, pois possuem apenas alocação de memória e espaços de variáveis.