Spróbuję zacząć powoli, a potem połączę to wszystko dla ciebie. To jest tak:
Pamięć wirtualna, jak się powszechnie stosuje, odnosi się do „stronicowania”. Jak sama nazwa wskazuje, stronicowanie przypomina ludzki notatnik.
Kiedy opracowujesz proste sumy lub uczysz się prostych informacji, robisz to wszystko w swojej głowie: wystarczy załadować wszystkie informacje, przetworzyć je i uzyskać odpowiedź. To jest jak komputer ładujący pliki z dysku twardego - ładuje programy lub zdjęcia lub inne informacje, których potrzebuje do pracy w „prawdziwej pamięci” (lub „pamięci fizycznej”) i działa na nich „mózgiem” ( jego procesor).
Jednak gdy uczysz się złożonych informacji lub pracujesz ze złożonymi sumami, możesz nie być w stanie zmieścić wszystkiego w twojej głowie na raz. Czujesz się zdezorientowany, zaczynasz zwalniać, nie utrzymujesz tego wszystkiego naraz i musisz zapomnieć o czymś innym.
Ludzkim rozwiązaniem jest użycie notatnika. Zapisujemy na stronach wszystkie rzeczy, których nie możemy zapamiętać od razu, ale odnosimy się do nich podczas dokonywania sum. Być może nie będziemy w stanie zapamiętać ogromnej listy wyników sprzedaży za ten miesiąc, ale możemy przeglądać strony, uzyskiwać informacje po kolei i przetwarzać każdy z nich. To tak, jakby komputer „stronicował” swoją pamięć - zapisując strony pełne informacji i umieszczając je w „pamięci wirtualnej” do późniejszego wykorzystania, i uświadamiając sobie, że potrzebuje strony, i ładując tę stronę z pamięci wirtualnej do prawdziwej pamięci. W Linuksie i Uniksie miejsce, w którym te strony są przechowywane, nazywane jest dosłownie „plikiem stronicowania”, a strony danych w pamięci są dosłownie nazywane „stronami”. Różne systemy mają różne nazwy dla tych rzeczy, ale ogólna koncepcja jest prawie taka sama.
Tak naprawdę, stronicowanie jest bardzo proste. Wszystkie strony informacji nie mieszczą się w pamięci, więc niektóre strony są umieszczane na dysku i ładowane ponownie później.
Teraz bardziej skomplikowane jest to, że nowoczesne systemy mają funkcję mapowania pamięci i ochrony pamięci, którą zwykle obsługuje ten sam system sprzętowy w komputerze: jednostka zarządzania pamięcią lub MMU.
Na (nowoczesnym) komputerze wielozadaniowym, który może uruchamiać wiele programów jednocześnie i ma funkcję ochrony pamięci, każdy program jest zwykle oddzielony od innych programów działających w tym samym systemie. W ten sposób jeden program nie może zmienić innego programu, po prostu uzyskując dostęp do jego pamięci - MMU fizycznie oddziela przestrzeń adresową jednego programu od przestrzeni adresowej innych programów. Innymi słowy, programy użytkownika nie widzą programów innych użytkowników ani nawet innych programów. Nie widzą „prawdziwej pamięci” - widzą swoją własną „pamięć wirtualną”.
Ta koncepcja izolacji pamięci i koncepcja pliku stronicowania to dwie koncepcyjnie różne rzeczy i prawdopodobnie dlatego jesteś zdezorientowany. Kluczem jest jednak to, że oba działają przy użyciu MMU - jednostki zarządzania pamięcią, która dzieli pamięć na strony i mapuje strony na wirtualną przestrzeń adresową.
Kiedy więc program prosi o pamięć pod określonym „adresem pamięci”, tak naprawdę dzieje się to, że strony pamięci tego programu i odpowiadające im adresy („przestrzeń adresowa” programu) są wyszukiwane, a strona odpowiadająca ten blok pamięci został znaleziony. Tę stronę można albo załadować gdzieś w prawdziwej pamięci, w którym to przypadku program ma dostęp, albo może zostać przeniesiona na dysk. Jeśli jest stronicowany, wywołuje „błąd strony” - dostęp do dysku i strona zostaje załadowana do pamięci. Tak więc program działa nawet wtedy, gdy nie ma wystarczającej ilości pamięci, ale działa WOLNO, jeśli musi używać dysku do uzyskania normalnie bardzo szybkiego dostępu do pamięci.
Teraz, jeśli nie ma wystarczającej ilości miejsca, aby załadować tę stronę do pamięci, oznacza to problem. W takim przypadku niektóre INNE strony, które są już w pamięci, muszą zostać „zamienione” na dysk, aby można było załadować stronę pierwszego programu. Lub mogą być równie stronami z tego samego programu. Czasem jest to widoczne w programach graficznych, na przykład w mocno obciążonych systemach, gdy część obrazu jest ładowana powoli i szybko rysowana, następnie następna część jest ładowana równie powoli i szybko rysowana, a gdy wracasz do pracy z pierwszym po części, to jest powolne PONOWNIE. Dzieje się tak, ponieważ są ładowane, aby nad nimi pracować, a następnie wymieniane, aby można było pracować nad czymś innym. Oczywiście jest to bardzo powolny sposób pracy, a tak naprawdę potrzebujesz więcej PRAWDZIWEJ pamięci.