Zarządzanie pamięcią. Zarządzanie pamięcią. Podstawy. Podsystem zarządzania pamięcią. Zadania podsystemu: W systemie wielozadaniowym:

Podobne dokumenty
Podstawy. Podsystem zarządzania pamięcią - zadania: Wiązanie (binding) rozkazów i danych z adresami pamięci. W systemie wielozadaniowym:

Zarządzanie pamięcią. Podstawy Wymiana (swapping). Przydział ciągły pamięci. Stronicowanie. Segmentacja. Segmentacja ze stronicowaniem.

Zarządzanie pamięcią operacyjną

Pamięć. Jan Tuziemski Źródło części materiałów: os-book.com

Zarządzanie pamięcią operacyjną

Wykład 7. Zarządzanie pamięcią

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

Od programu źródłowego do procesu

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci

Zarządzanie pamięcią w systemie operacyjnym

Architektura komputerów

Zbigniew S. Szewczak Podstawy Systemów Operacyjnych

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

Zarządzanie zasobami pamięci

architektura komputerów w. 8 Zarządzanie pamięcią

dr inż. Jarosław Forenc

Systemy Operacyjne Zarządzanie pamięcią operacyjną

Schematy zarzadzania pamięcia

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ

Zarz¹dzanie pamiêci¹

Podstawy. Pamięć wirtualna. (demand paging)

Systemy operacyjne III

Podstawowe zagadnienia informatyki

Stronicowanie w systemie pamięci wirtualnej

Współpraca procesora ColdFire z pamięcią

Przed wykonaniem program musi być pobrany z dysku i. Tam działa a jako proces. Podczas wykonywania, proces pobiera rozkazy i dane z

dr inŝ. Jarosław Forenc

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Zarz arz dzanie pam dzanie ięci ę ą

dr inż. Jarosław Forenc

Celem wykładu jest przedstawienie podejść do zarządzania jednym z kluczowych zasobów systemu komputerowego pamięcią operacyjną. Ponieważ zarządzanie

Zarz arz dzanie pam dzanie ięci ę ą

WYKŁAD. Zarządzanie pamięcią operacyjną

Od programu źródłowego do procesu

SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus

Zarządzanie pamięcią operacyjną i pamięć wirtualna

Systemy Operacyjne Pamięć wirtualna cz. 2

Architektura systemu komputerowego

dr inż. Jarosław Forenc

Systemy operacyjne, architektura komputerów

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Technologie informacyjne (2) Zdzisław Szyjewski

Sprzętowe wspomaganie pamięci wirtualnej

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

Programowanie niskopoziomowe

Hierarchia pamięci w systemie komputerowym

Pamięć wirtualna. Jan Tuziemski Źródło części materiałów: os-book.com

1. Rola pamięci operacyjnej

Architektura systemów informatycznych

System pamięci. Pamięć wirtualna

ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ

Systemy operacyjne Zarządzanie pamięcią

System pamięci. Pamięć wirtualna

System pamięci. Pamięć wirtualna

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Mikroprocesory rodziny INTEL 80x86

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Mikroinformatyka. Tryb wirtualny

Budowa systemów komputerowych

2.1 Wstęp Kryteria planowania Algorytmy planowania Systemy wieloprocesorowe i czasu rzeczywistego...

Informatyka 2. Wykład nr 10 ( ) Plan wykładu nr 10. Politechnika Białostocka. - Wydział Elektryczny. ext2. ext2. dr inŝ.

Wybrane zagadnienia elektroniki współczesnej

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Zarządzanie pamięcią operacyjną

Komputery przemysłowe i systemy wbudowane

Programowanie w asemblerze Linkowanie

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Nakładki. Kod przebiegu 2: 80 kb Tablica symboli: 20 kb wspólne podprogramy: 30 kb Razem: 200 kb

Systemy Operacyjne Pamięć wirtualna cz. 1

Programowanie Niskopoziomowe

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Mikroprocesor Operacje wejścia / wyjścia

System operacyjny MACH

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

System plików przykłady. implementacji

Systemy operacyjne system przerwań

Działanie systemu operacyjnego

Systemy plików i zarządzanie pamięcią pomocniczą. Struktura pliku. Koncepcja pliku. Atrybuty pliku

Architektura komputerów

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

14. Elementy systemu wykonawczego

Architektura komputerów

Programowanie współbieżne Wykład 2. Iwona Kochańska

Ograniczenia efektywności systemu pamięci

Działanie systemu operacyjnego

Procesory rodziny x86. Dariusz Chaberski

Pamięć wirtualna. A gdyby tak w pamięci przebywała tylko ta część programu, która jest aktualnie wykonywana?

Architektura komputerów

