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

Podobne dokumenty
Zarządzanie pamięcią. Zarządzanie pamięcią. Podstawy. Podsystem zarządzania pamięcią. Zadania podsystemu: 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

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

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

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

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

Zarządzanie zasobami pamięci

Zarządzanie pamięcią w systemie operacyjnym

Zbigniew S. Szewczak Podstawy Systemów Operacyjnych

Architektura komputerów

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

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

dr inż. Jarosław Forenc

Systemy Operacyjne Zarządzanie pamięcią operacyjną

Podstawy. Pamięć wirtualna. (demand paging)

Schematy zarzadzania pamięcia

Zarz¹dzanie pamiêci¹

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

ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ

Współpraca procesora ColdFire z pamięcią

Systemy operacyjne III

Stronicowanie w systemie pamięci wirtualnej

Podstawowe zagadnienia informatyki

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

Zarz arz dzanie pam dzanie ięci ę ą

Od programu źródłowego do procesu

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

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

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

System pamięci. Pamięć wirtualna

System pamięci. Pamięć wirtualna

Hierarchia pamięci w systemie komputerowym

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

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.

Systemy operacyjne, architektura komputerów

Architektura systemów informatycznych

Sprzętowe wspomaganie pamięci wirtualnej

Technologie informacyjne (2) Zdzisław Szyjewski

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

Programowanie niskopoziomowe

Architektura komputerów

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

Mikroprocesor Operacje wejścia / wyjścia

Mikroprocesory rodziny INTEL 80x86

1. Rola pamięci operacyjnej

Ograniczenia efektywności systemu pamięci

ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ

Systemy operacyjne Zarządzanie pamięcią

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

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

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

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

Wybrane zagadnienia elektroniki współczesnej

Mikroinformatyka. Tryb wirtualny

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

Programowanie w asemblerze Linkowanie

Budowa systemów komputerowych

Zarządzanie pamięcią operacyjną

Komputery przemysłowe i systemy wbudowane

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

Procesory rodziny x86. 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

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

Działanie systemu operacyjnego

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

Systemy operacyjne system przerwań

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

System operacyjny MACH

14. Elementy systemu wykonawczego

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

Działanie systemu operacyjnego

System plików przykłady. implementacji

Działanie systemu operacyjnego

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

Architektura komputerów

Logiczny model komputera i działanie procesora. Część 1.

Architektura systemów informatycznych

Technologia informacyjna. Urządzenia techniki komputerowej

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

Architektura komputerów

Organizacja pamięci wewnętrznej komputerów

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Rozszerzalne kody operacji (przykład)

Transkrypt:

W systemie wielozadaniowym: W pamię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. Podsystem zarządzania pamięcią - zadania: Relokacja (relocation) Alokacja (allocation) Ochrona (protection) Współdzielenie (sharing) Organizacja logiczna Organizacja fizyczna 9.1 9.2 Podstawy Podstawy Wymiana (swapping) Alokacja ciągła (contiguous allocation) Stronicowanie (paging) Segmentacja (segmentation) Segmentacja stronicowana (segmentation with paging) 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. 9.3 9.4 Wiązanie (binding) rozkazów i danych z adresami pamięci Fragment programu: Wjęzyku assembler: Jakie wartości adresów przypisać Rx i Ry?: 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. W czasie ł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). 9.5 9.6 1

Wieloetapowe przetwarzanie programu użytkownika 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 zachdzi w czasie kompilacji lub ładowania, różne, gdy wiązanie ma miejsce w czasie wykonania. 9.7 9.8 Jednostka zarządzania pamięcią Memory-Management Unit (MMU) Relokacja dynamiczna 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. 9.9 9.10 Ładowanie dynamiczne Łączenie 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. Łą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. 9.11 9.12 2

Nakładki (overlays) Nakładki dla assemblera dwuprzebiegowego 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. 9.13 9.14 Wymiana (swapping) Wymiana 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. 9.15 9.16 Alokacja ciągła Przemieszczanie dynamiczne 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. 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;. 9.17 9.18 3

Alokacja ciągła (cd.) Problem dynamicznej alokacji pamięci Przydzielanie wielu obszarów OS process 5 process 8 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) OS process 5 OS process 5 process 9 OS process 5 process 9 process 10 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. process 2 process 2 process 2 process 2 9.19 9.20 Fragmentacja Stronicowanie (paging) 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. 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. 9.21 9.22 Translacja adresów Translacja adresów - schemat 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) w połączeniu z adresem bazowym służy do wyznaczenia adresu fizycznego przesyłanego do MMU. 9.23 9.24 4

Przykład 1 Przykład 2 9.25 9.26 Wolne ramki 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)) Przed przydziałem Po przydziale 9.27 9.28 Pamięć asocjacyjna TLB Stronicowanie TLB Translacja adresu Page # Frame # Translacja (A, A ): Jeśli A jest w rejestrze asocjacyjnym, pobierz nr ramki. W przeciwnym razie weź nr ramki z tabeli stron. 9.29 9.30 5

Efektywny czas dostępu Ochrona pamięci Szukanie asocjacyjne = ε jednostek czasu Załóżmy cykl pamięci = 1 mikrosekunda Współczynnik trafień (hit ratio) procent trafień numeru strony w rejestrze asocjacyjnym TLB. Hit ratio = α Efektywny czas dostępu (Effective Access Time (EAT)) EAT = (1 + ε) α +(2+ε)(1 α) =2+ε α 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. 9.31 9.32 Valid (v) / Invalid (i) Bit tabeli stron Struktura tabeli stron Stronicowanie hierarchiczne (Hierarchical Paging) Tabele mieszane (Hashed Page Tables) Tabele odwrotne (Inverted Page Tables) 9.33 9.34 Tabele hierarchiczne Przykład tabeli dwupoziomowej Przestrzeń adresów logicznych rozdzielona pomiędzy wiele tabeli stron. Prosta technika: dwupoziomowa tabela stron. 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. 9.35 9.36 6

Dwupoziomowa tabela stron Schemat translacji adresów Dla stronicowania dwupoziomowego w architekturze 32-bitowej. 9.37 9.38 Hashed Page Table Inverted Page Table Architecture 9.39 9.40 Strony dzielone Przykład stron dzielonych 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. 9.41 9.42 7

Segmentacja Program widziany przez użytkownika 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). 9.43 9.44 Logika segmentacji Architektura segmentacji 1 2 3 4 Przestrzeń użytkownika 1 4 2 3 Przestrzeń pamięci fizycznej 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. 9.45 9.46 Architektura segmentacji (cd.) Architektura segmentacji (cd.) Relokacja. dynamiczna za pośrednictwem tabeli segmentów. Dzielenie. Segmenty dzielone (shared segments) Wspólny numer segmentu (same segment number). Alokacja (allocation). Pierwszy pasujący/ najlepiej pasujący (first fit/best fit) Fragmentacja zewnętrzna (external fragmentation). 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 segmentaem związane są bity ochrony; dzielenie kodu na poziomie segmentu. Segmenty różnej długości, przydział pamięci dynamicznie. 9.47 9.48 8

Segmentation Hardware Przykład segmentacji 9.49 9.50 Dzielenie segmentów Dzielenie segmentów 9.51 9.52 Intel 30386 Address Translation 9.53 9