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

Podobne dokumenty
Zarządzanie pamięcią operacyjną

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

Od programu źródłowego do procesu

Zarządzanie pamięcią operacyjną

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

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

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

Architektura komputerów

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

Wykład 7. Zarządzanie 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

Zarządzanie pamięcią w systemie operacyjnym

Systemy Operacyjne Zarządzanie pamięcią operacyjną

Zarz arz dzanie pam dzanie ięci ę ą

Zarządzanie zasobami pamięci

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

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

Systemy operacyjne III

ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ

Schematy zarzadzania pamięcia

Systemy Operacyjne Pamięć wirtualna cz. 2

Zarz arz dzanie pam dzanie ięci ę ą

Od programu źródłowego do procesu

dr inż. Jarosław Forenc

dr inŝ. Jarosław Forenc

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

Stronicowanie w systemie pamięci wirtualnej

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

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

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

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

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

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

Zbigniew S. Szewczak Podstawy Systemów Operacyjnych

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

System pamięci. Pamięć wirtualna

System pamięci. Pamięć wirtualna

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

System pamięci. Pamięć wirtualna

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

Budowa systemów komputerowych

Hierarchia pamięci w systemie komputerowym

Architektura komputerów

Architektura komputerów

dr inż. Jarosław Forenc

Mikroprocesory rodziny INTEL 80x86

Technologie informacyjne (2) Zdzisław Szyjewski

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

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

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]

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

System plików. dr inż. Krzysztof Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

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

Zarz¹dzanie pamiêci¹

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

Podstawy. Pamięć wirtualna. (demand paging)

Architektura systemów informatycznych

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

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

ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ

KOMPONENTY SYSTEMÓW OPERACYJNYCH

Podstawowe zagadnienia informatyki

Organizacja typowego mikroprocesora

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

1. Rola pamięci operacyjnej

Współpraca procesora ColdFire z pamięcią

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

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

Sprzętowe wspomaganie pamięci wirtualnej

System plików przykłady. implementacji

Architektura komputerów

Pamięć wirtualna w AS/400

obszar bezpośrednio dostępny dla procesora rozkazy: load, store (PAO rejestr procesora)

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Haszowanie (adresowanie rozpraszające, mieszające)

System plików przykłady implementacji

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Dyski. Mechanizmy składowania

Zarządzanie pamięcią operacyjną

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

Tworzenie pliku Zapisywanie pliku Czytanie pliku Zmiana pozycji w pliku Usuwanie pliku Skracanie pliku

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

Systemy Operacyjne Pamięć wirtualna cz. 1

ARCHITEKTURA PROCESORA,

Działanie systemu operacyjnego

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

, " _/'--- " ~ n\l f.4e ' v. ,,v P-J.. ~ v v lu J. ... j -:;.",II. ,""", ",,> I->~" re. dr. f It41I r> ~ '<Q., M-c 'le...,,e. b,n '" u /.

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

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

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

Działanie systemu operacyjnego

Podstawy Informatyki Języki programowania c.d.

Mikroprocesor Operacje wejścia / wyjścia

Działanie systemu operacyjnego

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Architektura systemów informatycznych

Transkrypt:

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

Cele wykładu Przedstawienie sposobów organizacji pamięci komputera Przedstawienie technik zarządzania pamięcią

Podstawy Przed uruchomieniem program musi być wczytany z pamięci Pamięć główna i rejestry procesora to jedyne jednostki dostępne dla CPU

Podstawy Dostęp do rejestrów jest bardzo szybki Dostęp do pamięci głównej wolniejszy (z tego powodu istnieją bufory CPU)

Podstawy Procesy użytkowników mogą mieć dostęp jedynie do pamięci im przypisanej Ograniczenie to implementuje się przy pomocy dwóch rejestrów

Podstawy

Wiązanie adresów Z poziomu użytkownika odwołanie do pamięci następuje zazwyczaj symbolicznie (np. zmienna i ) Takie nazwy muszą być związane z adresami fizycznej pamięci Proces ten odbywa się w jednym z trzech momentów

Wiązanie adresów Faza kompilacji: jeżeli w trakcie kompilacji znane jest miejsce programu w pamięci, kompilator może wygenerować kod bezwzględny zawierający adresy pamięci. Wymaga rekompilacji przy zmianach. Zastosowanie: MS-DOS, plik.com zawiera dane o pamięci

Podstawy Faza ładowania: kompilator generuje kod przemieszczalny, w którym adresy określone są względem lokalizacji początkowej programu. Wiązanie ostatecznie odbywa się w trakcie ładowania programu przez moduł ładujący. Przy zmianach wymaga ponownego załadowania programu.

Podstawy Faza wykonania: jeżeli proces może zmieniać lokalizację w pamięci w trakcie wykonania, powiązanie adresów fizycznych musi być odłożone do czasu wykonania danego fragmentu kodu. Wymaga wspomagania sprzętowego. Najczęściej stosowane rozwiązanie.

