Pamięć wirtualna to obszar pamięci wtórnej systemu komputerowego (taki jak dysk twardy lub dysk półprzewodnikowy), który zachowuje się tak, jakby był częścią pamięci RAM lub pamięci podstawowej systemu.
W zasadzie dane potrzebne do uruchamiania aplikacji są przechowywane w pamięci RAM, gdzie mogą być szybko dostępne dla procesora. Jednak gdy uruchamiane są duże aplikacje lub gdy wiele aplikacji działa jednocześnie, pamięć RAM systemu może się zapełnić.
Aby obejść ten problem, niektóre dane przechowywane w pamięci RAM, które nie są aktywnie wykorzystywane, mogą zostać tymczasowo przeniesione do pamięci wirtualnej (która fizycznie znajduje się na dysku twardym lub innym urządzeniu pamięci masowej). To zwalnia miejsce w pamięci RAM, które może być wykorzystane do przechowywania danych, do których system musi uzyskać natychmiastowy dostęp.
Poprzez zamianę danych między pamięcią RAM a pamięcią wirtualną, gdy nie są one potrzebne i z powrotem z pamięci wirtualnej do RAM, gdy są potrzebne, system może nadal działać płynnie z dużo mniejszą ilością fizycznej pamięci RAM niż wymagałby w przeciwnym razie.
Pamięć wirtualna umożliwia systemowi uruchamianie większych aplikacji lub uruchamianie większej liczby aplikacji w tym samym czasie bez wyczerpania pamięci RAM. Konkretnie, system może działać tak, jakby jego całkowite zasoby pamięci RAM były równe ilości fizycznej pamięci RAM plus ilość pamięci wirtualnej.
- Dlaczego potrzebna jest pamięć wirtualna?
- Pamięć wirtualna vs. pamięć fizyczna
- Jak działa pamięć wirtualna?
- Jak zwiększyć pamięć wirtualną w systemie
- Typy pamięci wirtualnej: Stronicowanie i Segmentacja
- Stronicowanie pamięci wirtualnej
- Segmentacja pamięci wirtualnej
- Wady i zalety pamięci wirtualnej
- Zalety pamięci wirtualnej
- Disadvantages of Virtual Memory
Dlaczego potrzebna jest pamięć wirtualna?
Pamięć wirtualna została opracowana, gdy fizyczna pamięć RAM była bardzo droga, a pamięć RAM jest nadal droższa w przeliczeniu na gigabajt niż nośniki pamięci, takie jak dyski twarde i dyski półprzewodnikowe. Z tego powodu znacznie mniej kosztowne jest użycie kombinacji fizycznej pamięci RAM i pamięci wirtualnej niż wyposażenie systemu komputerowego w większą ilość pamięci RAM.
Ponieważ użycie pamięci wirtualnej (lub zwiększenie pamięci wirtualnej) nie wiąże się z dodatkowymi kosztami finansowymi (ponieważ wykorzystuje istniejącą przestrzeń dyskową), oferuje sposób na wykorzystanie przez komputer większej ilości pamięci, niż jest fizycznie dostępna w systemie.
Kolejnym kluczowym czynnikiem przemawiającym za użyciem pamięci wirtualnej jest to, że wszystkie systemy komputerowe mają ograniczenie (dyktowane przez sprzęt i oprogramowanie) na ilość fizycznej pamięci RAM, która może być zainstalowana. Korzystanie z pamięci wirtualnej pozwala systemowi nadal działać poza tymi fizycznymi limitami RAM.
Pamięć wirtualna vs. pamięć fizyczna
Ponieważ pamięć RAM jest droższa niż pamięć wirtualna, wydawać by się mogło – wszystkie rzeczy są równe – że komputery powinny być wyposażone w jak najmniej pamięci RAM i jak najwięcej pamięci wirtualnej, jak to możliwe.
Ale w rzeczywistości charakterystyka pamięci wirtualnej jest inna niż pamięci fizycznej. Kluczowa różnica między pamięcią wirtualną a fizyczną polega na tym, że pamięć RAM jest znacznie szybsza niż pamięć wirtualna.
Więc system z 2 GB fizycznej pamięci RAM i 2 GB pamięci wirtualnej nie będzie oferował takiej samej wydajności jak podobny system z 4 GB fizycznej pamięci RAM. Aby zrozumieć dlaczego, konieczne jest zrozumienie jak działa pamięć wirtualna.
Jak działa pamięć wirtualna?
Gdy aplikacja (w tym system operacyjny) jest uruchomiona, przechowuje lokalizację wątków programu i innych danych pod adresem wirtualnym, podczas gdy dane są faktycznie przechowywane pod adresem fizycznym w pamięci RAM. Jeśli później ta przestrzeń RAM jest pilniej potrzebna innemu procesowi, to dane mogą być wymieniane z RAM do pamięci wirtualnej.
Odpowiedzialność za śledzenie wszystkich tych danych, gdy są one wymieniane między pamięcią fizyczną a wirtualną, spada na menedżera pamięci komputera. Menedżer pamięci utrzymuje tabelę, która mapuje adresy wirtualne używane przez system operacyjny i aplikacje na adresy fizyczne, w których dane są faktycznie przechowywane. Gdy dane są zamieniane między pamięcią RAM a wirtualną, tabela jest aktualizowana, tak aby dany adres wirtualny zawsze wskazywał na właściwą lokalizację fizyczną.
Komputer może uruchamiać tylko wątki i manipulować danymi, które są przechowywane w pamięci RAM, a nie w pamięci wirtualnej. A zamiana danych, które są potrzebne w pamięci RAM zajmuje niebagatelną ilość czasu. W związku z tym, wynika z tego, że korzystanie z pamięci wirtualnej wiąże się z uderzeniem wydajności.
Innymi słowy, system z 4 GB RAM będzie generalnie oferował wyższą wydajność niż system z 2 GB RAM i 2 GB pamięci wirtualnej z powodu uderzenia wydajności spowodowanego przez swapowanie, i z tego powodu mówi się, że pamięć wirtualna jest wolniejsza niż RAM.
Jednym z potencjalnych problemów z pamięcią wirtualną jest to, że jeśli ilość obecnej pamięci RAM jest zbyt mała w porównaniu do ilości pamięci wirtualnej, wtedy system może skończyć się spędzaniem dużej części swoich zasobów procesora na swapowaniu danych tam i z powrotem. W międzyczasie, wydajność użytecznej pracy prawie się zatrzymuje – proces znany jako thrashing.
Aby zapobiec thrashingowi, zwykle konieczne jest zmniejszenie liczby aplikacji uruchamianych jednocześnie lub po prostu zwiększenie ilości pamięci RAM w systemie.
Systemy operacyjne, takie jak większość wersji Windows, generalnie zalecają, aby użytkownicy nie zwiększali ilości pamięci wirtualnej powyżej 1,5-krotności ilości fizycznej pamięci RAM. Tak więc system z 4 GB RAM powinien mieć pamięć wirtualną o pojemności nie większej niż 6 GB.
Aby zminimalizować spadek wydajności spowodowany wymianą między pamięcią fizyczną a wirtualną, najlepiej jest używać najszybszego urządzenia pamięci masowej podłączonego do systemu w celu hostowania pamięci wirtualnej i umieszczania obszaru pamięci wirtualnej na jego własnej partycji.
Pamięć wirtualna może działać w porozumieniu z pamięcią główną komputera, umożliwiając szybsze, bardziej płynne operacje.
Jak zwiększyć pamięć wirtualną w systemie
Większość systemów operacyjnych pozwala użytkownikom na zwiększenie pamięci wirtualnej z poziomu strony konfiguracyjnej.
- W systemie Windows użytkownicy mogą również pozwolić systemowi na dynamiczne zarządzanie ilością dostarczanej pamięci wirtualnej.
- Podobnie w systemie Mac OS użytkownicy mogą użyć panelu preferencji, aby przydzielić pamięć wirtualną.
Typy pamięci wirtualnej: Stronicowanie i Segmentacja
Pamięć wirtualna może być zarządzana na wiele różnych sposobów przez system operacyjny systemu, a dwa najczęściej spotykane podejścia to stronicowanie i segmentacja.
Stronicowanie pamięci wirtualnej
W systemie wykorzystującym stronicowanie, pamięć RAM jest dzielona na pewną liczbę bloków – zwykle o rozmiarze 4k – zwanych stronami. Procesy otrzymują wtedy tylko tyle stron, aby zaspokoić swoje wymagania pamięciowe. Oznacza to, że zawsze zostanie zmarnowana niewielka ilość pamięci, z wyjątkiem niezwykłego przypadku, gdy proces wymaga dokładnie całej liczby stron.
Podczas normalnego działania, strony (tj. bloki pamięci o rozmiarze 4K) są wymieniane pomiędzy RAM a plikiem stron, który reprezentuje pamięć wirtualną.
Segmentacja pamięci wirtualnej
Segmentacja jest alternatywnym podejściem do zarządzania pamięcią, gdzie zamiast stron o stałym rozmiarze, procesom przydzielane są segmenty o różnej długości, aby dokładnie spełnić ich wymagania. Oznacza to, że w przeciwieństwie do systemu stronicowania, żadna pamięć nie jest marnowana w segmencie.
Segmentacja pozwala również na podział aplikacji na logicznie niezależne przestrzenie adresowe, co może sprawić, że będą one łatwiejsze do współdzielenia i bardziej bezpieczne.
Ale problem z segmentacją polega na tym, że ponieważ każdy segment ma inną długość, może to prowadzić do „fragmentacji” pamięci. Oznacza to, że gdy segmenty są alokowane i de-alokowane, małe kawałki pamięci mogą być pozostawione rozrzucone wokół, które są zbyt małe, aby być użyteczne.
Jak te małe kawałki się gromadzą, coraz mniej segmentów o użytecznym rozmiarze może być przydzielonych. A jeśli system operacyjny zacznie używać tych małych segmentów, to jest ich ogromna liczba do śledzenia, a każdy proces będzie musiał używać wielu różnych segmentów, co jest nieefektywne i może zmniejszyć wydajność.
Wady i zalety pamięci wirtualnej
Mimo że pamięć RAM jest teraz stosunkowo niedroga w porównaniu z jej kosztem, gdy pamięć wirtualna została po raz pierwszy opracowana, jest ona nadal niezwykle przydatna i nadal jest stosowana w wielu, być może większości systemów komputerowych. Kluczowy problem z pamięcią wirtualną odnosi się do wydajności.
Zalety pamięci wirtualnej
- Pozwala na uruchomienie większej ilości aplikacji w tym samym czasie.
- Pozwala na uruchomienie większych aplikacji w systemach, które nie mają wystarczającej ilości fizycznej pamięci RAM do ich uruchomienia.
- Dostarcza sposób na zwiększenie pamięci, który jest mniej kosztowny niż zakup większej ilości pamięci RAM.
- Provides a way to increase memory in a system which has the maximum amount of RAM that its hardware and operating system can support.
Disadvantages of Virtual Memory
- Does not offer the same performance as RAM.
- Can negatively affect the overall performance of a system.
- Takes up storage space which could otherwise be used for long term data storage.