SYSTEMY OPERACYJNE ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA tablica ponumerowanych słów lub bajtów (każdy element tablicy ma swój adres), adresowana przez system operacyjny bezpośrednio (pamięć swobodnego dostępu - RAM), - programy oraz ich dane muszą znajdować się w pamięci operacyjnej. Jeśli programy nie mieszczą się w pamięci operacyjnej, to system operacyjny gromadzi je w pamięci pomocniczej.
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA WIĄZANIE ADRESÓW program źródłowy – adresy symboliczne kompilator – adresy symboliczne + adresy względne (relokowalne) linker – adresy względne + adresy bezwzględne (absolutne) konkretnych komórek pamięci
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA WIĄZANIE ADRESÓW Powiązanie adresów rozkazów i danych z adresami komórek pamięci - faza kompilacji (compile time) – generowanie kodu bezwzględnego - faza ładowania (load time) – generowanie kodu relokowalnego - faza wykonywania (run time) – wiązanie adresów na etapie wykonywania (procesy przemieszczane w pamięci).
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA WIĄZANIE ADRESÓW Ø Kompilator wiąże adresy symboliczne z adresami bezwzględnymi lub względnymi (przenaszalnymi, relokowalnymi), tj. adresami liczonymi względem początku danego bloku (modułu) programu. Kompilator może tworzyć kod wynikowy z adresami bezwzględnymi (np. pliki .COM w systemie MS-DOS). Ø Program łączący/ładujący wiąże adresy względne z adresami bezwzględnymi.
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA WIĄZANIE ADRESÓW Ø Ładowanie dynamiczne - podprogram jest wprowadzany do pamięci dopiero wówczas, kiedy jest potrzebny (został wywołany). Ø Łączenie dynamiczne (dotyczy głównie bibliotek systemowych) powoduje odroczenie łączenia do czasu konieczności odwołania się do danej funkcji bibliotecznej (w odpowiednim miejscu kodu programu umieszcza się zakładkę do tej funkcji). .
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA WIĄZANIE ADRESÓW (address binding) PRZEMIESZCZANIE PROCESÓW Relokacja statyczna – dwa rejestry graniczne – początek i koniec strefy zajmowanej przez program, Relokacja dynamiczna – dwa rejestry: limit – długość strefy adresów logicznych base – wartość minimalnego adresu fizycznego obszaru z załadowanym zadaniem.
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA WYMIATANIE (swapping) przesyłanie procesu pomiędzy pamięcią operacyjną a dyskową; (wyrzucanie procesów na dysk, gdy w PAO brakuje miejsca) CEL: zwiększenie liczby zadań jednocześnie przetwarzanych przez system; ścisła zależność techniki wymiatania z techniką wiązania adresów
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA ORGANIZACJA PAMIĘCI JEDEN SPÓJNY OBSZAR PAMIĘĆ STRONICOWANA PAMIĘĆ SEGMENTOWANA PAMIĘĆ WIRTUALNA
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA JEDEN SPÓJNY OBSZAR Rejestr bazowy – r. przemieszczenia (relokacji) Rejestr graniczny Pamięć podzielona na obszary (strefy, partycje) – statyczne i dynamiczne Fragmentacja pamięci wewnętrzna – część strefy nie wykorzystana przez proces (pamięć przydzielana jest nieco większa niż zamawiana), zewnętrzna – strefy nie wykorzystane, bo za małe dla potrzeb procesu (duża liczba małych dziur).
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA JEDEN SPÓJNY OBSZAR ALGORYTMY WYSZUKIWANIA WOLNYCH MIEJSC W PAMIĘCI pierwsza pasująca (first fit) - algorytm bardzo szybki, - następna pasująca (next fit); najlepiej pasująca (best fit) – lepsze wykorzystanie pamięci.
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA Wykonywanie programu większego niż pamięć fizyczna: nakładkowanie: wymaga to dokładnej znajomości struktury programu i starannego zaprojektowania nakładek, wymiana procesów - jeden lub wiele procesów jest przenoszonych do pamięci pomocniczej, aby zrobić miejsce procesowi, któremu planista przydzielił kolejny kwant czasu, stronicowanie (paging) - skuteczny sposób przydziału pamięci procesom z wykorzystaniem nieciągłych obszarów pamięci.
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA PAMIĘĆ STRONICOWANA przestrzeń adresowa dzielona na strony (page), pamięć fizyczna dzielona na ramki (frame). MMU (memory management unit) – jednostka zarządzania pamięcią – przekształca adres wirtualny na adres fizyczny na podstawie tablic stron. program użytkownika adres logiczny MMU translacja na adres fizyczny szyna adresowa Zaleta p. stronicowanej: możliwość współdzielenia kodu programu w systemach wielodostępnych
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA PAMIĘĆ STRONICOWANA stronicowanie pozwala na implementację mechanizmu dzielenia stron przez dwa lub więcej procesów w celu zwiększenia bezpieczeństwa wprowadza się bity ochrony stron (strona zaznaczona np. tylko do odczytu); próba jej zapisu spowoduje wygenerowanie odpowiedniej pułapki i przejęcie kontroli przez system operacyjny, stronicowanie pozwala na dynamiczne ładowanie potrzebnych fragmentów programów na żądanie.
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA PAMIĘĆ STRONICOWANA Metody implementacji pamięci stronicowanej: - pojedyncza tablica z rejestrami; zaleta: odwołania do szybkich rejestrów zamiast do PAO, wada: ograniczona liczba rejestrów – 256, - tablica stron w całości w PAO; wada: konieczność dodatkowej operacji dostępu do pamięci w celu odczytania numeru ramki; dostęp do tablicy stron (w PAO) na podstawie rejestru bazowego, następnie właściwa operacja dostępu do pamięci
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA PAMIĘĆ STRONICOWANA W tablicy stron – przechowywane alokacje wszystkich stron, wykorzystywane tylko niektóre. pamięć asocjacyjna: pamięć adresowana zawartością. - przechowuje się tylko opisy stron aktywnych, - równoległe na wszystkich adresach przeszukiwanie komórek pamięci wg argumentów, znacznie szybszy dostęp do pamięci.
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA PAMIĘĆ SEGMENTOWANA - każdy segment – liniowa sekwencja komórek, - dynamiczna długość segmentów, adres logiczny złożony z numeru segmentu i przesunięcia w segmencie, - każdy segment w dowolnym miejscu pamięci, Zalety: - łatwiejsza i bardziej elastyczna ochrona pamięci, - zróżnicowanie praw dostępu dla każdego segmentu, - możliwość współdzielenia segmentów.
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA PAMIĘĆ STRONICOWANA I SEGMENTOWANA STRONICO-WANIE SEGMEN-TACJA Czy użytkownik jest świadomy, że taka technika jest w systemie stosowana ? NIE TAK Ile jest liniowych przestrzeni adresowych ? 1 WIELE Czy przestrzeń adresowa może przekroczyć rozmiar pamięci fizycznej ? Czy kod i dane w pamięci mogą być w łatwy sposób chronione osobno ? Czy łatwo zarządzać tablicami o zmiennym rozmiarze ? Czy łatwo jest współdzielić fragmenty kodu ?
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA PAMIĘĆ WIRTUALNA Suma wielkości przestrzeni adresowych wszystkich zadań przekracza wielkość pamięci fizycznej w PAO - jedynie część przestrzeni adresowej zadania wrażenie wykorzystywania nieograniczonej PAO. Pamięć wirtualna jest abstrakcyjną pamięcią główną w postaci wielkiej, jednorodnej tablicy, która jest logicznie oddzielona od pamięci fizycznej.
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA PAMIĘĆ WIRTUALNA Adresy generowane w trakcie wykonywania programu są adresami w przestrzeni wirtualnej (adresy liniowe). Są one tłumaczone przez dedykowany układ elektroniczny (Memory Managment Unit, MMU) na adresy w pamięci fizycznej (adresy fizyczne).
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA Zalety pamięci wirtualnej: - jednocześnie może być wykonywanych wiele programów, - możliwe jest wykonywanie programów większych niż dostępna pamięć fizyczna, - procesy mogą wykonywać programy, których kod jest ładowany do pamięci tylko częściowo, - każdy proces może uzyskać dostęp do części dostępnej pamięci fizycznej, - procesy mogą współdzielić w pamięci pojedynczy obraz biblioteki, programu, - programy są relokowalne, - można tworzyć kod niezależny od urządzenia.
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA PAMIĘĆ WIRTUALNA Wymagania: oddzielenie wirtualnej przestrzeni adresowej od przestrzeni pamięci fizycznej; stronicowanie przestrzeni adresowej; mechanizm odwzorowania adresów (MMU, tablice stron); - odpowiednie moduły SO obsługujące wymianę części zadań pomiędzy PAO a dyskiem.
SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA PAMIĘĆ WIRTUALNA - ZASTĘPOWANIE STRON - dwukrotne przesyłanie stron (jedna na dysk, druga z dysku), wydłużony efektywny czas dostępu. ALGORYTMY ZASTĘPOWANIA STRON: - FIFO – usuwana strona najdłużej przebywająca w PAO, - LRU (least recently used) – usuwana strona najdawniej używana, - algorytm drugiej szansy – FIFO zmiana bitu odniesienia na 0, ponowne sprawdzanie w następnej kolejce, - LFU (least frequently used) – usuwana strona najrzadziej używana. Ώ