Como dois ou mais segmentos compartilham memória no heap que eles alocaram?

Como o título diz, como dois ou mais threads compartilham memória no heap que eles alocaram? Eu estive pensando sobre isso e não consigo descobrir como eles podem fazer isso. Aqui está o meu entendimento do processo, presumivelmente estou errado em algum lugar.

Qualquer encadeamento pode adicionar ou remover um determinado número de bytes no heap, fazendo uma chamada de sistema que retorna um ponteiro para esses dados, presumivelmente gravando em um registrador que o encadeamento possa copiar para a pilha. Portanto, dois segmentos A e B podem alocar a quantidade de memória que quiserem. Mas não vejo como o thread A poderia saber onde está localizada a memória que o segmento B alocou. Também não sei como cada thread pode saber onde a pilha do outro thread está localizada. Programas multi-thread compartilham o heap e, acredito, podem acessar a pilha um do outro, mas não consigo descobrir como.

Tentei pesquisar essa questão, mas encontrei apenas versões específicas de idiomas que abstraem os detalhes.

Edit: Eu estou tentando não ser linguagem ou OS específico, mas estou usando o Linux e estou olhando para ele de uma perspectiva de baixo nível, montagem eu acho.

questionAnswers(4)

yourAnswerToTheQuestion