Jaka jest różnica między "pamięcią wirtualną" a "przestrzenią wymiany"?

Czy ktoś może mi wyjaśnić, jaka jest różnica między pamięcią wirtualną A przestrzenią wymiany?

A dlaczego mówimy, że dla maszyny 32-bitowej maksymalna dostępna pamięć wirtualna to 4 GB?

Author: codeforester, 2011-02-11

5 answers

Na superużytkowniku jest doskonała eksploracja pamięci wirtualnej.

Mówiąc najprościej, pamięć wirtualna jest kombinacją pamięci RAM i miejsca na dysku, z którego mogą korzystać uruchomione procesy.

Przestrzeń wymiany to część pamięci wirtualnej, która znajduje się na dysku twardym, używana, gdy pamięć RAM jest pełna.

Jeśli chodzi o to, dlaczego procesor 32bit jest ograniczony do 4GB pamięci wirtualnej, jest dobrze zaadresowany tutaj :

Z definicji 32-bitowy procesor wykorzystuje 32 bity w odniesieniu do lokalizacji z każdy bajt pamięci. 2^32 = 4.2 billion, czyli adres pamięci to 32 bity długości może odnosić się tylko do 4,2 miliarda unikalnych lokalizacji (czyli 4 GB).

 114
Author: Viral Shah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 10:04:20

Istnieje pewne zamieszanie w odniesieniu do terminu Pamięć wirtualna, a w rzeczywistości odnosi się on do następujących dwóch bardzo różnych pojęć

  1. Używanie stron dyskowych do rozszerzenia pojęciowej ilości fizycznej pamięci komputera - poprawnym terminem na to jest w rzeczywistości stronicowanie
  2. abstrakcja używana przez różne OS / procesory do tworzenia iluzji każdego procesu działającego w oddzielnej, sąsiadującej przestrzeni adresowej.

Swap space, OTOH, to nazwa części dysku służy do przechowywania dodatkowych stron pamięci RAM, gdy nie są używane.

Ważne jest, aby uświadomić sobie, że pierwszy jest przejrzyście możliwy dzięki obsłudze sprzętu i systemu operacyjnego tego drugiego.

Aby lepiej zrozumieć to wszystko, należy rozważyć, w jaki sposób" pamięć wirtualna " (jak w definicji 2) jest obsługiwana przez procesor i system operacyjny.

Załóżmy, że masz wskaźnik 32-bitowy (punkty 64-bitowe są podobne, ale używają nieco innych mechanizmów). Po włączeniu "pamięci wirtualnej", procesor uważa, że wskaźnik ten składa się z trzech części.

  • najwyższe 10 bitów to wpis do katalogu stron
  • następujące 10 bitów jest wpisem Strony tabeli
  • Ostatnie 12 bitów składa się na przesunięcie strony

Teraz, gdy procesor próbuje uzyskać dostęp do zawartości wskaźnika, najpierw przegląda Katalog Stron table-tabelę składającą się ze 1024 wpisów ( w architekturze X86 której lokalizacja jest wskazywana na przez rejestr CR3). 10-bitowy wpis katalogu stron jest indeksem w tej tabeli, który wskazuje na fizyczne położenie tabeli stron . To z kolei jest kolejną tabelą 1024 wpisów, z których każdy jest wskaźnikiem w pamięci fizycznej i kilkoma ważnymi bitami sterującymi. (Wrócimy do nich później). Po znalezieniu strony, Ostatnie 12 bitów jest używane do znalezienia adresu na tej stronie.

Istnieje wiele więcej szczegółów (TLBs, duże strony, PAE, selektory, strona Ochrony), ale krótkie wyjaśnienie powyżej oddaje istotę rzeczy.

Używając tego mechanizmu tłumaczenia, System Operacyjny może używać innego zestawu fizycznych stron dla każdego procesu, dając w ten sposób każdemu procesowi iluzję posiadania całej pamięci dla siebie (ponieważ każdy proces otrzymuje swój własny katalog stron)

Oprócz tej pamięci wirtualnej System Operacyjny może również dodać koncepcjęstronicowania . Jeden z bitów kontrolnych omówionych wcześniej pozwala określić, czy dany wpis jest "obecny". Jeśli nie jest obecny, próba uzyskania dostępu do tego wpisu spowodowałaby wyjątek Page Fault . System Operacyjny może przechwycić ten wyjątek i odpowiednio działać. OSs obsługujący swapping/stronicowanie może zatem zdecydować się na załadowanie strony z przestrzeni wymiany, naprawić tabele tłumaczeń, a następnie ponownie wydać dostęp do pamięci.

W tym miejscu oba terminy łączą się, system operacyjny obsługujący pamięć wirtualną i stronicowanie może dać procesom iluzję posiadania większej ilości pamięci niż faktycznie obecna przez stronicowanie (Zamiana) strony w obszarze wymiany i poza nim.

