SYSTEMY OPERACYJNE ZARZĄDZANIE PAMIĘCIĄ

Slides:



Advertisements
Podobne prezentacje
Wirtualizacja zasobów w systemach operacyjnych
Advertisements

Wprowadzenie do informatyki Wykład 6
Podstawy Informatyki (4)
SYSTEMY OPERACYJNE ·       SO : zestaw programów zarządzających zasobami komputera i wspomagających jego użytkowanie zarządzanie zasobami.
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Domy Na Wodzie - metoda na wlasne M
PROGRAMOWANIE STRUKTURALNE
SYSTEMY OPERACYJNE ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ
Zapis danych.
Systemy plików FAT12, FAT16, FAT32, NTFS.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 10: Pamięć wirtualna
Wykład nr 9: Zarządzanie pamięcią
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Biblioteki i przestrzenie nazw
Systemy operacyjne.
Magistrala & mostki PN/PD
Systemy operacyjne Bibliografia:
Komputer, procesor, rozkaz.
Temat nr 10: System przerwań
Autorzy: Łukasz Sztandarski Bartłomiej Granat
ZARZĄDZANIE PROCESAMI
Zapis informacji Dr Anna Kwiatkowska.
Wieloprocesowy system operacyjny dla komputerów ATARI XL/XE
Ochrona danych wykład 3.
Pamięć wspólna Opis własnego rozwiązania Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008.
Systemy plików.
Systemy plików FAT12, FAT16, FAT32, NTFS.
Podstawy programowania II
Technika Mikroprocesorowa 1
Architektura komputerów
Systemy operacyjne.
Zasada działania komputera
Autor: Justyna Radomska
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Mikroprocesory.
Mikroprocesory mgr inż. Sylwia Glińska.
Systemy plików FAT, FAT32, NTFS
Przerwanie ang. interrupt.
Maszyna wirtualna ang. virtual machine, VM.
Buforowanie D e f i n i c j a.
Pamięć komputerowa S t r u k t u r a p a m i ę c i.
Nośniki informacji i akcesoria komputerowe
Architektura PC.
Podstawy statystyki, cz. II
Badanie kwartalne BO 2.3 SPO RZL Wybrane wyniki porównawcze edycji I- VII Badanie kwartalne Beneficjentów Ostatecznych Działania 2.3 SPO RZL – schemat.
Etapy uruchamiania systemu Pliki konfiguracyjne
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
SYSTEMY EKSPERTOWE I SZTUCZNA INTELIGENCJA
EcoCondens Kompakt BBK 7-22 E.
Algorytmy przydziału pamięci - ćwiczenia
Wykład 9 Zarządzanie pamięcią operacyjną
User experience studio Użyteczna biblioteka Teraźniejszość i przyszłość informacji naukowej.
Podstawy programowania
Testogranie TESTOGRANIE Bogdana Berezy.
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
System plików.
Procesor, pamięć, przerwania, WE/WY, …
Elementy geometryczne i relacje
Pamięć RAM Pamięć RAM.
Architektury procesorów rdzeniowych mikrokontrolerów.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Struktura systemu operacyjnego
Model warstwowy ISO-OSI
Tryby adresowania i formaty rozkazów mikroprocesora
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Format rozkazu Tryby adresowania.
Zapis prezentacji:

SYSTEMY OPERACYJNE ZARZĄDZANIE PAMIĘCIĄ

SYSTEMY OPERACYJNE – PAMIĘĆ OPERACYJNA PAO – jeden z podstawowych zasobów systemowych: tablica ponumerowanych słów lub bajtów (każdy element tablicy ma swój adres – liczba binarna), adresowana przez system operacyjny bezpośrednio (pamięć swobodnego dostępu - RAM), - programy, aby móc działać, 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 – JEDNOSTKA ZARZĄDZANIA PAMIĘCIĄ (MMU) Proces (w przeciwieństwie do SO) nie ma dostępu do całej PAO, ale tylko do pamięci mu przydzielonej. SO tworzy obraz pamięci przydzielonej (na potrzeby procesu). pamięć widziana przez proces – pamięć logiczna; adresy, którymi posługuje się proces – adresy logiczne. System zarządzania pamięcią (MMU) – realizowany sprzętowo układ, który: - sprawdza, czy używane adresy logiczne są poprawne, - tłumaczy adresy logiczne na odpowiadające im adresy fizyczne.