Fazy procesu

Adresy fizyczne vs logiczne Adresy logiczne (wirtualne) generowane przez CPU Jednostki pamięci widzą adresy fizyczne (rejestr adresowy) Adresy fizyczne i logiczne są takie same jeżeli zostały powiązane na etapie kompilacji/ładowania Powiązanie podczas wykonania generuje odmienny zestaw adresów logicznych i fizycznych (przestrzeń adresów logicznych i fizycznych)

Adresy fizyczne vs logiczne Wiązanie podczas wykonania generuje odmienny zestaw adresów logicznych i fizycznych (przestrzeń adresów logicznych i fizycznych) Za odwzorowanie adresów fizycznych w logiczne odpowiedzialna jest jednostka zarządzania pamięcią Jest to jednostka sprzętowa

Adresy fizyczne vs logiczne Istnieją różne sposoby odwzorowania pamięci wirtualnej w fizyczną Najprostszy: rejestr relokacji Na poziomie sprzętowym do każdego adresu logicznego dodana pewna wartość liczbowa Z poziomu użytkownika adresy fizyczne są niewidoczne Rejestry są przesuwane tylko gdy dochodzi do odwołania się do komórki pamięci, np. przy pobraniu danych

Rejestr przesunięć

Ładowanie dynamiczne Dotychczas zakładaliśmy, że cały program jest ładowany do pamięci Ładowanie dynamiczne pozwala zoptymalizować wykorzystanie pamięci Do pamięci ładowane są tylko podprogramy, których wykonanie jest konieczne w danym momencie

Ładowanie dynamiczne Przed wykonaniem danego podprogramu należy sprawdzić czy znajduje się on w pamięci Każdy podprogram znajduje się na dysku w postaci przemieszczalnej Odpowiedzialność projektowania oprogramowania spoczywa na programiście OS może dostarczać procedury ułatwiające korzystanie z ładowania dynamicznego

Konsolidacja dynamiczna

Konsolidacja dynamiczna Niektóre systemu umożliwiają statyczną konsolidację Statyczna konsolidacja wymaga dołączenia do obrazu binarnego kopii biblioteki języka (lub podprogramów) Rozwiązanie powoduje nieoptymalne użycie zasobów

Konsolidacja dynamiczna W przypadku konsolidacji dynamicznej w miejscu odwołania bibliotecznego znajduje się namiastka Namiastka to krótki fragment kodu zawierający instrukcję znalezienia potrzebnej biblioteki Wykonanie namiastki powoduje: 1) sprawdzenia czy dany fragment biblioteki nie jest załadowany do pamięci 2) ewentualne ładowanie programu do pamięci

Konsolidacja dynamiczna Rozwiązanie pozwala na prostą wymianę biblioteki na nowszą wersję Jeżeli program wymaga działania ze starą wersją, informację o wersji dostarcza się do programu i biblioteki Systemy tego typu nazywa się bibliotekami dzielonymi

Konsolidacja dynamiczna Wymaga wsparcia OS Jeżeli pamięć procesów jest chroniona tylko OS może sprawdzać i udostępniać kod między procesami

Wymiana Wykonanie procesu możliwe jest wówczas gdy znajduje się w pamięci Proces może być wymieniany: odsyłany z pamięci operacyjnej do pamięci pomocniczej i sprowadzany z powrotem Umożliwia to sytuację, w której fizyczna pamięć procesów jest większa niż pamięć operacyjna

Wymiana

Wymiana Do wymiany potrzebna jest pamięć pomocnicza: zazwyczaj szybki dysk o odpowiedniej pojemności. Wymiana stosowana np. w algorytmach planowania priorytetowego (wtaczanie i wytaczanie procesów o odpowiednich priorytetach)

Wymiana OS utrzymuje kolejkę procesów gotowych (pamięć operacyjna+pomocnicza) Planista wybiera proces do wykonania Ekspedytor odpowiada za ładowanie i usuwanie procesów z pamięci operacyjnej Ładowanie/usuwanie zabiera określoną ilość czasu

Wymiana Przykład: proces 100MB, prędkość przesyłania z pamięci 50 MB/s, czas 2 s Przesyłanie w dwie strony, łącznie ok 4 s nie uwzględniając innych czynników (czas dostępu itp.) Czas wymiany można skrócić przez ładowanie tylko potrzebnych fragmentów procesu W tym wypadku proces musi informować o tym, ile pamięci potrzebuje

Wymiana Inne ograniczenia: Proces podlegający usunięciu z pamięci powinien być bezczynny Problemy pojawiają się np. w przypadku operacji I/O Standardowa forma wymiany rzadko spotykana w nowoczesnych OS Czasami spotyka się jej zmodyfikowane wersje