Co do ostatniego pytania (dlaczego mówi się, że procesor 32 bitowy jest ograniczony do 4GB pamięci wirtualnej). Odnosi się to do "pamięci wirtualnej" definicji 2 i jest bezpośrednim wynikiem rozmiaru wskaźnika. Jeśli procesor może używać tylko 32-bitowych wskaźników, masz tylko 32-bitowy do wyrażania różnych adresów, daje to 2^32 = 4GB adresowalnej pamięci.

Mam nadzieję, że to wszystko będzie jaśniejsze.

 61
Author: Yonatan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-21 07:18:17

IMHO używanie pojęcia przestrzeni wymiany jako ekwiwalentu pamięci wirtualnej jest strasznie mylące. VM jest pojęciem o wiele bardziej ogólnym niż przestrzeń wymiany. Między innymi, VM umożliwia procesom odwoływanie się do adresów wirtualnych podczas wykonywania, które są tłumaczone na adresy fizyczne z obsługą sprzętu i tabel stron. W ten sposób procesy nie dotyczą ilości fizycznej pamięci systemu ani miejsca, w którym instrukcja lub dane są rzeczywiście rezydentne w pamięci fizycznej hierarchia. VM umożliwia to mapowanie. Pozycja odniesienia (instrukcja lub DANE) może być rezydentna w L1, L2 lub RAM, lub wreszcie na dysku, w którym to przypadku jest ładowana do pamięci głównej.

Swap space jest to po prostu miejsce na wtórnej pamięci, gdzie strony są przechowywane, gdy są nieaktywne. Jeśli nie ma wystarczającej ilości pamięci RAM, System Operacyjny może zdecydować o zamianie stron procesu, aby zrobić miejsce dla innych stron procesu. Procesor nigdy nie wykonuje instrukcji ani odczytu/zapisu danych bezpośrednio z programu swap miejsce.

Zauważ, że możliwe byłoby posiadanie przestrzeni wymiany w systemie bez maszyny wirtualnej. Czyli procesy, które mają bezpośredni dostęp do adresów fizycznych, nadal mogą mieć ich części na dysk.

 12
Author: SavorALinux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-06 02:50:49

Choć wątek jest dość stary i już został odebrany. Nadal chciałbym podzielić się tym linkiem, ponieważ jest to najprostsze wyjaśnienie, jakie do tej pory znalazłem. Poniżej link zawiera diagramy dla lepszej wizualizacji.

Kluczowa różnica: Pamięć wirtualna jest abstrakcją pamięci głównej. Rozszerza dostępną pamięć komputera poprzez przechowywanie nieaktywnych części pamięci RAM na dysku. Gdy zawartość jest wymagana, pobiera ją z powrotem do pamięci RAM. Zamiana pamięci lub swap przestrzeń jest częścią dysku twardego, który jest używany do pamięci wirtualnej. Tak więc oba są również używane zamiennie.

Pamięć wirtualna jest cicha inaczej niż pamięć fizyczna. Programiści uzyskują bezpośredni dostęp do pamięci wirtualnej, a nie fizycznej. Pamięć wirtualna jest abstrakcją pamięci głównej. Służy do ukrywania informacji o rzeczywistej fizycznej pamięci systemu. Rozszerza dostępną pamięć komputera, przechowując nieaktywne części zawartości pamięci RAM na dysk. Gdy zawartość jest wymagana, pobiera ją z powrotem do pamięci RAM. Pamięć wirtualna tworzy iluzję całej przestrzeni adresowej z adresami zaczynającymi się od zera. Jest preferowany głównie ze względu na swoją funkcję optymalizacji, dzięki której zmniejsza wymagania dotyczące przestrzeni. Składa się z dostępnej pamięci RAM i miejsca na dysku.

Pamięć wymiany jest zwykle nazywana przestrzenią wymiany. Przestrzeń wymiany odnosi się do części pamięci wirtualnej, która jest zarezerwowana jako miejsce tymczasowego przechowywania. Przestrzeń wymiany jest wykorzystywana gdy dostępna pamięć RAM nie jest w stanie spełnić wymagań pamięci systemu. Na przykład w systemie pamięci Linux jądro lokalizuje każdą stronę w pamięci fizycznej lub w przestrzeni wymiany. Jądro utrzymuje również tabelę, w której przechowywane są informacje dotyczące wymienianych stron i stron w pamięci fizycznej. Strony, które nie były dostępne od dłuższego czasu, są wysyłane do obszaru przestrzeni wymiany. Proces ten nazywany jest wymianą. W przypadku, gdy wymagana jest ta sama strona, jest Zamiana w pamięci fizycznej poprzez zamianę innej strony. W ten sposób można stwierdzić, że pamięć wymiany i pamięć wirtualna są ze sobą połączone, ponieważ pamięć wymiany jest używana do techniki pamięci wirtualnej.

Difference-between-virtual-memory-and-swap-memory

 6
Author: ram619,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

"Pamięć wirtualna" jest terminem ogólnym. W systemie Windows nazywany jest Stronicowaniem lub stronicowaniem. W Linuksie nazywa się to Swapem.

 0
Author: Hemanth Kumar R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-29 19:23:34