Działanie systemu operacyjnego

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Wykład 8. Pamięć wirtualna. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Pamięć wirtualna w AS/400

System plików przykłady implementacji

Kurs Zaawansowany S7. Spis treści. Dzień 1

Transkrypt:

W systemie wielozadaniowym: Wpamięci wiele procesów jednocześnie Każdy proces potrzebuje pamięci na: Instrukcje (kod lub tekst) Dane statyczne (w programie) Dane dynamiczne (sterta, stos). System operacyjny potrzebuje pamięci na swoje instrukcje i dane. Pamięć musi być dzielona pomiędzy system operacyjny i procesy. Podstawy Wymiana (swapping) Alokacja ciągła (contiguous allocation) Stronicowanie (paging) Segmentacja (segmentation) Segmentacja stronicowana (segmentation with paging) 4.1 4.3 Podsystem zarządzania pamięcią Podstawy Zadania podsystemu: Relokacja (relocation) Alokacja (allocation) Ochrona (protection) Współdzielenie (sharing) Organizacja logiczna Organizacja fizyczna Przed wykonaniem proces musi być wprowadzony do pamięci operacyjnej. Kolejka wejściowa (Input queue) zbiór procesów na dysku, oczekujących na wprowadzenie do pamięci operacyjnej w celu wykonania. 4.2 4.4

Wiązanie (binding) rozkazów i danych z adresami pamięci Wieloetapowe przetwarzanie programu użytkownika Fragment programu: W języku assembler: Jakie wartości adresów przypisać Rx i Ry?: 4.5 4.7 Wiązanie (binding) rozkazów i danych z adresami pamięci Powiązanie adresów i danych z adresami pamięci może być wykonane na różnych etapach: W czasie kompilacji (Compile time): Jeśli lokacja pamięci jest znana a priori, może być generowany kod bezwzględny; konieczna rekompilacja, gdy adres startowy ulegnie zmianie. Wczasie ładowania (Load time): Jeśli lokacja pamięci nie jest znana w czasie kompilacji, kompilator musi wytworzyć kod relokowalny (relocatable code) wiązanie jest opóźniane do czasu ładowania. W czasie wykonania (Execution time): Wiązanie jest opóźniane aż do czasu wykonywania programu; proces może być relokowany pomiędzy różnymi segmentami pamięci. Rozwiązanie wspomagane sprzętowo(np., rejestry bazowe, rejestry graniczne - base and limit registers). Przestrzeń adresów logicznych i fizycznych Koncepcja adresów logicznych i fizycznych: Adresy logiczne (wirtualne) generowane przez CPU. Adresy fizyczne widziane przez jednostkę pamięci. Adresy logiczne i fizyczne są: takie same, gdy wiązanie zachodzi w czasie kompilacji lub ładowania, różne, gdy wiązanie ma miejsce w czasie wykonania. 4.6 4.8

Jednostka zarządzania pamięcią Memory-Management Unit (MMU) Urządzenie sprzętowe, które odwzorowuje adresy wirtualne na fizyczne. MMU zawartość rejestru relokacji jest dodawana do każdego adresu generowanego przez proces użytkownika odwołującego się do pamięci. Program użytkownika operuje adresami logicznymi; nigdy nie posługuje się rzeczywistymi, fizycznymi adresami. Ładowanie dynamiczne Procedura jest ładowana dopiero po wywołaniu. Lepsze wykorzystanie pamięci; procedury niewywoływane nie są ładowane. Efektywne, gdy obszerne fragmenty kodu rzadko wywoływane. 4.9 4.11 Relokacja dynamiczna Łączenie dynamiczne Łączenie konsolidacja (linking) opóźniane aż do czasu wykonywania programu. Małe fragmenty kodu (stub), przeznaczone do lokalizacji procedur bibliotecznych rezydujących w pamięci. Stub zostaje zastępowany adresem procedur, a następnie procedura jest wykonywana. System operacyjny sprawdza, czy procedura jest obecna w przestrzeni adresowej procesu. Łączenie dynamiczne jest szczególnie pożyteczne w odniesieniu do bibliotek. 4.10 4.12

Nakładki (overlays) Wymiana (swapping) Wpamięci przechowuje się tylko te instrukcje i dane, które są potrzebne w danym czasie. Konieczne, gdy proces zajmuje więcej pamięci, niż mu przydzielono. Implementacja na poziomie użytkownika. Proces może zostać czasowo wysłany z pamięci głównej do zewnętrznej (backing store), a po jakimś czasie sprowadzony ponownie do pamięci głównej celem kontynuowania wykonywania. Pamięć zewnętrzna (backing store) szybki dysk, dostatecznie pojemny, zdolny do przechowywania kopii obrazów pamięci używanej przez wszystkich użytkowników; musi zapewniać dostęp bezpośredni. Podczas wymiany najdłużej trwają transmisje; czas transmisji wprost proporcjonalny do objętości pamięci wymienianej. Wróżnych systemach modyfikacje systemu wymiany, np. dla UNIX, Linux, czy Windows. 4.13 4.15 Nakładki dla assemblera dwuprzebiegowego Wymiana 4.14 4.16

