Architektura komputerów Tydzień 12 Wspomaganie systemu operacyjnego: pamięć wirtualna
Partycjonowanie Pamięć jest dzielona, aby mogło korzystać z niej wiele procesów. Dla jednego procesu przydzielana jest jedna partycja. Partycje mogą mieć stały, z góry ustalony rozmiar lub dynamiczny, przydzielany w miarę potrzeb.
Partycjonowanie System operacyjny System operacyjny System operacyjny System operacyjny System operacyjny Proces 1 Proces 2 Wyjście procesu 2 Proces 1 Wejście procesu 4 Proces 1 Proces 4 Wyjście procesu 1 Wejście procesu 5 Proces 5 Proces 4 Proces 4 Proces 3 Proces 3 Proces 3 Proces 3 Proces 3
Stronicowanie Lista wolnych ramek: 13 14 15 18 20 Proces A Strona 0 Strona 1 Strona 2 Strona 3 13 14 15 16 17 18 19 20 21 Używana Używana Używana Przed przydziałem ramek Lista wolnych ramek: 20 Proces A Strona 0 Strona 1 Strona 2 Strona 3 Tablica stron : 13 14 15 13 14 15 16 17 18 19 20 21 Strona 0 Strona 1 Strona 2 Używana Używana Strona 3 Używana 18 Po przydziale
Stronicowanie Strona 1 13 Adres logiczny 2 30 Tablica stron 13 14 15 18 Adres fizyczny 14 30 Strona 2 Strona 3 14 15 16 17 Strona 4 18
Pamięć wirtualna Wykorzystujemy pamięć zewnętrzną (dysk) do przechowywania nieużywanych stron pamięci. Możemy użyć większej ilości logiczej pamięci niż dysponujemy fizycznej. W pamięci fizycznej przechowujemy aktualnie potrzebne strony. Jeśli potrzebnej strony nie ma w pamięci, ładujemy ją z dysku, zapisując zastępowaną stronę na dysk.
Tablica stron Tablica stron przechowuje informacje o miejscu zapisu każdej strony wirtualnej na dysku i w pamięci. Ponieważ każdy dostęp do pamięci wymaga co najmniej dwóch dostępów (pobranie adresu z tablicy stron i właściwy dostęp), stosuje się bufor dla wpisu w tablicy stron w postaci rejestru procesora (TLB translation lookaside buffer).
Programowe żądanie dostępu do strony Nie CPU sprawdza TLB Czy zapis tablicy stron znajduje się w TLB? Tak Dostęp do tablicy stron Czy strona znajduje się w pamięci? Nie System operacyjny otrzymuje rozkaz odczytania strony z dysku Wymiana strony Tak Program obsługi błędu strony Czy pamięć jest zapełniona? Nie Przeniesienie strony z dysku do pamięci Tak Aktualizacja TLB CPU generuje adres fizyczny Aktualizacja tablicy stron Powrót do rozkazu przy którym wystąpił błąd strony
Segmentacja Pamięć wirtualną dzielimy na segmenty. Segmenty mogą mieć zmienny rozmiar. Każdy segment może mieć przypisane prawa dostępu. Zalety: uproszczone operowanie dużymi strukturami danych możliwość dzielenia danych między procesami przez odpowiednie ustawienie uprawnień możliwa ochrona danych lub kodu
Przestrzenie adresowe Pentium Niesegmentowana pamięć niestronicowana. Adresy wirtualne są równe fizycznym. Niesegmentowana pamięć stronicowana. Liniowa przestrzeń adresowa. Segmentowana pamięć niestronicowana. Cały segment jest w pamięci lub na dysku. Segmentowana pamięć stronicowana. Segmentowanie definiuje kontrolę dostępu. Stronicowanie zarządza przydzielaniem pamięci.
Segmentacja Gdy stosowana jest segmentacja każdy adres wirtualny składa się z 16 bitowego odniesienia segmentu i 32 bitowego adresu względnego. 2 bity z odniesienia do segmentu służą mechanizmowi ochrony. Z każdym segmentem związane są dwie formy ochrony: poziom uprzywilejowania i atrybut dostępu. Występują cztery poziomy uprzywilejowania od 0 najbardziej chronionego, do 3 najmniej chronionego. Program ma dostęp tylko do segmentów o poziomie uprzywilejowania równym lub wyższym poziomowi programu. Niektóre rozkazy maszynowe mogą być wykonywane tylko przez najbardziej uprzywilejowane programy. Atrybut dostępu określa, czy dane mogą być dostępne do zapisu, czy tylko do odczytu. W przypadku programów atrybut informuje, czy dozwolone jest wykonywanie.
Stronicowanie Dwa poziomy: katalog stron z maksymalnie 1024 wpisami do 1024 tablic stron z 1024 odnośnikami do stron każda. Każda strona ma 4KB, co pozwala zaadresować 4GB. Procesor zawiera bufor translacji adresów tablic stron z 32 wpisami.
Translacja adresu Pentium Adres logiczny Segment Wyrównanie Adres liniowy + Katalog Strona Wyrównanie Adres fizyczny + Tablica segmentów Katalog stron Tablica stron Pamięć główna