Como pilha, heap e encadeamentos da JVM são mapeados para memória física ou sistema operacional

O livro de compiladores (O livro do dragão) explica que os tipos de valor são criados na pilha e os tipos de referência são criados no heap.

Para Java, a JVM também contém heap e pilha na área de dados de tempo de execução. Objetos e matrizes são criados no heap, os quadros de métodos são colocados na pilha. Um heap é compartilhado por todos os threads, enquanto cada thread tem sua própria pilha. O diagrama a seguir mostra isso:

Mais sobreÁreas de dados em tempo de execução Java.

O que não entendo é que, como a JVM é essencialmente um software, como esses heap, pilha e encadeamentos da JVM são mapeados para a máquina física?

Eu apreciaria se alguém pudesse comparar esses conceitos entre Java e C ++. Porque o Java é executado na JVM, mas o C ++ não.

Para tornar essa questão mais precisa, quero saber o seguinte:

Comparando com o Java, como é a área de dados de tempo de execução do C ++? Uma imagem seria útil, não consigo encontrar uma boa imagem como a da JVM acima.Como o heap, pilha, registradores e encadeamentos da JVM são mapeados para o sistema operacional? ou eu deveria perguntar como eles são mapeados para a máquina física?É verdade que cada encadeamento da JVM é simplesmente um encadeamento de usuários e é mapeado para o kernal de alguma forma? (thread do usuário vs thread do kernel)

Atualizar: Eu desenho uma imagem para a memória física em tempo de execução de um processo.

questionAnswers(1)

yourAnswerToTheQuestion