Alokacja ciągła Alokacja ciągła (cd.) Pamięć główna zwykle jest dzielona na dwie partycje (obszary): Dla rezydującego systemu operacyjnego; zwykle dolna przestrzeń adresowa, łącznie z wektorem przerwań. Dla procesów użytkowników; zwykle w obszarze górnym pamięci. Przydzielanie wielu obszarów Dziura (Hole) blok dostępnej pamięci; rozmiary różne. Procesowi przydzielana jest dziura o wystarczającej pojemności. System operacyjny przechowuje informacje dotyczące: a) przydzielonych partycji b) wolnych partycji (dziur) Przydział (alokacja) pojedynczego obszaru. Rejestr relokacji (bazowy) używany do wzajemnej ochrony procesów użytkowników. Rejestr relokacji zawiera wartość najmniejszego adresu fizycznego; Rejestr graniczny zawiera max. wartość dla adresów logicznych;. OS process 5 process 8 OS process 5 OS process 5 process 9 OS process 5 process 9 process 10 process 2 process 2 process 2 process 2 4.17 4.19 Przemieszczanie dynamiczne Problem dynamicznej alokacji pamięci Strategie wyboru wolnego obszaru (dziury). Pierwsza pasująca (first-fit): Przydzielanie pierwszego obszaru wystarczająco dużego. Najlepiej pasująca (best-fit): Przydzielanie najmniejszego obszaru, wystarczająco dużego; wymaga przeszukiwania całej listy (jeśli nie jest uporządkowana); Pozostająca część obszaru jest najmniejsza. Najgorzej pasująca (worst-fit): Przydzielanie największej dziury. First-fit i best-fit lepsze niż worst-fit ze względu na szybkość i wykorzystanie pamięci. 4.18 4.20

Fragmentacja Translacja adresów Fragmentacja zewnętrzna (external fragmentation) suma wolnych obszarów wystarczająco duża dla spełnienia zamówienia, ale nie stanowi spójnego obszaru. Fragmentacja wewnętrzna (internal fragmentation) przydzielono nieco więcej pamięci niż zamawiano; niewykorzystana część partycji nie może być przydzielona innemu procesowi. Redukcja fragmentacji zewnętrznej poprzez upakowanie pamięci (compaction): Przemieszczenie zawartości pamięci tak, aby cała wolna pamięć znalazła się w jednym bloku (partycji). Upakowanie możliwe tylko wtedy, gdy relokacja adresów dynamiczna i wykonywana w czasie wykonywania programu. Adres generowany przez CPU jest podzielony na: Numer strony (p) (page number) używany jako indeks do tabeli stron (zawierającej nr ramki), która służy do wyznaczenia adresu bazowego każdej strony w pamięci fizycznej (nr ramki*rozmiar ramki). Odległość na stronie (d) (page offset) wpołączeniu z adresem bazowym służy do wyznaczenia adresu fizycznego przesyłanego do MMU. 4.21 4.23 Stronicowanie (paging) Translacja adresów - schemat Przestrzeń adresów logicznych procesu może być nieciągła; procesowi przydzielana jest dostępny obszar pamięci fizycznej. Pamięć fizyczna jest dzielona na bloki o stałym rozmiarze, zwane ramkami (frames); rozmiar jest potęgą 2, 512-8192 bajtów. Pamięć logiczna jest dzielona na bloki o tym samym rozmiarze nazywane stronami (pages). Prowadzić rejestr wolnych ramek. Aby uruchomić program o rozmiarze n stron należy znaleźć n wolnych ramek i załadować do nich program. Tabela stron translacja adresów logicznych na fizyczne. Fragmentacja wewnętrzna możliwa. 4.22 4.24

Przykład 1 Wolne ramki Przed przydziałem Po przydziale 4.25 4.27 Przykład 2 Implementacja tabeli stron Tabela stron jest przechowywana w pamięci głównej (operacyjnej). Rejestr bazowy tabeli stron (page-table base register (PTBR)) - wskazuje na tabelę. Rejestr rozmiaru tabeli stron (page-table length register (PRLR)) zawiera rozmiar tabeli stron. Każdy dostęp do instrukcji/danych wymaga dwu dostępów do pamięci (jeden do tabeli stron, drugi do instrukcji/danych). Problem może być rozwiązany poprzez zastosowanie pamięci asocjacyjnej szybka pamięć notatnikowa (cache); inna nazwa to bufor translacji bliskiego otoczenia (translation look-aside buffers (TLBs)) 4.26 4.28