Przydział ciągły pamięci Pamięć dzielona jest między procesy użytkownika i OS W przydziale ciągłym pamięci, każdy proces umieszczony jest w jednym, zwartym fragmencie

Przydział ciągły pamięci Ochrona pamięci przy pomocy rejestru granicznego

Przydział ciągły pamięci Metoda wielu obszarów: podział pamięci na obszary Rozmiar obszaru może być zmienny Dziura wolny obszar pamięci Proces otrzymuje dziurę o odpowiednim rozmiarze Proces opuszczając pamięć pozostawia dziurę, następuje proces łączenia dziur

Przydział ciągły pamięci OS utrzymuje informację o pamięci wolnej i przydzielonej

Przydział ciągły pamięci Dynamiczny przydział pamięci: którą dziurę przyporządkować procesowi o rozmiarze n? Pierwsze dopasowanie: pierwszą pasującą Najlepsze dopasowanie: najmniejszą z pasujących (wymaga przeszukania listy) Najgorsze dopasowanie: największa z dostępnych dziur (jej pozostałości będą największe, być może najbardziej użyteczne)

Przydział ciągły pamięci W wyniku zajmowania i zwalniania pamięci przez procesy dochodzi do fragmentacji (wiele małych kawałków pamięci): fragmentacja zewnętrzna W celu uniknięcia fragmentacji zewnętrznej przydziela się procesom bloki o ustalonej długości (by nie przechowywać informacji o małych dziurach np. 2 bajtowej wielkości )

Przydział ciągły pamięci Proces może otrzymać więcej pamięci niż potrzebuje (fragmentacja wewnętrzna) Rozwiązaniem fragmentacji zewnętrznej jest upakowanie: jest to przemieszczanie i łączenie wolnych bloków pamięci.

Stronicowanie Metoda pozwalająca na nieciągłość fizycznej przestrzeni adresowej procesu Ogranicza się w niej problemu fragmentacji

Stronicowanie Pamięć fizyczną dzieli się na bloki o stałej długości (ramki) Pamięć logiczna podzielona jest na bloki o tym samym rozmiarze (strony) Gdy ma nastąpić wykonanie procesu, jego strony wprowadzane są w dowolne ramki

Stronicowanie

Stronicowanie Każdy adres wygenerowany przez procesor dzieli się na numer strony p i odległość na stronie d Numer strony jest indeksem w tablicy stron Tablica stron zawiera adresy wszystkich stron w pamięci operacyjnej W połączeniu z odległością na stronie d adres bazowy pozwala określić miejsce danych w pamięci fizycznej

Stronicowanie

Stronicowanie Rozmiar strony i ramki jest określany przez sprzęt Zwykle jest to potęga 2 Taki wybór ułatwia adresowanie Jeśli przestrzeń adresowa 2^m a rozmiar strony 2^n to adres logiczny jest postaci: page number page offset p d m -n n

Stronicowanie Przykład: strona 4 słowa; pamięć fizyczna 32 słowa

Stronicowanie Fragmentacja przykład: 2048 B rozmiar strony Proces 72776 B Proces potrzebuje 35 ramek i 1086 B Proces otrzyma 36 ramek, ostatnia będzie miała 2048-1086=962 wolnych bajtów W najgorszym razie n-1 wolnych B Średnio 1/2n B wolnych (w ostatniej ramce )

Stronicowanie Rozmiar ramki jest problemem optymalizacyjnym (preferowane małe ramki, generują dużo informacji do przechowywania)

Stronicowanie wolne ramki: a) przed przydziałem; b) po przydziale

Implementacja tablicy stron Przechowywana jest w pamięci Do jej wskazania służy rejestr bazowy tablicy stron Dostęp do komórki i: odwołanie do rejestru bazowego tablicy stron (ustalenie adresu strony w pamięci) + odwołanie do pamięci fizycznej Podsumowując: potrzeba dwóch odwołań do pamięci

Implementacja tablicy stron Rozwiązanie: bufor translacji adresów stron TLB Szybka pamięć sprzętowa przyspieszająca wyszukiwanie Wyszukiwanie równoległe Zazwyczaj może zawierać małą liczbę adresów Potrzebna implementacja zdarzeń: brak adresu, wymiana adresu

Implementacja tablicy stron Schemat działania:

Szacowanie czasu dostępu Współczynnik trafień procent numerów stron odnajdywanych w TBL np. 0,8 Czas przeszukania TBL np. 20ns Czas dostępu do pamięci 100 ns

Szacowanie czasu dostępu Gdy adres znajduje się w TBL czas dostępu wynosi: 20ns (przeszukanie) + 100ns (odwołanie do pamięci) Gdy adresu nie ma w TBL: 20ns (przeszukanie) + 100ns (odwołanie do tablicy stron) + 100ns (odwołanie do pamięci)

