Cómo la pila JVM, el montón y los hilos se asignan a la memoria física o al sistema operativo

El libro del compilador (El libro del dragón) explica que los tipos de valor se crean en la pila, y los tipos de referencia se crean en el montón.

Para Java, JVM también contiene el montón y la pila en el área de datos de tiempo de ejecución. Los objetos y las matrices se crean en el montón, los marcos de método se empujan para apilar. Todos los subprocesos comparten un montón, mientras que cada subproceso tiene su propia pila. El siguiente diagrama muestra esto:

Más sobreÁreas de datos en tiempo de ejecución de Java.

Lo que no entiendo es que, dado que JVM es esencialmente un software, ¿cómo se asignan esas pilas y subprocesos de JVM a la máquina física?

Apreciaría si alguien pudiera comparar esos conceptos entre Java y C ++. Porque Java se ejecuta en JVM, pero C ++ no lo hace.

Para hacer esta pregunta más precisa, quiero saber lo siguiente:

Comparando con Java, ¿qué aspecto tiene el área de datos en tiempo de ejecución de C ++? Una imagen sería útil, no puedo encontrar una buena imagen como la JVM anterior.¿Cómo se asignan al sistema operativo el montón, la pila, los registros y los subprocesos de JVM? o debo preguntar cómo se asignan a la máquina física?¿Es cierto que cada subproceso de JVM es simplemente un subproceso de usuario y se asigna a kernal de alguna manera? (hilo de usuario vs hilo del kernel)

Actualizar: Dibujo una imagen para la memoria física en tiempo de ejecución de un proceso.

Respuestas a la pregunta(1)

Su respuesta a la pregunta