12 wspomaganie systemu operacyjnego - pamiec wirtualna
Transkrypt
12 wspomaganie systemu operacyjnego - pamiec wirtualna
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 Proces 1 Proces 1 Proces 2 Proces 3 Proces 3 Proces 4 Proces 3 System operacyjny Proces 5 Proces 4 Proces 3 Wejście procesu 5 Proces 1 System operacyjny Wyjście procesu 1 System operacyjny Wejście procesu 4 System operacyjny Wyjście procesu 2 System operacyjny Proces 4 Proces 3 Stronicowanie Lista wolnych ramek: 13 14 15 18 20 Lista wolnych ramek: 20 13 14 Proces A 15 16 Używana Proces A 17 Używana Strona Strona Strona Strona 18 0 1 2 3 19 Używana 20 21 Przed przydziałem ramek Strona Strona Strona Strona 0 1 2 3 Tablica stron procesu A: 13 14 15 18 13 14 15 Strona 0 procesu A Strona 1 procesu A Strona 2 procesu A 16 Używana 17 Używana 18 Strona 3 procesu A 19 Używana 20 21 Po przydziale Stronicowanie Adres logiczny 2 30 Tablica stron procesu A 13 14 15 18 Strona 1 procesu A 13 Adres fizyczny Strona 2 procesu A 14 14 Strona 3 procesu A 15 30 16 17 Strona 4 procesu A 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 CPU sprawdza TLB Nie Program obsługi błędu strony System operacyjny otrzymuje rozkaz odczytania strony z dysku Czy zapis tablicy stron znajduje się w TLB? Tak Dostęp do tablicy stron Czy strona znajduje się w pamięci ? Wymiana strony Nie Tak Aktualizacja TLB CPU generuje adres fizyczny Tak Czy pamięć jest zapełniona ? Nie Przeniesienie strony z dysku do pamięci 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. – ● Niesegmentowana pamięć stronicowana. – ● Liniowa przestrzeń adresowa. Segmentowana pamięć niestronicowana. – ● Adresy wirtualne są równe fizycznym. 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