SYSTEMY OPERACYJNE – MMU Każdy proces ma własną pamięć logiczną. Przełączanie kontekstu (przydział procesora innemu procesowi) wymaga przeprogramowania MMU  konstrukcja MMU ma zatem wpływ na: efektywność dostępu do pamięci, oraz czas przełączania kontekstu między procesami.

SYSTEMY OPERACYJNE – WIĄZANIE ADRESÓW Powiązanie rozkazów i danych z konkretnymi adresami na etapie kompilacji uniemożliwia uruchamianie programów przy zajętym przez inny program określonym obszarze pamięci (np. *.com w MS DOS).  kompilator – generuje kod przemieszczalny: adresy symboliczne + adresy względne (relokowalne); Wiązanie jest wówczas opóźnione do czasu ładowania. linker – adresy względne + adresy bezwzględne (absolutne) konkretnych komórek pamięci.

SYSTEMY OPERACYJNE – 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, gdy wiadomo, gdzie proces będzie załadowany; jeżeli adres początkowy będzie inny, wymagana ponowna kompilacja; - faza ładowania (load time) – generowanie kodu relokowalnego, gdy nie wiadomo, gdzie proces będzie załadowany; - faza wykonywania (run time) – wiązanie adresów na etapie wykonywania (procesy przemieszczane w pamięci).

SYSTEMY OPERACYJNE

SYSTEMY OPERACYJNE DEFINICJA POJĘĆ Ø 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 – ŁADOWANIE Ø Ładowanie dynamiczne - podprogram jest wprowadzany do pamięci dopiero wówczas, kiedy jest potrzebny (został wywołany). Lepsze wykorzystanie pamięci, nie ładuje się programu nie używanego; Ø Łą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ę (stub) do tej funkcji). Zakładka wprowadza na swoje miejsce adres podprogramu i go wykonuje.

SYSTEMY OPERACYJNE – RELOKACJA Ø 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.

SO – WIELOPROGRAMOWANIE Ø Wieloprogramowanie ze stałą liczbą zadań (multiprogrammining with a fixed number of tasks - MFT) Rejestr przemieszczenia (relocation register) jest wykorzystany do do ochrony kodu użytkownika i systemu operacyjnego. Rejestr przemieszczenia zawiera wartość najmniejszego adresu fizycznego; rejestr graniczny zawiera zakres adresów logicznych. Każdy adres logiczny musi być mniejszy od wartości rejestru granicznego.

SO – WIELOPROGRAMOWANIE Ø Wieloprogramowanie ze zmienną liczbą zadań (multiprogramming with a variable number of tasks - MVT) Dziura (hole) – blok dostępnej pamięci; dziury o różnorodnej wielkości są porozrzucane po całej pamięci operacyjnej. Gdy proces staje się gotowy, alokuje pamięć z dziury w pamięci operacyjnej na tyle pojemnej, aby sprostać wymaganiom procesu. System operacyjny zarządza: a) zaalokowanymi partycjami, b) wolnymi partycjami (dziurami w pamięci).

SYSTEMY OPERACYJNE – WYMAGANIA WYMAGANIA dot. zarządzania pamięcią 1. RELOKACJA – możliwość przemieszczania programu w pamięci głównej. Procesor i SO muszą być w stanie dokonywać translacji adresów w kodzie programu na rzeczywiste adresy pamięci fizycznej, odzwierciedlające faktyczne położenie programu w pamięci głównej.

SYSTEMY OPERACYJNE – WYMAGANIA 2. OCHRONA PAMIĘCI – ochrona przed zamierzonym lub przypadkowym oddziaływaniem na dany proces innych procesów. Wymóg relokacji utrudnia zapewnienie ochrony, ale z drugiej strony mechanizmy relokacji spełniają wymogi w zakresie ochrony. Wymogi w zakresie ochrony musi spełniać procesor (sprzęt) a nie SO (oprogramowanie). SO nie może uprzedzać wszystkich odwołań do pamięci, jedyna możliwość to ocena dopuszczalności odwołania do pamięci w trakcie wykonywania danej instrukcji.

