Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 7 (24.01.2011) dr inż. Jarosław Forenc
Rok akademicki 2010/2011, Wykład nr 7 2/27 Plan wykładu nr 7 Zarządzanie pamięcią operacyjną: prosta segmentacja pamięć wirtualna stronicowanie pamięci wirtualnej segmentacja pamięci wirtualnej stronicowanie i segmentacja pamięci wirtualnej Pamięć wirtualna a zadania systemu operacyjnego: strategia pobierania strategia rozmieszczenia strategia wymiany algorytm optymalny algorytm LRU algorytm FIFO algorytm zegarowy
Rok akademicki 2010/2011, Wykład nr 7 3/27 Prosta segmentacja polega na podzieleniu programu i skojarzonych z nim danych na odpowiednią liczbę segmentów o różnej długości ładowanie procesu do pamięci polega na wczytaniu wszystkich jego segmentów do partycji dynamicznych (nie muszą być ciągłe) segmentacja jest widoczna dla programisty i ma na celu wygodniejszą organizację programów i danych adres logiczny wykorzystujący segmentację składa się z dwóch części: numeru segmentu przesunięcia dla każdego procesu określana jest tablica segmentu procesu zawierająca: długość danego segmentu adres początkowy danego segmentu w pamięci operacyjnej
Rok akademicki 2010/2011, Wykład nr 7 4/27 Prosta segmentacja Przykład: 16-bitowy adres logiczny 4 bity: nr segmentu (0-15), max. 2 4 = 16 segmentów 12 bitów: przesunięcie w ramach segmentu (0-4095), rozmiar segmentu wynosi: 2 12 = 4096 bajtów = 4 kb
Rok akademicki 2010/2011, Wykład nr 7 5/27 Prosta segmentacja do zmiany adresu logicznego na fizyczne potrzebne są następujące kroki: z adresu logicznego pobieramy numer segmentu wykorzystując numer segmentu jako indeks tablicy segmentu procesu odczytujemy początkowy fizyczny adres segmentu oraz jego długość porównujemy przesunięcie z adresu logicznego z długością segmentu - jeśli przesunięcie jest większe lub równe długości segmentu to adres jest błędny adres fizyczny jest sumą początkowego fizycznego adresu segmentu oraz przesunięcia
Rok akademicki 2010/2011, Wykład nr 7 6/27 Pamięć wirtualna pamięć wirtualna umożliwia przechowywanie stron/segmentów wykonywanego procesu w pamięci dodatkowej (na dysku twardym) Co się dzieje, gdy procesor chce odczytać stronę z pamięci dodatkowej? kiedy procesor napotyka na adres logiczny nie znajdujący się w pamięci operacyjnej to generuje przerwanie sygnalizujące błąd w dostępie do pamięci system operacyjny zmienia stan procesu na zablokowany, wstawia do pamięci operacyjnej fragment procesu zawierający adres logiczny, który był przyczyną błędu, a następnie zmienia stan procesu na uruchomiony Dzięki zastosowaniu pamięci wirtualnej: w pamięci operacyjnej może być przechowywanych więcej procesów proces może być większy od całej pamięci operacyjnej
Rok akademicki 2010/2011, Wykład nr 7 7/27 Pamięć wirtualna w przypadku stronicowania i segmentacji pamięci wirtualnej nie wszystkie strony/segmenty procesu muszą znajdować się w pamięci operacyjnej aby proces mógł być uruchomiony - strony/segmenty mogą być odczytywane w miarę potrzeby odczytanie strony/segmentu i przeniesienie do pamięci operacyjnej może wymagać przeniesienia innej strony/segmentu do pamięci pomocniczej jeśli będzie dotyczyć to fragmentu, który miał być właśnie użyty, to będzie on musiał zostać przeniesiony z powrotem do pamięci operacyjnej zbyt częste powtarzanie takich operacji prowadzi do tzw. migotania - system operacyjny przeznacza większość czasu procesora na realizację operacji wymiany zamiast na wykonywanie rozkazów
Rok akademicki 2010/2011, Wykład nr 7 8/27 Stronicowanie pamięci wirtualnej przy zastosowaniu stronicowania, adres wirtualny (logiczny) ma postać: Numer strony Przesunięcie mechanizm pamięci wirtualnej bazującej na stronicowaniu wymaga również tablicy stron P - bit określający, czy strona znajduje się w pamięci operacyjnej, jeśli tak, to zapis zawiera numer ramki tej strony M - bit określający, czy zawartość strony skojarzonej z tą tablicą została zmodyfikowana od ostatniego załadowania tej strony do pamięci - jeśli nie, to nie trzeba tej strony zapisywać, gdy ma być ona przeniesiona do pamięci pomocniczej
Rok akademicki 2010/2011, Wykład nr 7 9/27 Stronicowanie pamięci wirtualnej odczytanie strony wymaga translacji adresu wirtualnego na fizyczny
Rok akademicki 2010/2011, Wykład nr 7 10/27 Segmentacja pamięci wirtualnej w przypadku segmentacji, adres wirtualny ma postać: Numer segmentu Przesunięcie mechanizm pamięci wirtualnej wykorzystujący segmentację wymaga tablicy segmentu zawierającej więcej pól P - bit określający, czy segment znajduje się w pamięci operacyjnej M - bit określający, czy zawartość segmentu skojarzonego z tablicą została zmodyfikowana od ostatniego załadowania tego segmentu do pamięci
Rok akademicki 2010/2011, Wykład nr 7 11/27 Segmentacja pamięci wirtualnej mechanizm odczytania słowa z pamięci obejmuje translację adresu wirtualnego na fizyczny za pomocą tablicy segmentu
Rok akademicki 2010/2011, Wykład nr 7 12/27 Stronicowanie i segmentacja pamięci wirtualnej przestrzeń adresowa użytkownika jest dzielona na dowolną liczbę segmentów według uznania programisty każdy segment jest dzielony na dowolną liczbę stron o stałym rozmiarze równym długości ramki pamięci operacyjnej z punktu widzenia programisty adres logiczny składa się z numeru segmentu oraz jego przesunięcia Adres wirtualny Numer segmentu Przesunięcie z punktu widzenia systemu, przesunięcie segmentu jest postrzegane jako numer strony oraz przesunięcie strony dla strony wewnątrz określonego segmentu Adres wirtualny Numer segmentu Numer strony Przesunięcie
Rok akademicki 2010/2011, Wykład nr 7 13/27 Stronicowanie i segmentacja pamięci wirtualnej tłumaczenie adresu wirtualnego na adres fizyczny:
Rok akademicki 2010/2011, Wykład nr 7 14/27 Stronicowanie i segmentacja pamięci wirtualnej tłumaczenie adresu wirtualnego na adres fizyczny: z każdym procesem skojarzona jest tablica segmentu oraz kilka tablic stron - po jednej dla każdego segmentu procesu kiedy proces jest uruchomiony, rejestr przechowuje adres początkowy tablicy segmentu dla tego procesu na podstawie numeru segmentu z adresu wirtualnego tworzony jest indeks do tablicy segmentu procesu w celu znalezienia tablicy strony dla tego segmentu następnie numer strony z adresu wirtualnego jest używany do indeksacji tej tablicy strony oraz sprawdzenia odpowiedniego numeru ramki dodając numer ramki i przesunięcie z adresu wirtualnego otrzymujemy adres rzeczywisty (fizyczny)
Rok akademicki 2010/2011, Wykład nr 7 15/27 Pamięć wirtualna a zadania systemu operacyjnego większość obecnie stosowanych systemów operacyjnych wykorzystuje mechanizmy pamięci wirtualnej w powiązaniu ze stronicowaniem i segmentacją najwięcej problemów projektantom systemów operacyjnych sprawia stronicowanie w kontekście pamięci wirtualnej system operacyjny musi wdrożyć kilka zasad (uwaga: nie ma jednego, najlepszego rozwiązania tych problemów): strategia pobierania strategia rozmieszczenia strategia wymiany
Rok akademicki 2010/2011, Wykład nr 7 16/27 Pamięć wirtualna a zadania systemu operacyjnego Strategia pobierania: określa, kiedy strona powinna być wstawiona do pamięci operacyjnej stosowane są dwie metody: 1. Stronicowanie na żądanie (ang. demand paging) strona jest wstawiana do pamięci operacyjnej, gdy pojawia się odniesienie do lokalizacji na tej stronie gdy proces startuje, to będzie bardzo dużo błędów stron, ale po pewnym czasie większość stron zostanie wstawiona do pamięci operacyjnej i liczba błędów będzie bardzo mała 2. Wstępne stronicowanie (ang. prepaging) do pamięci operacyjnej wstawiane są także inne strony niż strona zażądana w błędzie strony (najczęściej dotyczy to kilku kolejnych stron z pamięci pomocniczej)
Rok akademicki 2010/2011, Wykład nr 7 17/27 Pamięć wirtualna a zadania systemu operacyjnego Strategia rozmieszczenia: określa miejsce w pamięci fizycznej, gdzie proces ma przebywać w przypadku samego stronicowania lub stronicowania z segmentacją rozmieszczenie nie ma znaczenia ze względu na jednakowy czas dostępu do każdej komórki pamięci (nie dotyczy to systemów typu NUMA)
Rok akademicki 2010/2011, Wykład nr 7 18/27 Pamięć wirtualna a zadania systemu operacyjnego Strategia wymiany: określa, która strona z zestawu stron powinna być wybrana do wymiany wszystkie strategie zakładają, że strona, która ma zostać wymieniona powinna być stroną, co do której istnieje najmniejsze prawdopodobieństwo wystąpienia odwołania w najbliższej przyszłości w większości strategii usiłuje się odgadnąć kolejne odwołania na podstawie poprzednich strategie powinny być proste, po to aby nie obciążały systemu w literaturze opisywane są cztery podstawowe algorytmy: Optymalny LRU - najdłużej ostatnio nieużywanej strony FIFO - pierwszy na wejściu, pierwszy na wyjściu Zegarowy
Rok akademicki 2010/2011, Wykład nr 7 19/27 Pamięć wirtualna a zadania systemu operacyjnego Strategia optymalna: strategia optymalna (ang. optimal policy) wybiera stronę, do której najdłużej nie wystąpi żadne odwołanie strategii takiej nie da się wdrożyć praktycznie, gdyż wymagałaby ona wiedzy na temat przyszłych zdarzeń - strategia ta służy do porównywania innych algorytmów załóżmy, że podczas wykonywania procesu, dla którego przydzielono trzy ramki w pamięci operacyjnej, występują następujące odwołania do stron: 2 3 2 1 5 2 4 5 3 2 5 2
Rok akademicki 2010/2011, Wykład nr 7 20/27 Pamięć wirtualna a zadania systemu operacyjnego Strategia najdłużej ostatnio nieużywanej strony (LRU): strategia LRU (ang. least recently used) powoduje wymianę tej strony w pamięci, do której najdłużej nie ma żadnego odwołania strategia ta jest równie skuteczna jak strategia optymalna główny problem to praktyczne wdrożenie tej strategii, możliwe rozwiązania: dodawanie do każdej strony informacji na temat ostatniego odwołania (duże obciążenie systemu) przechowywanie stosu odwołań do pamięci (rozwiązanie kosztowne)
Rok akademicki 2010/2011, Wykład nr 7 21/27 Pamięć wirtualna a zadania systemu operacyjnego Strategia pierwszy na wejściu, pierwszy na wyjściu (FIFO): strategia FIFO (ang. first-in-first-out) traktuje ramki stron przypisane do procesu jako bufor cykliczny - strony są usuwane cyklicznie strategia bardzo prosta do wdrożenia - potrzebny jest jedynie wskaźnik, który będzie cyklicznie przechodził przez ramki stron danego procesu w strategii tej z pamięci są usuwane strony, które były tam najdłużej
Rok akademicki 2010/2011, Wykład nr 7 22/27 Pamięć wirtualna a zadania systemu operacyjnego Strategia zegara: nazwa strategia zegara (ang. clock policy), algorytm zegara - wzięła się stąd, że ramki mogą być w niej ułożone w kształt okręgu strategia ta może występować w wielu wariantach w najprostszej postaci z każdą ramką skojarzony jest dodatkowy bit (tzw. bit wykorzystania) kiedy nowa strona wczytywana jest do ramki w pamięci lub występują kolejne odwołania do strony, to bit wykorzystania dla tej ramki jest ustawiany na 1 w algorytmie zegara zestaw ramek traktowany jest jako bufor cykliczny, z którym skojarzony jest wskaźnik
Rok akademicki 2010/2011, Wykład nr 7 23/27 Pamięć wirtualna a zadania systemu operacyjnego Strategia zegara: podczas wymiany strony wskaźnik jest ustawiany na kolejną ramkę w buforze po ramce, która została właśnie zaktualizowana jeśli zachodzi konieczność wymiany strony, system operacyjny przeszukuje bufor w poszukiwaniu ramki, której bit wykorzystania jest równy 0 za każdym razem, gdy wskaźnik natrafia na bit równy 1 to zmienia go na 0 i szuka dalej gdy znajdzie pierwszą ramkę z bitem wykorzystania równym 0, to ramka ta jest wymieniana jeśli wszystkie ramki mają bit równy 1, to wskaźnik zamieni wszystkie bity na 0, po czym zatrzyma się na adresie początkowym, wymieniając stronę w tej ramce
Rok akademicki 2010/2011, Wykład nr 7 24/27 Pamięć wirtualna a zadania systemu operacyjnego Strategia zegara: szukamy miejsca na wstawienie strony 77
Rok akademicki 2010/2011, Wykład nr 7 25/27 Pamięć wirtualna a zadania systemu operacyjnego Strategia zegara: szukamy miejsca na wstawienie strony 77
Rok akademicki 2010/2011, Wykład nr 7 26/27 Pamięć wirtualna a zadania systemu operacyjnego
Rok akademicki 2010/2011, Wykład nr 7 27/27 Koniec wykładu nr 7 Dziękuję za uwagę!