Pamięć asocjacyjna TLB Ochrona pamięci Translacja adresu Translacja (A, A ): Page # Frame # Jeśli A jest w rejestrze asocjacyjnym, pobierz nr ramki. W przeciwnym razie weź nr ramki z tabeli stron. Realizacja poprzez dołączenie bitu ochrony dla każdej ramki. Do każdej pozycji w tabeli stron dołącza się bit ważności (valid-invalid bit): valid oznacza, że strona jest w przestrzeni adresów logicznych procesu (strona jest legalna). invalid w przeciwnym przypadku. 4.29 4.31 Stronicowanie TLB Valid (v) / Invalid (i) Bit tabeli stron 4.30 4.32

Struktura tabeli stron Przykład tabeli dwupoziomowej Stronicowanie hierarchiczne (Hierarchical Paging) Tabele mieszane (Hashed Page Tables) Tabele odwrotne (Inverted Page Tables) Adres logiczny (maszyna 32-bit, rozmiar strony 4K) podzielony na: nr strony (20 bitów). ofset na stronie (12 bitów). Ponieważ tabela stron jest stronicowana, to numer strony jest dalej podzielony na: nr strony (10-bitów). ofset na stronie (10-bitów). Adres logiczny: Nr strony ofset p 1 p 2 d 10 10 12 gdzie p 1 indeks dla zewnętrznej tabeli stron, p 2 jest przesunięciem względem początku strony w tabeli stron. 4.33 4.35 Tabele hierarchiczne Dwupoziomowa tabela stron Przestrzeń adresów logicznych rozdzielona pomiędzy wiele tabel stron. Prosta technika: dwupoziomowa tabela stron. 4.34 4.36

Schemat translacji adresów Przykład stron dzielonych Dla stronicowania dwupoziomowego w architekturze 32-bitowej. 4.37 4.39 Strony dzielone Segmentacja Kod dzielony Kod wznawialny (reentrant) kod tylko do odczytu współużytkowany przez procesy (np. edytory tekstu, kompilatory, systemy okienkowe itp.). Musi pojawiać się w tej samej lokacji przestrzeni adresów logicznych wszystkich procesów. Kod i dane prywatne Każdy proces posiada oddzielną kopię kodu i danych. Strony z prywatnym kodem i danymi mogą pojawiać się w dowolnym miejscu przestrzeni adresów logicznych. Schemat zarządzania pamięcią jest zgodny ze sposobem widzenia pamięci przez użytkownika. Program jest zbiorem segmentów. Segment to jednostka logiczna, taka jak: program główny (main program), procedura (procedure), funkcja (function), metoda (method), obiekt (object), zmienne lokalne i globalne (local, global variables) blok wspólny (common block), stos (stack), tabela symboli (symbol table), tablice (arrays). 4.38 4.40

Program widziany przez użytkownika Architektura segmentacji Adres logiczny składa się z dwóch części: <segment-number, offset>, Tabela segmentów (segment table) zawiera: Baza (base) adres fizyczny początku segmentu w pamięci. Ograniczenie (limit) długość segmentu. Rejestr bazowy tabeli segmentów (segment-table base register (STBR)) wskazuje lokację tabeli segmentów w pamięci. Rejestr długości (segment-table length register (STLR)) zawiera liczbę (s) segmentów w programie; s legalne gdy s < STLR. 4.41 4.43 Logika segmentacji Architektura segmentacji (cd.) 1 1 4 Relokacja. dynamiczna za pośrednictwem tabeli segmentów. 2 Dzielenie. Segmenty dzielone (shared segments) 3 4 2 3 Wspólny numer segmentu (same segment number). Alokacja (allocation). Pierwszy pasujący/ najlepiej pasujący (first fit/best fit) Fragmentacja zewnętrzna (external fragmentation). Przestrzeń użytkownika Przestrzeń pamięci fizycznej 4.42 4.44

Architektura segmentacji (cd.) Przykład segmentacji Ochrona. Każda pozycja w tabeli segmentów zawiera dodatkowo: Bit ważności (validation bit) = 0 => segment nielegalny Uprawnienia do odczytu/zapisu/wykonania (read/write/execute privileges). Zkażdym segmentem związane są bity ochrony; dzielenie kodu na poziomie segmentu. Segmenty różnej długości, przydział pamięci dynamicznie. 4.45 4.47 Segmentation Hardware Dzielenie segmentów 4.46 4.48

Dzielenie segmentów 4.49 Intel 30386 Address Translation 4.50