2015-10-28 17 views
5

Badałem tematy związane z zarządzaniem pamięcią. Zastanawiam się, czy mam rozumieć to poprawnie:Czy konkretny adres wirtualny jest właściwy?

  • wskaźnik (wirtualny) adres jest proces specyficzny
  • różne procesy mogą mieć wskaźniki z tymi samymi adresami, ale te wskaźniki są tłumaczone na różne adresy fizyczne

Czy mam rację co do tych stwierdzeń? Jeśli tak, czy dotyczą one architektur x86, x86-64 i ARMv7, ARMv8?

+0

Czy przeczytałeś odpowiednie strony wiki na temat [procesów] (https://en.wikipedia.org/wiki/Process_%28computing%29), [pamięci wirtualnej] (https://en.wikipedia.org/wiki/Virtual_memory), [wirtualna przestrzeń adresowa] (https://en.wikipedia.org/wiki/Virtual_address_space) ....? –

+0

@BasileStarynkevitch Cóż, nie wszystkie z nich. Jednak nie jestem pewien, czy zrozumiałem to poprawnie. Spójrz na odpowiedzi, obaj mówią coś przeciwnego. A jeśli ktoś odpowie na pytanie, to on/ona twierdzi, że zna ten temat. Mamy teraz dwie prawdy :) – kravemir

Odpowiedz

8

Dobrze wyjątkiem:

różne procesy mogą mieć wskaźniki z tymi samymi adresami, ale te wskaźniki są tłumaczone na różne adresy fizyczne

gdy jest to przypadek ogólny, oczywiście różnych procesów może udostępnić zmapowane strony (zajrzyj do pamięci współdzielonej), a następnie wskaźniki mogą wskazać te same dane, biorąc pod uwagę, że strony są odwzorowywane na te same lokalizacje w wirtualnej przestrzeni adresowej.

Ale tak, to poprawne zrozumienie.

+3

Pamięć współdzielona może zostać zmapowana na różne adresy w różnych procesach. –

+0

Oczywiście, może, ale nie musi. Na przykład odwzorowanie wspólnych bibliotek ... Poprawię brzmienie. –

+0

Dzięki. Tak więc, mała poprawka oświadczenia byłaby: ** może ** zostać przetłumaczona :) – kravemir

Powiązane problemy