Nie jestem pewien, czy pamięć wirtualna jest tak naprawdę składnikiem fizycznym, czy też ludzie określają ją jako metodę optymalizacji procesów pamięci.
Nie jestem pewien, czy pamięć wirtualna jest tak naprawdę składnikiem fizycznym, czy też ludzie określają ją jako metodę optymalizacji procesów pamięci.
Odpowiedzi:
Pamięć wirtualna to koncepcja.
Jak mówi Anrieff, systemy obsługujące pamięć wirtualną będą miały MMU, które faktycznie obsługuje mapowanie. Procesor użyje adresów wirtualnych, którymi może być dowolny adres w 32 lub 64-bitowej przestrzeni adresowej, którą obsługuje. Adresy wirtualne nie są ograniczone ilością pamięci fizycznej.
Jak wspomniałem w moim komentarzu, pamięć wirtualna nie musi być mapowana na nic. W grę wchodzą dwa zestawy tabel:
z MMU tablice stron , które mogą odwzorowywać do rzeczywistej pamięci fizycznej lub nie w zależności od „obecnego” bit. Możesz mieć strony, które nie są „obecne”; MMU nie wie ani nie dba o to, co może zawierać, ale nie jest odwzorowany na rzeczywistą fizyczną pamięć DRAM. Jeśli spróbujesz uzyskać dostęp do jednego z nich, system generuje błąd strony w systemie operacyjnym.
system operacyjny śledzi przydział pamięci dla procesów i siebie oraz bierze odpowiedzialność za obsługę błędów stron. Może zdecydować, co zrobić z nieobecnymi stronami, gdy proces, który uzyskał dostęp do pamięci, jest wstrzymany. Możliwe opcje to:
Zamień: strona jest zamieniona. Przydziel trochę prawdziwej pamięci DRAM i wczytaj z niej dysk, a następnie wróć do procesu.
IO odwzorowane w pamięci: podobne, ale odczyt z określonego pliku.
Przestrzeń PCI / AGP: żądanie przesyła się przez magistralę do np. GPU zamiast do pamięci głównej.
Zeros: albo system operacyjny utrzymuje gotową wstępnie zerowaną pamięć DRAM, albo przestaje zapisywać zera na stronie przed przekazaniem jej tobie.
Nieprawidłowy: wreszcie całkowicie możliwe jest, że system operacyjny w ogóle nie wróci i po prostu zabije proces, który poprosił o tę stronę. Typowym przykładem jest „overcommit” pamięci systemu Linux: procesy mogą żądać i przydzielać więcej pamięci niż dostępna pamięć DRAM + przestrzeń wymiany. Jest w porządku, o ile go nie używają. Jeśli oni nie używają go, a system zabraknie pamięci rzeczywistej, rozpocznie proces zabijania w celu odzyskania systemu. Inne sytuacje kryzysowe mogą obejmować zmapowane we / wy pamięci do pliku w sieci, który zniknął, lub zamianę dysku, który uległ awarii.
Możesz celowo przydzielić nieużywaną stronę (opcja mmap PROT_NONE w systemie Linux). Jest to czasami przydatne do znajdowania określonych rodzajów błędów.