SYSTEMY OPERACYJNE – WYMAGANIA 3. WSPÓLNY DOSTĘP – mechanizm ochrony pamięci musi umożliwiać różnym procesom dostęp do tego samego obszaru pamięci głównej (np. procesy wykonujące ten sam program muszą mieć dostęp do tej samej kopii programu lub współpracujące procesu – dostęp do tej samej struktury danych). Mechanizmy relokacji umożliwiają wspólny dostęp.

SYSTEMY OPERACYJNE – WYMAGANIA 4. ORGANIZACJA LOGICZNA – większość programów ma strukturę modułową o różnych atrybutach (R/W).  potrzeba: - niezależnego pisania i kompilowania modułów, - przypisywania różnych poziomów ochrony, - wprowadzenia mechanizmów wspólnego dostępu różnych procesów do modułów (częsty punkt widzenia problemu przez użytkownika). Narzędziem spełniającym w dużym stopniu te wymogi jest SEGMENTACJA.

SYSTEMY OPERACYJNE – WYMAGANIA 5. ORGANIZACJA FIZYCZNA – dwupoziomowa organizacja pamięci: główna - szybka, droga, nietrwała, pomocnicza - trwała, wolniejsza, tańsza.  1. pamięć główna może być niewystarczająca  programista musi stosować mechanizmy nakładkowania 2. w środowisku wieloprogramowym programista nie zna ani wielkości, ani położenia przestrzeni adresowej. Głównym zadaniem SO jest organizacja przepływu informacji pomiędzy obydwoma poziomami pamięci – stanowi to istotę zarządzania pamięcią.

SYSTEMY OPERACYJNE – ORGANIZACJA PAMIĘCI JEDEN SPÓJNY OBSZAR PAMIĘĆ STRONICOWANA PAMIĘĆ SEGMENTOWANA PAMIĘĆ WIRTUALNA

SO – JEDEN SPÓJNY OBSZAR Przydział ciągły – najprostszy: każdemu procesowi przydziela się jeden spójny obszar pamięci fizycznej.  w PAO powstają zajęte i wolne fragmenty, odpowiadające poszczególnym procesom. MMU – zawiera 2 programowalne rejestry: - rejestr przemieszczenia: początkowy adres fizyczny przydzielonego obszaru; rejestr graniczny : wielkość przydzielonego obszaru.

SO – ZARZĄDZANIE PAMIĘCIĄ

SO – FRAGMENTACJA ZEWNĘTRZNA Przydzielona procesom pamięć może obejmować wiele rozłącznych obszarów; suma wolnych obszarów może być wystarczająca, ale nie będzie spójnego obszaru, na tyle dużego, aby przydzielić z niego pamięć dla danego procesu. jest to tzw. zjawisko fragmentacji zewnętrznej  konieczne wówczas scalanie wolnych obszarów – Niekiedy scalanie łączy się z usuwaniem niedostęp-nych obszarów pamięci, tj. tzw. odśmiecaniem.

SO – PAO - FRAGMENTACJA FRAGMENTACJA PAMIĘCI Oprócz zjawiska fragmentacji zewnętrznej : – fragmenty pamięci nie wykorzystane, bo za małe dla potrzeb procesu (duża liczba małych dziur – wolnych obszarów), jest fragmentacja wewnętrzna: – fragmenty pamięci nie wykorzystana przez proces, gdyż pamięć przydzielona (zaalokowana) jest nieco większa niż zamówiona), różnica stanowi bezużyteczny fragment pamięci.

SO – PAO - STRATEGIE STRATEGIE PRZYDZIAŁU PAMIĘCI (strategie heurystyczne, brak rozwiązania optymalnego) a) pierwsza pasująca (first fit) – wybierany pierwszy wolny obszar, wystarczająco duży; algorytm bardzo szybki, strategia najprostsza; b) najlepiej pasująca (best fit) – wybierany najmniejszy wolny obszar, wystarczająco duży; lepsze wykorzystanie pamięci, małe straty niewykorzystanej pamięci; c) najgorzej pasująca (worst fit) – pamięć przydzielana z największego wolnego obszaru, duże szanse na wykorzystanie pozostałej wolnej pamięci. Symulacje  a) i b) lepsze niż c)

SO – PAO - STRATEGIE PRZYDZIAŁU PAMIĘCI

