Sposób, w jaki stos JVM, sterta i wątki są mapowane do pamięci fizycznej lub systemu operacyjnego

Książka kompilatora (The dragon book) wyjaśnia, że ​​na stosie tworzone są typy wartości, a na stercie tworzone są typy referencyjne.

W przypadku Java JVM zawiera również sterty i stos w obszarze danych środowiska wykonawczego. Obiekty i tablice są tworzone na stercie, ramki metod są wypychane do stosu. Jedna sterta jest współdzielona przez wszystkie wątki, a każdy wątek ma swój własny stos. Poniższy diagram pokazuje to:

Więcej na tematObszary danych wykonawczych Java.

Nie rozumiem jednak, że ponieważ JVM jest zasadniczo oprogramowaniem, w jaki sposób te sterty, stos i wątki JVM są mapowane na fizyczną maszynę?

Byłbym wdzięczny, gdyby ktoś mógł porównać te koncepcje między Javą a C ++. Ponieważ Java działa na JVM, ale C ++ nie.

Aby uczynić to pytanie bardziej precyzyjnym, chcę wiedzieć, co następuje:

Porównanie z Javą Jak wygląda obszar danych czasu wykonywania C ++? Obraz byłby pomocny, nie mogę znaleźć dobrego zdjęcia, takiego jak JVM powyżej.W jaki sposób sterty, stos, rejestry i wątki maszyny JVM są mapowane do systemu operacyjnego? lub powinienem zapytać, jak są mapowane na fizyczną maszynę?Czy to prawda, że ​​każdy wątek JVM jest po prostu wątkiem użytkownika i jest w jakiś sposób mapowany na kernal? (wątek użytkownika a wątek jądra)

Aktualizacja: Rysuję obraz dla fizycznej pamięci runtime procesu.

questionAnswers(1)

yourAnswerToTheQuestion