Pamięć wirtualna Podstawy Podstawy Stronicowanie na żądanie Wymiana strony Przydział ramek Szamotanie (thrashing) Pamięć wirtualna (virtual memory) oddzielenie pamięci logicznej użytkownika od fizycznej. Jedynie część programu (ta która ma się wykonać) musi być wpamięci. Przestrzeń adresów logicznych może być znacznie większa od przestrzeni adresów fizycznych. Pozwala na dzielenie przestrzeni adresowej przez wiele procesów.. Pozwala na efektywniejsze tworzenie procesów. Pamięć wirtualna może być implementowana poprzez: Stronicowanie na żądanie. Segmentację na żądanie. 0. 0. Pamięć wirtualna większa od fizycznej Stronicowanie na żądanie (demand paging) Sprowadź stronę do pamięci tylko wtedy, gdy jest potrzebna. Mniej operacji we/wy. Mniej pamięci. Szybsza odpowiedź. Więcej użytkowników. Potrzebna strona odwołać się do niej. Odwołanie niepoprawne (invalid reference) odrzuć (abort) Brak w pamięci sprowadź do pamięci. 0. 0. Przesyłanie pamięci stronicowanej do ciągłego obszaru dyskowego Bit poprawności odniesienia (Valid-Invalid Bit) W tabeli stron każda pozycja zawiera dodatkowo bit poprawności odniesienia: ( jest w pamięci, 0 niemawpamięci) Wstępnie bit ten ma wartość zero. Przykład: page table Frame # M valid-invalid bit 0 0 0 Podczas translacji - jeśli valid invalid bit jest 0 błąd strony (page fault). 0.5 0.6
Brak stron w pamięci operacyjnej Błąd strony Przy każdym odwołaniu do pamięci, pułapka OS OS błąd strony (page fault) OS przeszuka wewnętrzną tabelę: Odwołanie niedozwolone (Invalid reference) koniec procesu (abort). Brak strony w pamięci. Weź pustą ramkę. Zamień stronę w ramce. Aktualizuj tabele, bit poprawności =. Wznów wykonywanie: alg. strona najdawniej używana - Least Recently Used Przesuń blok Automatyczna inkrementacja/dekrementacja lokacji 0.7 0.8 Obsługa błędu strony A jeśli brak wolnych ramek? Zastępowanie stron (page replacement) znaleźć jakąś stronę wpamięci (nie będącą wużyciu - ofiarę) i zapisać ją na dysku. algorytm Ocena jakości potrzebny algorytm powodujący jak najmniej błędów strony. Niektóre strony mogą być sprowadzane do pamięci wielokrotnie. 0.9 0.0 Efektywność stronicowania na żądanie Częstość błędów braku strony: 0 p.0 if p = 0 brak błędów braku strony if p =,każde odwołanie powoduje błąd Efektywny czas dostępu (Effective Access Time (EAT)) EAT = ( p) x czas dostępu do pamięci + p (czas obsługi błędu strony + [czas wysłania strony ] + czas pobrania strony + czas restartu) Pliki odwzorowane w pamięci Memory-Mapped Files Odwzorowanie we/wy w pamięci (memory-mapped file I/O) blok dyskowy odwzorowany w pamięci; pozwala na dostęp do plików na zasadzie dostępu do procedury rezydującej w pamięci. Plik jest wczytywany na zasadzie stronicowania na żądanie. Porcja pliku o rozmiarze strony jest wczytywana do fizycznej strony. Kolejne operacje zapisu/odczytu dotyczą pamięci. Upraszcza dostęp do pliku zastępuje wołanie funkcji systemowych read() write(). Pozwala na dzielenie pamięci przez procesy - korzystanie ze wspólnych plików. 0. 0.
Pliki odwzorowane w pamięci Potrzeba zastąpienia strony 0. 0. Zamiana strony Zamiana strony. Znajdź pożądaną stronę na dysku.. Znajdź wolną ramkę: Jeśli jest wolna ramka użyj jej. Jeśli nie ma wolnej ramki, zastosuj algorytm wyboru ramki ofiary (victim) i zapisz ją na dysku.. Wczytaj pożądaną stronę do ramki uprzednio zajmowanej przez ofiarę.. Aktualizuj tabele stron i ramek. 5. Wznów działanie procesu. 0.5 0.6 Algorytmy zastępowania stron Błąd strony w zależności od liczby ramek Pożądane jest aby błąd strony występował jak najrzadziej. Algorytm jest sprawdzany na ciągu odwołań (reference string); obliczana jest liczba błędów braku strony. W przykładach użyjemy następującego ciągu odwołań:,,,,,, 5,,,,, 5. 0.7 0.8
Algorytm FIFO (First-In-First-Out) Zastępowanie stron wg. FIFO Ciąg odniesień:,,,,,,5,,,,,5 ramki (proces może mieć jednocześnie strony w pamięci) 5 9 błędów strony ramki 5 5 0 błędów strony Alg. FIFO Anomalia Belady ego. Więcej ramek więcej błędów strony (powinno być mniej) 0.9 0.0 Anomalia Belady ego w FIFO Algorytm optymalny Zastąp tę stronę, która najdłużej nie będzie używana. Przykład ramek:,,,,,, 5,,,,, 5 6 błędów strony Skąd towiemy? 5 Jest to algorytm odniesienia. 0. 0. Algorytm optymalny - przykład Algorithm LRU (Least Recently Used) zastąp najdawniejużywaną stronę Ciąg odniesień:,,,,,,5,,,,,5 Implementacja licznika 5 5 Do każdej pozycji w tabeli stron dołączany jest rejestr czasu użycia. 0. 0.
Zastępowanie stron wg. LRU Przybliżone LRU 0.5 0.6 Algorytm drugiej szansy Algorytmy licznikowe Prowadź licznik odwołań do każdej strony. Algorytm LFU: zamienia stronę z najmniejszym licznikiem. Algorytm MFU: zastępowanie strony najczęściej używanej. Ocena: Algorytmy mało popularne, implementacja kosztowna. 0.7 0.8 Algorytmy przydziału Szamotanie (migotanie) Thrashing Gdy proces nie ma dość ramek zwiększa się częstość błędu strony. Skutek: Niskie wykorzystanie CPU. SO zwiększa stopień wieloprogramowości. Do systemu dodawany nowy proces. Szamotanie (thrashing) proces zajęty głównie zamianą stron. 0.9 0.0 5
Szamotanie (thrashing) 0. 6