SYSTEMY OPERACYJNE – ZARZĄDZANIE PAMIĘCIĄ ZP – to wczytywanie programów do pamięci głównej w celu ich wykonania przez procesor. Podstawowe mechanizmy zarządzania pamięcią to: PARTYCJONOWANIE STATYCZNE PARTYCJONOWANIE DYNAMICZNE STRONICOWANIE PROSTE SEGMENTACJA PROSTA STRONICOWANIE PAMIĘCI WIRTUALNEJ SEGMENTACJA PAMIĘCI WIRTUALNEJ

SYSTEMY OPERACYJNE – ZARZĄDZANIE PAMIĘCIĄ 1. PARTYCJONOWANIE STATYCZNE W trakcie generowania SO pamięć główna dzielona jest na szereg statycznych partycji. Proces może być wczytany do partycji o równym mu lub większym rozmiarze. Zalety: proste do implementacji przy niewielkich nakładach systemu operacyjnego. Wady: nieefektywne wykorzystanie pamięci, gdyż podział wewnętrzny ustala stałą maksymalną liczbę aktywnych procesów.

SYSTEMY OPERACYJNE – ZARZĄDZANIE PAMIĘCIĄ 1. PARTYCJONOWANIE STATYCZNE - partycje mogą mieć jednakową wielkość lub różną; - jeżeli program nie mieści się w jednej partycji, programista musi przewidzieć nakładkowanie; każdy program, niezależnie jak mały, zajmuje całą partycję (fragmentacja wewnętrzna); algorytm rozmieszczania: przy stałej wielkości partycji – trywialny; przy różnej wielkości – przypisanie każdemu procesowi najmniejszej partycji, w której jeszcze się zmieści (procesy minimalizują niepełne wykorzystywanie pamięci w ramach partycji (fragmentacja wewnętrzna); Partycjonowanie statyczne praktycznie dziś nie stosowane (mainframe IBM, OS/MFT – wieloprogramowość ze stała liczbą zadań).

SYSTEMY OPERACYJNE – ZARZĄDZANIE PAMIĘCIĄ 2. PARTYCJONOWANIE DYNAMICZNE Partycje są tworzone dynamicznie, a każdy proces jest ładowany do partycji o wielkości dokładnie takiej samej, jak wielkość procesu. Zalety: brak wewnętrznej fragmentacji, bardziej efektywne wykorzystanie pamięci Wady: nieefektywne wykorzystanie procesora, gdyż upakowanie wymaga uwzględnienia fragmentacji zewnętrznej.

SYSTEMY OPERACYJNE – ZARZĄDZANIE PAMIĘCIĄ 2. PARTYCJONOWANIE DYNAMICZNE partycje mają różną wielkość a ich liczba jest zmienna; procesowi przydzielane jest tyle pamięci, ile dokładnie potrzebuje; metoda początkowo działa dobrze, ostatecznie prowadzi jednak do powstawania dużej liczby małych nie wykorzystywanych dziur w pamięci (fragmentacja zewnętrzna); rozwiązanie: upakowanie – powstaje spójny, wolny obszar pamięci; procedura czasochłonna i marnująca czas procesora. Algorytmy upakowania: best fit – prowadzi do zaśmiecania pamięci małymi blokami, first fit - najprostszy, zwykle najszybszy i najlepszy, next fit – na ogół nieco gorszy niż first fit. Partycjonowanie dynamiczne stosowane w mainframe IBM, OS/MVT – wieloprogramowość ze zmienną liczbą zadań).

SYSTEMY OPERACYJNE – ZARZĄDZANIE PAMIĘCIĄ 3. STRONICOWANIE PROSTE Pamięć główna jest podzielona na ramki równej wielkości. Każdy proces jest dzielony na równe strony o takiej samej wielkości jak ramki. Proces jest ładowany poprzez wczytanie wszystkich jego stron do dostępnych ramek, które nie muszą tworzyć spójnego obszaru. Zalety: brak zewnętrznej fragmentacji. Wady: mała liczba fragmentów wewnętrznych.

