1 SYSTEMY OPERACYJNE ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ
2 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAtablica 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.
3 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAWIĄ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
4 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAWIĄ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).
5 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAWIĄ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.
6 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAWIĄ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). .
7 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAWIĄ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.
8 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAWYMIATANIE (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
9 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAORGANIZACJA PAMIĘCI JEDEN SPÓJNY OBSZAR PAMIĘĆ STRONICOWANA PAMIĘĆ SEGMENTOWANA PAMIĘĆ WIRTUALNA
10 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAJEDEN 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).
11 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAJEDEN 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.
12 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAWykonywanie 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.
13 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAPAMIĘĆ 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
14 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAPAMIĘĆ 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.
15 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAPAMIĘĆ 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
16 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAPAMIĘĆ 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.
17 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAPAMIĘĆ 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.
18 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAPAMIĘĆ 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 ?
19 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAPAMIĘĆ 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.
20 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAPAMIĘĆ 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).
21 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAZalety 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.
22 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAPAMIĘĆ 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.
23 SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNAPAMIĘĆ 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. Ώ