Funkcja pamięci wirtualnej / stronicowania pozwala jądrze „wirtualizować” pamięć do procesów w przestrzeni użytkownika. Jądro może pobierać strony z pamięci fizycznej i układać je za pomocą stronicowania, aby wyglądały na przylegające do procesu przestrzeni użytkownika.
Limit można ustawić w pamięci procesu przestrzeni użytkownika, a jeśli proces wykracza poza to, pojawia się „błąd strony”, który powoduje wyjątek procesora, który wraca do jądra. Zapobiega to bałaganowaniu programu przestrzeni użytkownika pamięcią przydzieloną do jądra lub innych programów bez zgody jądra.
Zazwyczaj programy przestrzeni użytkownika proszą jądro o rozszerzenie tego limitu za pomocą dobrze zdefiniowanych interfejsów (wywoływanych przez funkcje C malloc()
i free()
na przykład.). Jądro jest odpowiedzialne za śledzenie ilości i ilości pamięci przydzielonej programowi.
Ten mechanizm „błędu strony” może również pozwolić jądrze zamienić stronę, do której proces próbował uzyskać dostęp z dysku z jednego dysku, jeśli jądro jest w stanie przesadzić pamięć (i zarówno Windows, jak i Linux to obsługują), dlatego nazywa się to zamianą. Jeśli dostęp do pamięci był rzeczywiście nieprawidłowy (tzn. Proces próbuje uzyskać dostęp do pamięci, o którą nie poprosił wcześniej), zazwyczaj proces zostanie zabity za pomocą SIGSEGV.
Tak więc „zamiana” jest dodatkową funkcją (w Linuksie możesz ją całkowicie wyłączyć, jeśli chcesz), która zależy od pamięci wirtualnej / stronicowania, ale nie jest wymagana tylko dlatego, że procesor ma pamięć wirtualną / stronicowanie. Pojęcia nie są takie same, ale zamiana zależy od istnienia stronicowania / pamięci wirtualnej.
Ponadto, po dokładniejszym przeczytaniu pytania, „stronicowanie” jest czasem używane jako synomia „zamiany” - ale nigdy nie słyszałem o „zamianie”, co oznacza, że pamięć całego procesu jest zamieniana w porównaniu do „stronicowania”, co oznacza tylko część jest zamieniony.
Ale dlaczego Linux wymaga partycji wymiany? Jeśli pamięć fizyczna jest pełna, niektóre procesy zostaną przeniesione na dysk twardy, a nowy proces zostanie zmapowany z pamięci wirtualnej do pamięci fizycznej.
„Pamięć wirtualna” to pamięć fizyczna, po prostu „odwzorowana”. Sprzęt MMU nie może bezpośrednio mapować na żadnym urządzeniu pamięci masowej. MMU może zgłosić błąd, który informuje jądro, że proces próbował uzyskać dostęp do pamięci, a nie powinien - i jądro może użyć tego mechanizmu, aby zobaczyć, że proces chce odzyskać coś z dysku, który myślał, że jest w pamięci, a następnie wykonać „ zamiana". Chodzi o to, że to system operacyjny decyduje o zapisaniu stron na dysku, aby mógł używać tych stron do innych procesów, a nie sprzętu.