SYSTEMY OPERACYJNE – ZARZĄDZANIE PAMIĘCIĄ 3. STRONICOWANIE PROSTE podobne do partycjonowania statycznego, przy czym tutaj „partycje” (ramki) są niewielkie, program może zajmować więcej niż jedną ramkę; wielkość strony (i ramki) jest stała i zwykle jest potęgą 2; wówczas: a) schemat adresu logicznego ma przejrzystą strukturę z punktu widzenia programisty, asemblera i konsolidatora; każdy adres logiczny (numer strony, przesunięcie) w programie jest identyczny z odpowiadającym mu adresem względnym; b) łatwo można zaimplementować sprzętowo funkcję realizującą dynamiczną translację adresów w czasie wykonania procesu;

SYSTEMY OPERACYJNE – ZARZĄDZANIE PAMIĘCIĄ 4. SEGMENTACJA PROSTA Każdy proces jest podzielony na segmenty o różnej wielkości. Ładowany jest poprzez wczytanie wszystkich jego segmentów do partycji dynamicznych, które nie muszą tworzyć spójnego obszaru. Zalety: brak wewnętrznej fragmentacji. Wady: występowanie fragmentacji zewnętrznej przy dużych segmentach.

SYSTEMY OPERACYJNE – ZARZĄDZANIE PAMIĘCIĄ 4. SEGMENTACJA PROSTA podobna do partycjonowania dynamicznego, przy czym segmenty mogą zajmować więcej niż jedną partycję; programista zazwyczaj nie widzi stronicowania, natomiast widzi segmentację i może przypisywać kod programu i dane do różnych segmentów; konsekwencją segmentów o różnej wielkości jest brak prostego związku pomiędzy adresem logicznym i fizycznym;

SYSTEMY OPERACYJNE – ZARZĄDZANIE PAMIĘCIĄ 5. STRONICOWANIE PAMIĘCI WIRTUALNEJ   Podobne do stronicowania prostego, ale bez konieczności ładowania wszystkich stron procesu. Brakujące strony są wczytywane w miarę potrzeby. Zalety: brak zewnętrznej fragmentacji; wyższy stopień wieloprogramowości; duża przestrzeń adresów wirtualnych. Wady: koszty skomplikowanego systemu zarządzania pamięcią.

SYSTEMY OPERACYJNE – ZARZĄDZANIE PAMIĘCIĄ 6. SEGMENTACJA PAMIĘCI WIRTUALNEJ   Podobne do segmentacji prostej, ale bez konieczności ładowania wszystkich segmentów procesu. Brakujące segmenty są wczytywane w miarę potrzeby. Zalety: brak wewnętrznej fragmentacji; wyższy stopień wieloprogramowości; duża przestrzeń adresów wirtualnych; ochrona i podział pamięci. Wady: koszty skomplikowanego systemu zarządzania pamięcią.

SYSTEMY OPERACYJNE – STRONICOWANIE A SEGMENTACJA Proces widzi spójny obszar pamięci logicznej, pomimo niespójnego obszaru w pamięci fizycznej (procesowi można przydzielać dowolne dostępne miejsce w pamięci fizycznej). Pamięć fizyczną dzieli się na ramki (frame), bloki o stałej długości, od 512 B do 16 MB (zwykle 4 kB). Pamięć logiczną dzieli się na bloki tego samego rozmiaru – strony (page). Wielkość przydzielonego procesowi obszaru jest wielokrotnością wielkości ramek i stron.

SYSTEMY OPERACYJNE – STRONICOWANIE A SEGMENTACJA Adres – bardziej znaczące bity określają numer strony (indeks w tablicy stron zawierającej adresy bazowe wszystkich stron w pamięci fizycznej), mniej znaczące – pozycję w obrębie strony, która w połączeniu z adresem bazowym definiuje fizyczny adres pamięci. Jednostka zarządzania pamięcią (MMU) – przekształca adres wirtualny na adres fizyczny na podstawie tablic stron.

SYSTEMY OPERACYJNE – STRONICOWANIE

SYSTEMY OPERACYJNE – STRONICOWANIE Dwukrotne odwoływanie się do pamięci fizycznej (do tablicy stron i do słowa w pamięci) wydłużałoby znacznie czas dostępu do pamięci.  stosuje się zatem dodatkowo podręczną tablicę stron w małej i szybkiej pamięci asocjacyjnej – (zwanej rejestrami asocjacyjnymi lub buforami translacji adresów stron); przechowuje się tam numery ramek dla ostatnio używanych stron.

