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.