Efektywny czas dostępu Dla współczynnika trafień 0,8: 0,8*120+0,2*220 = 140 ns Dla współczynnika 98% O,98*120 + 0,02*220 = 122ns

Ochrona pamięci Tablica stron może również służyć do ochrony pamięci przed nieuprawnionym użyciem Dodatkowe bity w tablicy mogą służyć do oznaczenia specyfikacji pamięci (tylko do odczytu itp. )

Ochrona pamięci Bit poprawności: informuje o tym czy dana strona należy do logicznej przestrzeni procesu

Ochrona pamięci Obecnie tablice stron są bardzo pojemne, procesy nie wykorzystują ich w pełni Niektóre systemy wykorzystują dodatkowo rejestr długości tablicy stron, by przechowywać informację o wykorzystywanej długości tablicy

Strony dzielone Stronicowanie umożliwia dzielenie wspólnego kodu przez procesy Kod musi być kodem wznawialnym (niemodyfikującym samego siebie) W celu wykonanie kodu przez kilka procesów, wystarczy przechowywać jego jedną kopię Każdy proces potrzebuje dodatkowo własnej pamięci na przechowywanie danych

Strony dzielone Schemat stron dzielonych

Struktura tablicy stron Stronicowanie hierarchiczne System 32 bitowy, rozmiar strony 4KB, maksymalny rozmiar tablicy stron 2^32/2^12 ok. milion wpisów Jeżeli każda pozycja w tablicy ma 4B to rozmiar tablicy dla procesu wynosi do 4MB Tablica stron staje się zbyt duża Jednym z rozwiązań jest stronicowanie dwupoziomowe, w którym tablica stron dzielona jest na części

Stronicowanie dwupoziomowe Tablica stron jest dzielona na strony System 32 bitowy, adres logiczny to 20 bitowy numer strony i 10 bitowa odległość na stronie Dokonuje się podziału adresu strony do postaci

Stronicowanie dwupoziomowe Schemat dwupoziomowej tablicy stron

Stronicowanie dwupoziomowe Tłumaczenie adresu w dwupoziomowej architekturze 32 bitowej

Stronicowanie dwupoziomowe W systemach 64 bitowych stronicowanie dwupoziomowe wciąż prowadzi do zbyt dużego rozmiaru strony zewnętrznej Rozwiązaniem może być wprowadzenie większej liczby poziomów By rozmiar każdej ze stron miał 10 bitów potrzebne jest 7 poziomów Zastosowanie tego rozwiązania prowadziłoby do zbyt wolnego dostępu do pamięci Z tego względu stronicowanie hierarchiczne nie jest stosowane w architekturach 64 bitowych

Haszowana tablica stron Zasada działania: numer strony wirtualnej podlega haszowaniu Następuje przeszukanie listy elementów powiązanych z tablicą haszującą W przypadku poszukiwania zakończonego sukcesem buduje się adres logiczny

Haszowana tablica stron Schemat działania

Odwrócona tablica stron W stronicowaniu każdy proces posiada własną tablicę stron Innym sposobem powiązania adresów wirtualnych i fizycznych jest odwrócona tablica stron

Odwrócona tablica stron Polega ona na utworzeniu jednej tablicy przechowującej listę wszystkich stron znajdujących się aktualnie w pamięci, dla wszystkich procesów Adres logiczny składa się z: identyfikatora procesu, numeru strony, odległości

Odwrócona tablica stron Odwołanie do pamięci polega na pobraniu identyfikatora procesu i numeru strony i przeszukaniu odwróconej tablicy stron

Odwrócona tablica stron Zaletą rozwiązania jest ograniczenie pamięci potrzebnej do przechowywania tablicy Niewątpliwą wadą jest dłuższy czas dostępu, związany z koniecznością przeszukiwania tablicy Utrudnionej jest również implementowanie wspólnych obszarów pamięci

Segmentacja Odpowiada szczególnemu sposobowi widzenia pamięci przez użytkowników (podział na segmenty)

Segmentacja Adres logiczny zawiera numer segmentu oraz odległość Tablica segmentów odwzorowuje adres logiczny na adres fizyczny

Segmentacja Adres konstruuje się na podstawie wartości bazy, granica umożliwia ochronę pamięci

Segmentacja Zalety: ochrona danych segmenty pozwalają rozdzielić różne funkcje procesów przez co ochrona staje się łatwiejsza (w segmencie przeznaczonym do odczytu nie będzie dopuszczony zapis itp. ) Umożliwia dzielenie kodu między procesami

Segmentacja Przykład współdzielenia kodu

Segmentacja Segmentacja ze stronicowaniem

Segmentacje Obecnie używana w ograniczonym stopniu (nie dla każdego procesu) Procesory wciąż zapewniają wsparcie dla segmentacji

Podsumowanie