SYSTEMY OPERACYJNE – STRONICOWANIE Stronicowanie pozwala uniknąć fragmentacji zewnętrznej. Ostatnia strona pozostaje jednak najczęściej nie wykorzystana w pełni  pozostaje zatem fragmentacja wewnętrzna. F. wewnętrzną można zmniejszyć przez zmniejszenie wielkości strony, ale powoduje to zwiększenie rozmiaru tablicy stron.

SYSTEMY OPERACYJNE – STRONICOWANIE stronicowanie pozwala na implementację mechanizmu dzielenia stron przez dwa lub więcej procesy (np. współdzielenia kodu programu w systemach wielodostępnych). 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 SO, stronicowanie pozwala na dynamiczne ładowanie potrzebnych fragmentów programów na żądanie.

SYSTEMY OPERACYJNE – STRONICOWANIE STRONICOWANIE WIELOPOZIOMOWE Architektura współczesnych komputerów – 32 lub 64 bitowa (długość adresów logicznych), rozmiar strony – 4 kB, zatem tablica stron może mieć nawet 4 MB; trudno znaleźć spójny obszar o takim rozmiarze.  przy adresach logicznych dłuższych niż 32 bity stosuje się stronicowanie wielopoziomowe

SO – STRONICOWANIE WIELOPOZIOMOWE Przykład: adres logiczny – 32 bity; strona – 4 kB; najmłodsze 12 bitów – pozycja w obrębie strony; najstarsze 20 bitów – numer strony. 20 bitów (numer strony) dzieli się na 2 x 10 bitów: 10-bitowy numer strony 10-bitowa odległość na stronie  adres logiczny gdzie p1 – indeks zewnętrznej tablicy stron p2 – przesunięcie na stronie tej tablicy

SO – STRONICOWANIE WIELOPOZIOMOWE

SYSTEMY OPERACYJNE – SEGMENTACJA PAMIĘĆ SEGMENTOWANA - każdy segment – liniowa sekwencja komórek o dowolnej długości, - 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 SEGMENTACJA ZE STRONICOWANIEM Z punktu widzenia procesu – p. logiczna składa się z segmentów, które nie są rozmieszczone w pamięci fizycznej w sposób spójny (każda strona może być pamiętana w dowolnej ramce). Adres logiczny = nr segmentu + adres w segmencie Nr segmentu pozwala określić tablicę stron tworzących segment. Zatem łącząc technikę segmentacji i stronicowania można współdzielić segmenty (przydzielać procesom wiele segmentów) a jednocześnie unikać fragmentacji zewnętrznej.

SYSTEMY OPERACYJNE – PAMIĘĆ WIRTUALNA Dwie istotne właściwości o zasadniczym znaczeniu: Wszystkie odwołania procesu do pamięci są adresami logicznymi, które w czasie wykonywania podlegają translacji na adresy fizyczne.Oznacza to możliwość przesyłania procesu pomiędzy pamięcią główną a pomocniczą w sposób, pozwalający na zajmowanie różnych obszarów pamięci w różnych fazach jego realizacji. Proces może być podzielony na szereg małych fragmentów (stron lub segmentów), które w trakcie jego wykonywania nie muszą zajmować spójnego obszaru w pamięci głównej; umożliwia to bowiem dynamiczna translacja adresów oraz tablicy stron lub segmentów. Zatem w trakcie realizacji procesu nie wszystkie strony / segmenty procesu muszą znajdować się w pamięci głównej.

SYSTEMY OPERACYJNE – PAMIĘĆ WIRTUALNA Porcja procesu (strona / segment) znajdująca się w danej chwili w pamięci nazywa się jego zestawem rezydentnym. Procesor zawsze może rozpoznać (na podstawie tablicy stron), czy odwołanie do pamięci dotyczy lokalizacji w zestawie rezydentnym – wówczas realizacja procesu następuje płynnie. Jeżeli pojawi się adres logiczny spoza pamięci głównej, procesor generuje przerwanie (błąd dostępu do pamięci); SO zawiesza przerwany proces (stan zablokowania procesu) i przejmuje sterowanie, wczytując do pamięci porcję procesu zawierającą adres logiczny, który wygenerował błąd dostępu do pamięci. Generuje wówczas żądanie operacji we/wy odczytu dysku, a w międzyczasie może wybrać inny proces (spośród gotowych) do realizacji. Po wczytaniu przerwanie I/O powoduje, że SO nadaje przerwanemu procesowi status gotowości.

SYSTEMY OPERACYJNE – PAMIĘĆ WIRTUALNA Zalety takiego rozwiązania: W pamięci głównej może znajdować się większa liczba procesów. Proces może przekraczać wielkość całej pamięci głównej (!!) Programista nie musi pamiętać o wielkości dostępnej pamięci, ani o konieczności podziału procesu na porcje, aby stosując nakładkowanie – mogły być oddzielnie ładowane do pamięci. W przypadku pamięci wirtualnej, bazującej na stronicowaniu i segmentacji, zadanie to spada na SO i sprzęt.

SYSTEMY OPERACYJNE – PAMIĘĆ WIRTUALNA Zatem: w PAO - jedynie część przestrzeni adresowej zadania, reszta w pamięci pomocniczej;  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ĘĆ 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). Pamięć wirtualna umożliwia więc współdzielenie przestrzeni adresowej przez wiele procesów. Pozwala też efektywniej tworzyć procesy. Pamięć wirtualną można zaimplementować poprzez stronicowanie na żądanie albo przez segmentację na żądanie.

SYSTEMY OPERACYJNE – PAMIĘĆ WIRTUALNA strona 0 w p.log.  ramka 0 w p.fiz.  blok 1 w p.dysk. jeśli nie było modyfikacji  blok 1 = ramka 0; jeżeli była  tylko w ramce 0 jest aktualna zawartość; strona 4 nie ma odwzorowania w PAO; jej zawartość tylko na dysku w bloku r  potrzeba sprowadzać ją do PAO.

SYSTEMY OPERACYJNE – PAMIĘĆ WIRTUALNA Stronicowanie [segmentacja] prosta pamięci wirtualnej Wszystkie strony / segmenty procesu muszą znajdować się w pamięci głównej, aby proces mógł być wykonany bez nakładkowania. Nie wszystkie strony / segmenty procesu muszą znajdować się w ramkach pamięci głównej, aby proces mógł być wykonany bez nakładkowania. Strony / segmenty mogą być wczytywane w miarę potrzeby. Wczytywanie jednej strony / jednego segmentu do pamięci głównej może wymagać przepisania innej strony / jednego lub kilku innych segmentów na dysk.

SYSTEMY OPERACYJNE – PAMIĘĆ WIRTUALNA STRONICOWANIE NA ŻĄDANIE – najczęstszy sposób implementacji pamięci wirtualnej sprowadzanie strony do pamięci operacyjnej tylko wtedy, gdy jest ona potrzebna (tzw. procedura leniwej wymiany);  zmniejszona liczba wykonanych operacji we/wy i zapotrzebowania na p.o. (nie sprowadza się niepotrzebnych stron);  skraca się czas reakcji systemu; możliwość obsłużenia większej liczby użytkowników.

SYSTEMY OPERACYJNE – PAMIĘĆ WIRTUALNA Bit poprawności – określa, czy strona jest w PAO. Podczas tłumaczenia adresu stwierdzenie w tablicy stron bitu poprawności = 0 generuje przerwanie braku strony. Obsługa braku strony Sprawdzenie wewnętrznej tablicy, aby stwierdzić, czy odwołanie do pamięci było poprawne. Znalezienie wolnej ramki pamięci operacyjnej. Sprowadzanie brakującej strony z dysku. Aktualizacja tablicy stron (wstawienie numeru ramki i ustawienie bitu poprawności na 1). Wznowienie instrukcji przerwanej przez wystąpienie braku strony (teraz żądana strona jest już dostępna w pamięci).

SYSTEMY OPERACYJNE – PAMIĘĆ WIRTUALNA Jeżeli w pamięci nie ma wolnej ramki, algorytm zastępowania stron znajduje nieużywaną ramkę i przenosi ją na dysk. ZASTĘPOWANIE STRON 1. Znalezienie położenia żądanej strony na dysku. 2. Znalezienie strony nieużywanej, która ma być usunięta z pamięci. 3. Zapisanie tej strony na dysk. 4. Oznaczenie w tablicy stron odwołania do strony nieużywanej jako niepoprawnego. 5. Wczytanie żądanej strony do zwolnionej ramki. 6. Oznaczenie w tablicy stron odwołania żądanej strony jako poprawnego.

SYSTEMY OPERACYJNE – 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.

SYSTEMY OPERACYJNE – PAMIĘĆ WIRTUALNA SEGMENTACJA NA ŻĄDANIE Segmentacja pozwala programiście na traktowanie pamięci tak, jakby składała się z wielu przestrzeni adresowych. Segmenty te mogą być różnej, zmieniającej się wielkości. Zalety segmentacji: Upraszcza obsługę rosnących struktur danych, które mogą być przypisane do segmentu i SO będzie zmieniał jego wielkość w miarę potrzeb. Umożliwia niezależną modyfikacje i rekompilację oprogramo-wania bez ponownego konsolidowania i ładowania całego pakietu programów. Ułatwia współdzielenie procesów (korzystanie z danych umieszczonych w segmencie przez innych użytkowników). Ułatwia realizację ochrony pamięci (nadawanie atrybutów segmentom).

SYSTEMY OPERACYJNE – PAMIĘĆ WIRTUALNA 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ĘĆ 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 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 - skuteczny sposób przydziału pamięci procesom z wykorzystaniem nieciągłych obszarów pamięci.

SYSTEMY OPERACYJNE – NAKŁADKI W pamięci przechowuje się tylko te dane i rozkazy, które są stale potrzebne. Nakładki (overlays) są potrzebne wtedy, gdy proces jest większy niż ilość przydzielonej mu pamięci. Nakładki są implementowane z poziomu użytkownika; nie wymagają wsparcia ze strony systemu operacyjnego.

SYSTEMY OPERACYJNE – WYMIANA WYMIANA (wymiatanie) (swapping) tymczasowe przesyłanie procesu pomiędzy pamięcią operacyjną a dyskową; (wyrzucanie procesów na dysk, gdy w PAO brakuje miejsca). Pamięć pomocnicza (dyskowa) musi być dostatecznie pojemna, aby pomieścić kopie obrazów pamięci wszystkich użytkowników, wraz z bezpośrednim do nich dostępem. Czas wymiany zależy przede wszystkim od czasu transferu, proporcjonalnego do ilości wymiatanej pamięci Ścisła zależność techniki wymiatania z techniką wiązania adresów.

SYSTEMY OPERACYJNE – WYTACZANIE Wariant wymiany (roll out) stosowany w planowaniu priorytetowym. Proces o niskim priorytecie zostaje wymieciony na dysk przez proces wysokopriorytetowy (z kolejki procesów gotowych). Po załadowaniu do pamięci proces wysokopriorytetowy jest wykonywany, po skończeniu może być sprowadzony do pamięci proces uprzednio wymieciony i wznowione jego wykonanie.

SO – PAMIĘĆ OPERACYJNA Zadania i pytania 1. Dana jest pamięć fizyczna wielkości 10MB. Zasymuluj ciągły przydział pamięci dla strategii: first-fit, best-fit i worst-fit, dla następującego ciągu zdarzeń: P1: przydziel 6MB, P2: przydziel 3MB, P3: przydziel 1MB, P2: zwolnij, P4: przydziel 2MB, P1: zwolnij, P5: przydziel 3MB, P3: zwolnij, P6: przydziel 2MB, P7: przydziel 1MB.

SO – PAMIĘĆ OPERACYJNA Zadania cd. 2. Czym różnią się adresy logiczne od fizycznych? 3. Czym różni się fragmentacja zewnętrzna od wewnętrznej? Która jest lepsza i dlaczego? 4. Dlaczego w architekturze 32-bitowej ramki są zwykle wielkości 4kB? Jaką wielkość musiałyby mieć ramki, aby można było zastosować stronicowanie wielopoziomowe? Jaką wielkość musiałyby mieć ramki, aby cała tablica stron mieściła się akurat w jednej ramce? W którym przypadku narzut na tablice stron i fragmentację wewnętrzną jest najmniejszy? 5. Jaka jest różnica między stronicowaniem prostym a stronicowaniem pamięci wirtualnej?

SO – PRZYDZIAŁ CIĄGŁY Przykład planowania

SO – PRZYDZIAŁ CIĄGŁY Przykład planowania