PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

Podobne dokumenty
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

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

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią operacyjną

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

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

KOMPONENTY SYSTEMÓW OPERACYJNYCH

Zarządzanie zasobami pamięci

Zarządzanie pamięcią w systemie operacyjnym

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

ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ

Systemy Operacyjne Zarządzanie pamięcią operacyjną

dr inż. Jarosław Forenc

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

Organizacja typowego mikroprocesora

Architektura komputerów

Systemy operacyjne III

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

Stronicowanie w systemie pamięci wirtualnej

Budowa systemów komputerowych

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

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

Podstawy programowania

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

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

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

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

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

Technologie informacyjne (2) Zdzisław Szyjewski

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

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]

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

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

Zarz arz dzanie pam dzanie ięci ę ą

Zarz arz dzanie pam dzanie ięci ę ą

Od programu źródłowego do procesu

Architektura komputerów

dr inż. Jarosław Forenc

dr inŝ. Jarosław Forenc

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

Systemy Operacyjne Pamięć wirtualna cz. 2

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

Architektura komputerów

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

Zarz¹dzanie pamiêci¹

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

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Podstawy Informatyki Języki programowania c.d.

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

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

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

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

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

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

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

ARCHITEKTURA PROCESORA,

1.1 Definicja procesu

Współpraca procesora ColdFire z pamięcią

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

Zarządzanie procesami i wątkami

Architektura komputerów

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Schematy zarzadzania pamięcia

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

Mikroinformatyka. Wielozadaniowość

Lab 9 Podstawy Programowania

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

Programowanie Niskopoziomowe

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Budowa komputera Komputer computer computare

Algorytm. a programowanie -

Budowa i zasada działania komputera. dr Artur Bartoszewski

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

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

1. Rola pamięci operacyjnej

Działanie systemu operacyjnego

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

4. Procesy pojęcia podstawowe

Mikroprocesor Operacje wejścia / wyjścia

Podstawy. Pamięć wirtualna. (demand paging)

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Działanie systemu operacyjnego

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

Zbigniew S. Szewczak Podstawy Systemów Operacyjnych

Pytania do treści wykładów:

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

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

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

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

Zarządzanie procesorem

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

Systemy Operacyjne Pamięć wirtualna cz. 1

dr inż. Jarosław Forenc

Transkrypt:

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ dr inż. Krzysztof Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski k.patan@issi.uz.zgora.pl

Wstęp Pamięć komputera wielka tablica słów (bajtów) oznaczonych adresami Wykonanie programu: proces jest ładowany do pamięci procesor pobiera rozkazy z pamięci stosownie do wartości licznika rozkazów Typowy cykl wykonania rozkazu pobranie rozkazu z pamięci dekodowanie rozkazu pobranie z pamięci dodatkowych argumentów wyniki są przechowywane w pamięci

Wstęp Pamięć komputera wielka tablica słów (bajtów) oznaczonych adresami Wykonanie programu: proces jest ładowany do pamięci procesor pobiera rozkazy z pamięci stosownie do wartości licznika rozkazów Typowy cykl wykonania rozkazu pobranie rozkazu z pamięci dekodowanie rozkazu pobranie z pamięci dodatkowych argumentów wyniki są przechowywane w pamięci

Wstęp Pamięć komputera wielka tablica słów (bajtów) oznaczonych adresami Wykonanie programu: proces jest ładowany do pamięci procesor pobiera rozkazy z pamięci stosownie do wartości licznika rozkazów Typowy cykl wykonania rozkazu pobranie rozkazu z pamięci dekodowanie rozkazu pobranie z pamięci dodatkowych argumentów wyniki są przechowywane w pamięci

Wiązanie adresów Wiązanie adresów może być wykonywane podczas: 1 kompilacji sposób ten jest używany w sytuacjach kiedy znane jest miejsce ulokowania procesu w pamięci. Generowany jest tzw. kod bezwzględny. Jeżeli adres początkowy ulegnie zmianie to program należy przekompilować 2 ładowania sposób ten jest używany wtedy, gdy podczas kompilacji nie wiadomo gdzie będzie umieszczony proces. Kompilator wytwarza tzw. kod przemieszczalny i wiązanie adresów jest dokonywane podczas ładowania procesu do pamięci. Jeżeli adres początkowy ulegnie zmianie to wystarczy ponownie załadować program z uwzględnieniem nowej wartości adresu początkowego 3 wykonania jeśli proces będzie ulegał przemieszczeniom z jednego miejsca pamięci do innego to należy zaczekać z wiązaniem adresów aż do czasu jego wykonania. Wymagane jest tutaj zastosowanie dodatkowego sprzętu

Wiązanie adresów Wiązanie adresów może być wykonywane podczas: 1 kompilacji sposób ten jest używany w sytuacjach kiedy znane jest miejsce ulokowania procesu w pamięci. Generowany jest tzw. kod bezwzględny. Jeżeli adres początkowy ulegnie zmianie to program należy przekompilować 2 ładowania sposób ten jest używany wtedy, gdy podczas kompilacji nie wiadomo gdzie będzie umieszczony proces. Kompilator wytwarza tzw. kod przemieszczalny i wiązanie adresów jest dokonywane podczas ładowania procesu do pamięci. Jeżeli adres początkowy ulegnie zmianie to wystarczy ponownie załadować program z uwzględnieniem nowej wartości adresu początkowego 3 wykonania jeśli proces będzie ulegał przemieszczeniom z jednego miejsca pamięci do innego to należy zaczekać z wiązaniem adresów aż do czasu jego wykonania. Wymagane jest tutaj zastosowanie dodatkowego sprzętu

Wiązanie adresów Wiązanie adresów może być wykonywane podczas: 1 kompilacji sposób ten jest używany w sytuacjach kiedy znane jest miejsce ulokowania procesu w pamięci. Generowany jest tzw. kod bezwzględny. Jeżeli adres początkowy ulegnie zmianie to program należy przekompilować 2 ładowania sposób ten jest używany wtedy, gdy podczas kompilacji nie wiadomo gdzie będzie umieszczony proces. Kompilator wytwarza tzw. kod przemieszczalny i wiązanie adresów jest dokonywane podczas ładowania procesu do pamięci. Jeżeli adres początkowy ulegnie zmianie to wystarczy ponownie załadować program z uwzględnieniem nowej wartości adresu początkowego 3 wykonania jeśli proces będzie ulegał przemieszczeniom z jednego miejsca pamięci do innego to należy zaczekać z wiązaniem adresów aż do czasu jego wykonania. Wymagane jest tutaj zastosowanie dodatkowego sprzętu

Przetwarzanie programu użytkownika program Ÿród³owy modu³y wynikowe kompilator modu³ wynikowy czas kompilacji biblioteki systemowe konsolidator modu³ ³adowalny czas ³adowania biblioteki ³adowane dynamicznie program ³aduj¹cy obraz binarny w pamiêci czas wykonywania

Ładowanie dynamiczne Podprogramy nie są ładowane do pamięci dopóki nie zostaną wywołane Do pamięci zostaje załadowany tylko program główny. W przypadku potrzeby wywołania podprogramu: sprawdzamy czy ten podprogram znajduje się w pamięci jeżeli nie to wywoływany jest tzw. program łączący program łączący wprowadza żądany podprogram do pamięci oraz uaktualnia tablicę adresów sterowanie zostaje przekazane do ładowanego podprogramu

Ładowanie dynamiczne Podprogramy nie są ładowane do pamięci dopóki nie zostaną wywołane Do pamięci zostaje załadowany tylko program główny. W przypadku potrzeby wywołania podprogramu: sprawdzamy czy ten podprogram znajduje się w pamięci jeżeli nie to wywoływany jest tzw. program łączący program łączący wprowadza żądany podprogram do pamięci oraz uaktualnia tablicę adresów sterowanie zostaje przekazane do ładowanego podprogramu

Ładowanie dynamiczne Podprogramy nie są ładowane do pamięci dopóki nie zostaną wywołane Do pamięci zostaje załadowany tylko program główny. W przypadku potrzeby wywołania podprogramu: sprawdzamy czy ten podprogram znajduje się w pamięci jeżeli nie to wywoływany jest tzw. program łączący program łączący wprowadza żądany podprogram do pamięci oraz uaktualnia tablicę adresów sterowanie zostaje przekazane do ładowanego podprogramu

Ładowanie dynamiczne Podprogramy nie są ładowane do pamięci dopóki nie zostaną wywołane Do pamięci zostaje załadowany tylko program główny. W przypadku potrzeby wywołania podprogramu: sprawdzamy czy ten podprogram znajduje się w pamięci jeżeli nie to wywoływany jest tzw. program łączący program łączący wprowadza żądany podprogram do pamięci oraz uaktualnia tablicę adresów sterowanie zostaje przekazane do ładowanego podprogramu

Ładowanie dynamiczne Podprogramy nie są ładowane do pamięci dopóki nie zostaną wywołane Do pamięci zostaje załadowany tylko program główny. W przypadku potrzeby wywołania podprogramu: sprawdzamy czy ten podprogram znajduje się w pamięci jeżeli nie to wywoływany jest tzw. program łączący program łączący wprowadza żądany podprogram do pamięci oraz uaktualnia tablicę adresów sterowanie zostaje przekazane do ładowanego podprogramu

Zalety nigdy nie zostanie załadowany podprogram, którego się nie używa metoda nie wymaga specjalnego wsparcia ze strony systemu operacyjnego Podsumowanie Użytkownicy są odpowiedzialni za zaprojektowanie programów, aby mogły korzystać z ładowania dynamicznego System operacyjny może dostarczyć bibliotek do realizacji tej metody

Zalety nigdy nie zostanie załadowany podprogram, którego się nie używa metoda nie wymaga specjalnego wsparcia ze strony systemu operacyjnego Podsumowanie Użytkownicy są odpowiedzialni za zaprojektowanie programów, aby mogły korzystać z ładowania dynamicznego System operacyjny może dostarczyć bibliotek do realizacji tej metody

Konsolidacja dynamiczna Wady W obrazie binarnym programu znajduje się tylko namiastka procedury bibliotecznej Ten fragment kodu pozwala zlokalizować odpowiedni podprogram w pamięci, bądź załadować bibliotekę z dysku Aktualizacja bibliotek biblioteka może zostać zastąpiona nową ulepszoną wersją Wszystkie programy odwołujące się do biblioteki będą automatycznie korzystały z nowej wersji wymagana pomoc ze strony systemu operacyjnego sprawdzanie czy dany podprogram znajduje się w pamięci innych procesów kontrola nad dostępem różnych procesów do tych samych komórek pamięci

Konsolidacja dynamiczna Wady W obrazie binarnym programu znajduje się tylko namiastka procedury bibliotecznej Ten fragment kodu pozwala zlokalizować odpowiedni podprogram w pamięci, bądź załadować bibliotekę z dysku Aktualizacja bibliotek biblioteka może zostać zastąpiona nową ulepszoną wersją Wszystkie programy odwołujące się do biblioteki będą automatycznie korzystały z nowej wersji wymagana pomoc ze strony systemu operacyjnego sprawdzanie czy dany podprogram znajduje się w pamięci innych procesów kontrola nad dostępem różnych procesów do tych samych komórek pamięci

Konsolidacja dynamiczna Wady W obrazie binarnym programu znajduje się tylko namiastka procedury bibliotecznej Ten fragment kodu pozwala zlokalizować odpowiedni podprogram w pamięci, bądź załadować bibliotekę z dysku Aktualizacja bibliotek biblioteka może zostać zastąpiona nową ulepszoną wersją Wszystkie programy odwołujące się do biblioteki będą automatycznie korzystały z nowej wersji wymagana pomoc ze strony systemu operacyjnego sprawdzanie czy dany podprogram znajduje się w pamięci innych procesów kontrola nad dostępem różnych procesów do tych samych komórek pamięci

Konsolidacja dynamiczna Wady W obrazie binarnym programu znajduje się tylko namiastka procedury bibliotecznej Ten fragment kodu pozwala zlokalizować odpowiedni podprogram w pamięci, bądź załadować bibliotekę z dysku Aktualizacja bibliotek biblioteka może zostać zastąpiona nową ulepszoną wersją Wszystkie programy odwołujące się do biblioteki będą automatycznie korzystały z nowej wersji wymagana pomoc ze strony systemu operacyjnego sprawdzanie czy dany podprogram znajduje się w pamięci innych procesów kontrola nad dostępem różnych procesów do tych samych komórek pamięci

Konsolidacja dynamiczna Wady W obrazie binarnym programu znajduje się tylko namiastka procedury bibliotecznej Ten fragment kodu pozwala zlokalizować odpowiedni podprogram w pamięci, bądź załadować bibliotekę z dysku Aktualizacja bibliotek biblioteka może zostać zastąpiona nową ulepszoną wersją Wszystkie programy odwołujące się do biblioteki będą automatycznie korzystały z nowej wersji wymagana pomoc ze strony systemu operacyjnego sprawdzanie czy dany podprogram znajduje się w pamięci innych procesów kontrola nad dostępem różnych procesów do tych samych komórek pamięci

Konsolidacja dynamiczna Wady W obrazie binarnym programu znajduje się tylko namiastka procedury bibliotecznej Ten fragment kodu pozwala zlokalizować odpowiedni podprogram w pamięci, bądź załadować bibliotekę z dysku Aktualizacja bibliotek biblioteka może zostać zastąpiona nową ulepszoną wersją Wszystkie programy odwołujące się do biblioteki będą automatycznie korzystały z nowej wersji wymagana pomoc ze strony systemu operacyjnego sprawdzanie czy dany podprogram znajduje się w pamięci innych procesów kontrola nad dostępem różnych procesów do tych samych komórek pamięci

Konsolidacja dynamiczna Wady W obrazie binarnym programu znajduje się tylko namiastka procedury bibliotecznej Ten fragment kodu pozwala zlokalizować odpowiedni podprogram w pamięci, bądź załadować bibliotekę z dysku Aktualizacja bibliotek biblioteka może zostać zastąpiona nową ulepszoną wersją Wszystkie programy odwołujące się do biblioteki będą automatycznie korzystały z nowej wersji wymagana pomoc ze strony systemu operacyjnego sprawdzanie czy dany podprogram znajduje się w pamięci innych procesów kontrola nad dostępem różnych procesów do tych samych komórek pamięci

Nakładki W pamięci przechowywane są tylko te rozkazy i dane, które są stale potrzebne Inne rozkazy są wprowadzane w miarę zapotrzebowania na miejsce zajmowane przez zbędne już rozkazy Zalety nakładki nie wymagają specjalnego wsparcia ze strony SO mogą być zrealizowane poprzez czytanie plików do pamięci oraz skoków w określone miejsca pamięci szybsze ładowanie danych

Nakładki W pamięci przechowywane są tylko te rozkazy i dane, które są stale potrzebne Inne rozkazy są wprowadzane w miarę zapotrzebowania na miejsce zajmowane przez zbędne już rozkazy Zalety nakładki nie wymagają specjalnego wsparcia ze strony SO mogą być zrealizowane poprzez czytanie plików do pamięci oraz skoków w określone miejsca pamięci szybsze ładowanie danych

Nakładki W pamięci przechowywane są tylko te rozkazy i dane, które są stale potrzebne Inne rozkazy są wprowadzane w miarę zapotrzebowania na miejsce zajmowane przez zbędne już rozkazy Zalety nakładki nie wymagają specjalnego wsparcia ze strony SO mogą być zrealizowane poprzez czytanie plików do pamięci oraz skoków w określone miejsca pamięci szybsze ładowanie danych

Nakładki W pamięci przechowywane są tylko te rozkazy i dane, które są stale potrzebne Inne rozkazy są wprowadzane w miarę zapotrzebowania na miejsce zajmowane przez zbędne już rozkazy Zalety nakładki nie wymagają specjalnego wsparcia ze strony SO mogą być zrealizowane poprzez czytanie plików do pamięci oraz skoków w określone miejsca pamięci szybsze ładowanie danych

Wady wolniejsze działanie - dodatkowe operacje czytania kodu jednej nakładki w miejsce innej Przykład Dwuprzebiegowy asembler. Przebieg 1 konstrukcja tablicy symboli, przebieg 2 generacja kodu maszynowego Kod przebiegu 1 Kod przebiegu 2 Tablica symboli Wspólne podprogramy RAZEM 70kB 80kB 20KB 30kB 200kB dostępna pamięć 150kB moduł obsługi nakładek 10kB

Wady wolniejsze działanie - dodatkowe operacje czytania kodu jednej nakładki w miejsce innej Przykład Dwuprzebiegowy asembler. Przebieg 1 konstrukcja tablicy symboli, przebieg 2 generacja kodu maszynowego Kod przebiegu 1 Kod przebiegu 2 Tablica symboli Wspólne podprogramy RAZEM 70kB 80kB 20KB 30kB 200kB dostępna pamięć 150kB moduł obsługi nakładek 10kB

Przebieg 1 70kB Tablica 20kB symboli Wspólne podprogramy 30kB Modu³ obs³ugi 10kB nak³adek Przebieg 2 80kB Rozmiary nakładek: Nakładka A (przebieg 1): 20kB+30kB+70kB=120kB Nakładka B (przebieg 2): 20kB+30kB+80kB=130kB

Przydział ciągły pamięci operacyjnej Przydział pojedynczego obszaru Załóżmy, że system operacyjny znajduje się w pamięci dolnej, a procesy użytkownika w górnej Zadania algorytmu przydziału pamięci: ochrona kodu i danych systemu operacyjnego przed zmianami pochodzącymi od procesów użytkownika ochrona procesów użytkownika przed zmianami spowodowanymi przez inne procesy użytkownika Rejestr graniczny Rejestr przemieszczenia CPU adres logiczny < Tak + adres fizyczny Pamiêæ operacyjna Nie Pu³apka: b³¹d adresowania

Przydział ciągły pamięci operacyjnej Przydział pojedynczego obszaru Załóżmy, że system operacyjny znajduje się w pamięci dolnej, a procesy użytkownika w górnej Zadania algorytmu przydziału pamięci: ochrona kodu i danych systemu operacyjnego przed zmianami pochodzącymi od procesów użytkownika ochrona procesów użytkownika przed zmianami spowodowanymi przez inne procesy użytkownika Rejestr graniczny Rejestr przemieszczenia CPU adres logiczny < Tak + adres fizyczny Pamiêæ operacyjna Nie Pu³apka: b³¹d adresowania

Rejestr przemieszczenia wartość najmniejszego adresu fizycznego Rejestr graniczny zakres adresów logicznych Planista CPU wybiera proces do wykonania, wtedy ekspedytor nadaje odpowiednie wartości rejestrom Przydział wielu obszarów Maksymalne wykorzystanie pamięci wiele procesów użytkowych może być załadowanych do pamięci w tym samym czasie Cała dostępna pamięć traktowana jest jak jeden wielki blok dziura Dla procesu z zapotrzebowaniem na pamięć szukana jest odpowiednio duża dziura

Rejestr przemieszczenia wartość najmniejszego adresu fizycznego Rejestr graniczny zakres adresów logicznych Planista CPU wybiera proces do wykonania, wtedy ekspedytor nadaje odpowiednie wartości rejestrom Przydział wielu obszarów Maksymalne wykorzystanie pamięci wiele procesów użytkowych może być załadowanych do pamięci w tym samym czasie Cała dostępna pamięć traktowana jest jak jeden wielki blok dziura Dla procesu z zapotrzebowaniem na pamięć szukana jest odpowiednio duża dziura

Rejestr przemieszczenia wartość najmniejszego adresu fizycznego Rejestr graniczny zakres adresów logicznych Planista CPU wybiera proces do wykonania, wtedy ekspedytor nadaje odpowiednie wartości rejestrom Przydział wielu obszarów Maksymalne wykorzystanie pamięci wiele procesów użytkowych może być załadowanych do pamięci w tym samym czasie Cała dostępna pamięć traktowana jest jak jeden wielki blok dziura Dla procesu z zapotrzebowaniem na pamięć szukana jest odpowiednio duża dziura

Przykład Mamy pamięć o rozmiarze 2560 kb i system operacyjny zajmujący 400kB. Rozplanować pamięć biorąc pod uwagę kolejkę z tabeli Proces Pamięć Faza procesora P 1 600kB 10 P 2 1000kB 5 P 3 300kB 20 P 4 700kB 8 P 5 500kB 15 planowanie zadań - metoda FCFS przydział CPU - metoda rotacyjna (kwant=1)

Wybór wolnych obszarów: strategie pierwszego bądź najlepszego dopasowania

FRAGMENTACJA Fragmentacja zewnętrzna Przestrzeń wolnej pamięci zostaje podzielona na małe kawałki. Suma wolnych obszarów może wystarczyć na spełnienie pewnego zamówienia, lecz nie tworzą one spójnego obszaru Badania statystyczne pokazały, że w strategii pierwszego dopasowania na N przydzielonych bloków z powodu fragmentacji będzie ginąć 0.5N innych bloków (1/3 pamięci bezużyteczna! reguła 50%) Fragmentacja wewnętrzna Bezużyteczny kawałek pamięci wewnątrz obszaru pamięci przydzielonego dla pewnego procesu

FRAGMENTACJA Fragmentacja zewnętrzna Przestrzeń wolnej pamięci zostaje podzielona na małe kawałki. Suma wolnych obszarów może wystarczyć na spełnienie pewnego zamówienia, lecz nie tworzą one spójnego obszaru Badania statystyczne pokazały, że w strategii pierwszego dopasowania na N przydzielonych bloków z powodu fragmentacji będzie ginąć 0.5N innych bloków (1/3 pamięci bezużyteczna! reguła 50%) Fragmentacja wewnętrzna Bezużyteczny kawałek pamięci wewnątrz obszaru pamięci przydzielonego dla pewnego procesu

FRAGMENTACJA Fragmentacja zewnętrzna Przestrzeń wolnej pamięci zostaje podzielona na małe kawałki. Suma wolnych obszarów może wystarczyć na spełnienie pewnego zamówienia, lecz nie tworzą one spójnego obszaru Badania statystyczne pokazały, że w strategii pierwszego dopasowania na N przydzielonych bloków z powodu fragmentacji będzie ginąć 0.5N innych bloków (1/3 pamięci bezużyteczna! reguła 50%) Fragmentacja wewnętrzna Bezużyteczny kawałek pamięci wewnątrz obszaru pamięci przydzielonego dla pewnego procesu

UPAKOWANIE Upakowanie rozwiązanie problemu zewnętrznej fragmentacji Poprzemieszczanie zawartości pamięci tak, aby cała wolna pamięć znalazła się w jednym wielkim bloku Uwagi! należy zmienić wewnętrzne adresy przesuwanych procesów upakowanie nie jest możliwe, gdy nadawanie adresów jest statyczne (podczas kompilacji lub ładowania) upakowanie jest możliwe gdy nadawanie adresów jest dynamiczne (podczas wykonania programu) należy oszacować koszt upakowania (jakie procesy i gdzie należy przemieszczać)

UPAKOWANIE Upakowanie rozwiązanie problemu zewnętrznej fragmentacji Poprzemieszczanie zawartości pamięci tak, aby cała wolna pamięć znalazła się w jednym wielkim bloku Uwagi! należy zmienić wewnętrzne adresy przesuwanych procesów upakowanie nie jest możliwe, gdy nadawanie adresów jest statyczne (podczas kompilacji lub ładowania) upakowanie jest możliwe gdy nadawanie adresów jest dynamiczne (podczas wykonania programu) należy oszacować koszt upakowania (jakie procesy i gdzie należy przemieszczać)

UPAKOWANIE Upakowanie rozwiązanie problemu zewnętrznej fragmentacji Poprzemieszczanie zawartości pamięci tak, aby cała wolna pamięć znalazła się w jednym wielkim bloku Uwagi! należy zmienić wewnętrzne adresy przesuwanych procesów upakowanie nie jest możliwe, gdy nadawanie adresów jest statyczne (podczas kompilacji lub ładowania) upakowanie jest możliwe gdy nadawanie adresów jest dynamiczne (podczas wykonania programu) należy oszacować koszt upakowania (jakie procesy i gdzie należy przemieszczać)

UPAKOWANIE Upakowanie rozwiązanie problemu zewnętrznej fragmentacji Poprzemieszczanie zawartości pamięci tak, aby cała wolna pamięć znalazła się w jednym wielkim bloku Uwagi! należy zmienić wewnętrzne adresy przesuwanych procesów upakowanie nie jest możliwe, gdy nadawanie adresów jest statyczne (podczas kompilacji lub ładowania) upakowanie jest możliwe gdy nadawanie adresów jest dynamiczne (podczas wykonania programu) należy oszacować koszt upakowania (jakie procesy i gdzie należy przemieszczać)

UPAKOWANIE Upakowanie rozwiązanie problemu zewnętrznej fragmentacji Poprzemieszczanie zawartości pamięci tak, aby cała wolna pamięć znalazła się w jednym wielkim bloku Uwagi! należy zmienić wewnętrzne adresy przesuwanych procesów upakowanie nie jest możliwe, gdy nadawanie adresów jest statyczne (podczas kompilacji lub ładowania) upakowanie jest możliwe gdy nadawanie adresów jest dynamiczne (podczas wykonania programu) należy oszacować koszt upakowania (jakie procesy i gdzie należy przemieszczać)

UPAKOWANIE Upakowanie rozwiązanie problemu zewnętrznej fragmentacji Poprzemieszczanie zawartości pamięci tak, aby cała wolna pamięć znalazła się w jednym wielkim bloku Uwagi! należy zmienić wewnętrzne adresy przesuwanych procesów upakowanie nie jest możliwe, gdy nadawanie adresów jest statyczne (podczas kompilacji lub ładowania) upakowanie jest możliwe gdy nadawanie adresów jest dynamiczne (podczas wykonania programu) należy oszacować koszt upakowania (jakie procesy i gdzie należy przemieszczać)

Przykład Rozważmy przydział pamięci poniżej 0 System 0 System 0 System 0 System Operacyjny 300kB Operacyjny 300kB Operacyjny 300kB Operacyjny 300kB P 1 P 1 P 1 P 1 500kB 500kB 500kB 500kB P 600kB 2 P 600kB 2 P 600kB 2 600kB P 2 1000kB 1500kB 800kB P 4 P 4 1000kB 1200kB 1200kB 1200kB 1900kB 2100kB P 3 1500kB P 4 P 4 1900kB Przydzia³ pocz¹tkowy 2100kB P 3 Przemieszczono 600kB 2100kB P 3 Przemieszczono 400kB 2100kB P 3 Przemieszczono 200kB Problemy: przemieszczenia można dokonać na wiele sposobów wybranie optymalnej strategii jest trudne

Przykład Rozważmy przydział pamięci poniżej 0 System 0 System 0 System 0 System Operacyjny 300kB Operacyjny 300kB Operacyjny 300kB Operacyjny 300kB P 1 P 1 P 1 P 1 500kB 500kB 500kB 500kB P 600kB 2 P 600kB 2 P 600kB 2 600kB P 2 1000kB 1500kB 800kB P 4 P 4 1000kB 1200kB 1200kB 1200kB 1900kB 2100kB P 3 1500kB P 4 P 4 1900kB Przydzia³ pocz¹tkowy 2100kB P 3 Przemieszczono 600kB 2100kB P 3 Przemieszczono 400kB 2100kB P 3 Przemieszczono 200kB Problemy: przemieszczenia można dokonać na wiele sposobów wybranie optymalnej strategii jest trudne

Przykład Rozważmy przydział pamięci poniżej 0 System 0 System 0 System 0 System Operacyjny 300kB Operacyjny 300kB Operacyjny 300kB Operacyjny 300kB P 1 P 1 P 1 P 1 500kB 500kB 500kB 500kB P 600kB 2 P 600kB 2 P 600kB 2 600kB P 2 1000kB 1500kB 800kB P 4 P 4 1000kB 1200kB 1200kB 1200kB 1900kB 2100kB P 3 1500kB P 4 P 4 1900kB Przydzia³ pocz¹tkowy 2100kB P 3 Przemieszczono 600kB 2100kB P 3 Przemieszczono 400kB 2100kB P 3 Przemieszczono 200kB Problemy: przemieszczenia można dokonać na wiele sposobów wybranie optymalnej strategii jest trudne

STRONICOWANIE S tronicowanie (ang. paging) jest metodą pozwalającą na rozwiązanie problemu zewnetrznej fragmentacji. Pozwala się na to, aby procesowi można było przydzielać dowolne dostępne miejsca w pamięci fizycznej Metoda podstawowa Pamięć fizyczną dzieli się na bloki o stałej długości (ramki) Pamięć logiczną dzieli się na bloki o takiej samej długości (strony) Adres logiczny składa się z dwóch części: 1 numer strony (ang. page address) s 2 odległość na stronie (ang. page offset) o numer strony s m-n odleg³oœæ na stronie o n

STRONICOWANIE S tronicowanie (ang. paging) jest metodą pozwalającą na rozwiązanie problemu zewnetrznej fragmentacji. Pozwala się na to, aby procesowi można było przydzielać dowolne dostępne miejsca w pamięci fizycznej Metoda podstawowa Pamięć fizyczną dzieli się na bloki o stałej długości (ramki) Pamięć logiczną dzieli się na bloki o takiej samej długości (strony) Adres logiczny składa się z dwóch części: 1 numer strony (ang. page address) s 2 odległość na stronie (ang. page offset) o numer strony s m-n odleg³oœæ na stronie o n

STRONICOWANIE S tronicowanie (ang. paging) jest metodą pozwalającą na rozwiązanie problemu zewnetrznej fragmentacji. Pozwala się na to, aby procesowi można było przydzielać dowolne dostępne miejsca w pamięci fizycznej Metoda podstawowa Pamięć fizyczną dzieli się na bloki o stałej długości (ramki) Pamięć logiczną dzieli się na bloki o takiej samej długości (strony) Adres logiczny składa się z dwóch części: 1 numer strony (ang. page address) s 2 odległość na stronie (ang. page offset) o numer strony s m-n odleg³oœæ na stronie o n

STRONICOWANIE S tronicowanie (ang. paging) jest metodą pozwalającą na rozwiązanie problemu zewnetrznej fragmentacji. Pozwala się na to, aby procesowi można było przydzielać dowolne dostępne miejsca w pamięci fizycznej Metoda podstawowa Pamięć fizyczną dzieli się na bloki o stałej długości (ramki) Pamięć logiczną dzieli się na bloki o takiej samej długości (strony) Adres logiczny składa się z dwóch części: 1 numer strony (ang. page address) s 2 odległość na stronie (ang. page offset) o numer strony s m-n odleg³oœæ na stronie o n

STRONICOWANIE S tronicowanie (ang. paging) jest metodą pozwalającą na rozwiązanie problemu zewnetrznej fragmentacji. Pozwala się na to, aby procesowi można było przydzielać dowolne dostępne miejsca w pamięci fizycznej Metoda podstawowa Pamięć fizyczną dzieli się na bloki o stałej długości (ramki) Pamięć logiczną dzieli się na bloki o takiej samej długości (strony) Adres logiczny składa się z dwóch części: 1 numer strony (ang. page address) s 2 odległość na stronie (ang. page offset) o numer strony s m-n odleg³oœæ na stronie o n

STRONICOWANIE S tronicowanie (ang. paging) jest metodą pozwalającą na rozwiązanie problemu zewnetrznej fragmentacji. Pozwala się na to, aby procesowi można było przydzielać dowolne dostępne miejsca w pamięci fizycznej Metoda podstawowa Pamięć fizyczną dzieli się na bloki o stałej długości (ramki) Pamięć logiczną dzieli się na bloki o takiej samej długości (strony) Adres logiczny składa się z dwóch części: 1 numer strony (ang. page address) s 2 odległość na stronie (ang. page offset) o numer strony s m-n odleg³oœæ na stronie o n

Definicja adresu fizycznego adres bazowy strony w pamięci r odległość na stronie o adres bazowy r odleg³oœæ na stronie o Idea stronicowania pamięci CPU adres adres logiczny fizyczny s o r o s {... r... Tablica stron Pamiêæ operacyjna

Definicja adresu fizycznego adres bazowy strony w pamięci r odległość na stronie o adres bazowy r odleg³oœæ na stronie o Idea stronicowania pamięci CPU adres adres logiczny fizyczny s o r o s {... r... Tablica stron Pamiêæ operacyjna

Definicja adresu fizycznego adres bazowy strony w pamięci r odległość na stronie o adres bazowy r odleg³oœæ na stronie o Idea stronicowania pamięci CPU adres adres logiczny fizyczny s o r o s {... r... Tablica stron Pamiêæ operacyjna

numer strony jest indeksem w tablicy stron tablica stron zawiera adresy bazowe wszystkich stron w pamięci 0 1 2 3 Strona 0 Strona 1 Strona 2 Strona 3 Pamiêæ logiczna 0 1 1 4 2 3 3 7 Tablica stron 0 1 Strona 0 2 3 Strona 2 4 Strona 1 5 6 7 Strona 3 Pamiêæ fizyczna rozmiar strony (zarazem ramki) określa sprzęt rozmiar ten jest zwykle potęgą dwójki: 2 m rozmiar przestrzeni logicznej 2 n rozmiar strony

numer strony jest indeksem w tablicy stron tablica stron zawiera adresy bazowe wszystkich stron w pamięci 0 1 2 3 Strona 0 Strona 1 Strona 2 Strona 3 Pamiêæ logiczna 0 1 1 4 2 3 3 7 Tablica stron 0 1 Strona 0 2 3 Strona 2 4 Strona 1 5 6 7 Strona 3 Pamiêæ fizyczna rozmiar strony (zarazem ramki) określa sprzęt rozmiar ten jest zwykle potęgą dwójki: 2 m rozmiar przestrzeni logicznej 2 n rozmiar strony

numer strony jest indeksem w tablicy stron tablica stron zawiera adresy bazowe wszystkich stron w pamięci 0 1 2 3 Strona 0 Strona 1 Strona 2 Strona 3 Pamiêæ logiczna 0 1 1 4 2 3 3 7 Tablica stron 0 1 Strona 0 2 3 Strona 2 4 Strona 1 5 6 7 Strona 3 Pamiêæ fizyczna rozmiar strony (zarazem ramki) określa sprzęt rozmiar ten jest zwykle potęgą dwójki: 2 m rozmiar przestrzeni logicznej 2 n rozmiar strony

numer strony jest indeksem w tablicy stron tablica stron zawiera adresy bazowe wszystkich stron w pamięci 0 1 2 3 Strona 0 Strona 1 Strona 2 Strona 3 Pamiêæ logiczna 0 1 1 4 2 3 3 7 Tablica stron 0 1 Strona 0 2 3 Strona 2 4 Strona 1 5 6 7 Strona 3 Pamiêæ fizyczna rozmiar strony (zarazem ramki) określa sprzęt rozmiar ten jest zwykle potęgą dwójki: 2 m rozmiar przestrzeni logicznej 2 n rozmiar strony

numer strony jest indeksem w tablicy stron tablica stron zawiera adresy bazowe wszystkich stron w pamięci 0 1 2 3 Strona 0 Strona 1 Strona 2 Strona 3 Pamiêæ logiczna 0 1 1 4 2 3 3 7 Tablica stron 0 1 Strona 0 2 3 Strona 2 4 Strona 1 5 6 7 Strona 3 Pamiêæ fizyczna rozmiar strony (zarazem ramki) określa sprzęt rozmiar ten jest zwykle potęgą dwójki: 2 m rozmiar przestrzeni logicznej 2 n rozmiar strony

Podsumowanie stronicowanie jest odmianą dynamicznego przemieszczenia. Przypomina używanie tablicy rejestrów bazowych - po jednym na każdą ramkę pamięci stronicowanie eliminuje zewnętrzną fragmentację stronicowanie wprowadza wewnętrzną fragmentację np. rozmiar strony 2048B, rozmiar procesu 72766B wewnętrzna fragmentacja 962B wyraźne rozdzielenie pamięci widzianej przez użytkownika od pamięci fizycznej stronicowanie wydłuża czas przełączania kontekstu. Przechowuje kopie tablicy stron, licznika rozkazów i zawartości rejestrów

Podsumowanie stronicowanie jest odmianą dynamicznego przemieszczenia. Przypomina używanie tablicy rejestrów bazowych - po jednym na każdą ramkę pamięci stronicowanie eliminuje zewnętrzną fragmentację stronicowanie wprowadza wewnętrzną fragmentację np. rozmiar strony 2048B, rozmiar procesu 72766B wewnętrzna fragmentacja 962B wyraźne rozdzielenie pamięci widzianej przez użytkownika od pamięci fizycznej stronicowanie wydłuża czas przełączania kontekstu. Przechowuje kopie tablicy stron, licznika rozkazów i zawartości rejestrów

Podsumowanie stronicowanie jest odmianą dynamicznego przemieszczenia. Przypomina używanie tablicy rejestrów bazowych - po jednym na każdą ramkę pamięci stronicowanie eliminuje zewnętrzną fragmentację stronicowanie wprowadza wewnętrzną fragmentację np. rozmiar strony 2048B, rozmiar procesu 72766B wewnętrzna fragmentacja 962B wyraźne rozdzielenie pamięci widzianej przez użytkownika od pamięci fizycznej stronicowanie wydłuża czas przełączania kontekstu. Przechowuje kopie tablicy stron, licznika rozkazów i zawartości rejestrów

Podsumowanie stronicowanie jest odmianą dynamicznego przemieszczenia. Przypomina używanie tablicy rejestrów bazowych - po jednym na każdą ramkę pamięci stronicowanie eliminuje zewnętrzną fragmentację stronicowanie wprowadza wewnętrzną fragmentację np. rozmiar strony 2048B, rozmiar procesu 72766B wewnętrzna fragmentacja 962B wyraźne rozdzielenie pamięci widzianej przez użytkownika od pamięci fizycznej stronicowanie wydłuża czas przełączania kontekstu. Przechowuje kopie tablicy stron, licznika rozkazów i zawartości rejestrów

Podsumowanie stronicowanie jest odmianą dynamicznego przemieszczenia. Przypomina używanie tablicy rejestrów bazowych - po jednym na każdą ramkę pamięci stronicowanie eliminuje zewnętrzną fragmentację stronicowanie wprowadza wewnętrzną fragmentację np. rozmiar strony 2048B, rozmiar procesu 72766B wewnętrzna fragmentacja 962B wyraźne rozdzielenie pamięci widzianej przez użytkownika od pamięci fizycznej stronicowanie wydłuża czas przełączania kontekstu. Przechowuje kopie tablicy stron, licznika rozkazów i zawartości rejestrów

SEGMENTACJA Segmentacja w prosty sposób oddziela sposób widzenia pamięci przez użytkownika od pamięci rzeczywistej. W odróżnieniu od stronicowania pozwala na dopasowanie sposobu wyobrażenia pamięci przez użytkownika na pamięć fizyczną Metoda podstawowa Programista nie wyobraża sobie pamięci jako liniowej tablicy bitów, widzi pamięć jako zbiór segmentów o zróżnicowanych wymiarach Idea segmentacji Podprogram Logiczna przestrzeñ adresowa Funkcja SQRT Program g³ówny Tablica symboli STOS

SEGMENTACJA Segmentacja w prosty sposób oddziela sposób widzenia pamięci przez użytkownika od pamięci rzeczywistej. W odróżnieniu od stronicowania pozwala na dopasowanie sposobu wyobrażenia pamięci przez użytkownika na pamięć fizyczną Metoda podstawowa Programista nie wyobraża sobie pamięci jako liniowej tablicy bitów, widzi pamięć jako zbiór segmentów o zróżnicowanych wymiarach Idea segmentacji Podprogram Logiczna przestrzeñ adresowa Funkcja SQRT Program g³ówny Tablica symboli STOS

każdy segment ma swoją nazwę i długość adresy określają nazwę segmentu i odległość wewnątrz segmentu adres segment-offset określony jest za pomocą dwu wielkości: <numer segmentu, odległość> Podczas tłumaczenia programu kompilator automatycznie konstruuje segmenty odpowiadające np.: 1 programowi głównemu 2 zmiennym lokalnym 3 zmiennym globalnym 4 poszczególnym procedurom i funkcjom, etc.

każdy segment ma swoją nazwę i długość adresy określają nazwę segmentu i odległość wewnątrz segmentu adres segment-offset określony jest za pomocą dwu wielkości: <numer segmentu, odległość> Podczas tłumaczenia programu kompilator automatycznie konstruuje segmenty odpowiadające np.: 1 programowi głównemu 2 zmiennym lokalnym 3 zmiennym globalnym 4 poszczególnym procedurom i funkcjom, etc.

każdy segment ma swoją nazwę i długość adresy określają nazwę segmentu i odległość wewnątrz segmentu adres segment-offset określony jest za pomocą dwu wielkości: <numer segmentu, odległość> Podczas tłumaczenia programu kompilator automatycznie konstruuje segmenty odpowiadające np.: 1 programowi głównemu 2 zmiennym lokalnym 3 zmiennym globalnym 4 poszczególnym procedurom i funkcjom, etc.

każdy segment ma swoją nazwę i długość adresy określają nazwę segmentu i odległość wewnątrz segmentu adres segment-offset określony jest za pomocą dwu wielkości: <numer segmentu, odległość> Podczas tłumaczenia programu kompilator automatycznie konstruuje segmenty odpowiadające np.: 1 programowi głównemu 2 zmiennym lokalnym 3 zmiennym globalnym 4 poszczególnym procedurom i funkcjom, etc.

każdy segment ma swoją nazwę i długość adresy określają nazwę segmentu i odległość wewnątrz segmentu adres segment-offset określony jest za pomocą dwu wielkości: <numer segmentu, odległość> Podczas tłumaczenia programu kompilator automatycznie konstruuje segmenty odpowiadające np.: 1 programowi głównemu 2 zmiennym lokalnym 3 zmiennym globalnym 4 poszczególnym procedurom i funkcjom, etc.

każdy segment ma swoją nazwę i długość adresy określają nazwę segmentu i odległość wewnątrz segmentu adres segment-offset określony jest za pomocą dwu wielkości: <numer segmentu, odległość> Podczas tłumaczenia programu kompilator automatycznie konstruuje segmenty odpowiadające np.: 1 programowi głównemu 2 zmiennym lokalnym 3 zmiennym globalnym 4 poszczególnym procedurom i funkcjom, etc.

każdy segment ma swoją nazwę i długość adresy określają nazwę segmentu i odległość wewnątrz segmentu adres segment-offset określony jest za pomocą dwu wielkości: <numer segmentu, odległość> Podczas tłumaczenia programu kompilator automatycznie konstruuje segmenty odpowiadające np.: 1 programowi głównemu 2 zmiennym lokalnym 3 zmiennym globalnym 4 poszczególnym procedurom i funkcjom, etc.

Sprzęt s{ granica baza Tak CPU s o < Adres Nie logiczny Pu³apka: B³¹d adresowania Tablica segmentów + Pamiêæ operacyjna adres użytkownika dwuwymiarowy pamięć fizyczna jednowymiarowy ciąg bitów odwzorowanie adresów tablica segmentów

Sprzęt s{ granica baza Tak CPU s o < Adres Nie logiczny Pu³apka: B³¹d adresowania Tablica segmentów + Pamiêæ operacyjna adres użytkownika dwuwymiarowy pamięć fizyczna jednowymiarowy ciąg bitów odwzorowanie adresów tablica segmentów

Sprzęt s{ granica baza Tak CPU s o < Adres Nie logiczny Pu³apka: B³¹d adresowania Tablica segmentów + Pamiêæ operacyjna adres użytkownika dwuwymiarowy pamięć fizyczna jednowymiarowy ciąg bitów odwzorowanie adresów tablica segmentów

Tablica segmentów jest wykazem par rejestrów bazy i granicy Elementy tablicy segmentów: baza segmentu początkowy adres fizyczny segmentu w pamięci granica segmentu określa długość segmentu Odległość o: przedział < 0, granica segmentu > Adres fizyczny: dodanie odległości do bazy segmentu

Tablica segmentów jest wykazem par rejestrów bazy i granicy Elementy tablicy segmentów: baza segmentu początkowy adres fizyczny segmentu w pamięci granica segmentu określa długość segmentu Odległość o: przedział < 0, granica segmentu > Adres fizyczny: dodanie odległości do bazy segmentu

Tablica segmentów jest wykazem par rejestrów bazy i granicy Elementy tablicy segmentów: baza segmentu początkowy adres fizyczny segmentu w pamięci granica segmentu określa długość segmentu Odległość o: przedział < 0, granica segmentu > Adres fizyczny: dodanie odległości do bazy segmentu

Tablica segmentów jest wykazem par rejestrów bazy i granicy Elementy tablicy segmentów: baza segmentu początkowy adres fizyczny segmentu w pamięci granica segmentu określa długość segmentu Odległość o: przedział < 0, granica segmentu > Adres fizyczny: dodanie odległości do bazy segmentu

Tablica segmentów jest wykazem par rejestrów bazy i granicy Elementy tablicy segmentów: baza segmentu początkowy adres fizyczny segmentu w pamięci granica segmentu określa długość segmentu Odległość o: przedział < 0, granica segmentu > Adres fizyczny: dodanie odległości do bazy segmentu

Przykład Rozważmy następującą przestrzeń logiczną Funkcja SQRT Segment 1 Podprogram Segment 0 Program g³ówny Segment 2 Tablica symboli Segment 4 STOS Segment 3 Tablica segmentów Granica Baza 0 1000 1400 1 400 6300 2 400 4300 3 1100 3200 4 1000 4700 5 segmentów numerowanych 0,1,...,4 odwołanie do komórki 53 segmentu 2: 4300+53=4353 odwołanie do komórki 852 segmentu 3: 3200+852=4052 odwołanie do komórki 1222 segmentu 0: błąd adresowania

Przykład Rozważmy następującą przestrzeń logiczną Funkcja SQRT Segment 1 Podprogram Segment 0 Program g³ówny Segment 2 Tablica symboli Segment 4 STOS Segment 3 Tablica segmentów Granica Baza 0 1000 1400 1 400 6300 2 400 4300 3 1100 3200 4 1000 4700 5 segmentów numerowanych 0,1,...,4 odwołanie do komórki 53 segmentu 2: 4300+53=4353 odwołanie do komórki 852 segmentu 3: 3200+852=4052 odwołanie do komórki 1222 segmentu 0: błąd adresowania

Przykład Rozważmy następującą przestrzeń logiczną Funkcja SQRT Segment 1 Podprogram Segment 0 Program g³ówny Segment 2 Tablica symboli Segment 4 STOS Segment 3 Tablica segmentów Granica Baza 0 1000 1400 1 400 6300 2 400 4300 3 1100 3200 4 1000 4700 5 segmentów numerowanych 0,1,...,4 odwołanie do komórki 53 segmentu 2: 4300+53=4353 odwołanie do komórki 852 segmentu 3: 3200+852=4052 odwołanie do komórki 1222 segmentu 0: błąd adresowania

Przykład Rozważmy następującą przestrzeń logiczną Funkcja SQRT Segment 1 Podprogram Segment 0 Program g³ówny Segment 2 Tablica symboli Segment 4 STOS Segment 3 Tablica segmentów Granica Baza 0 1000 1400 1 400 6300 2 400 4300 3 1100 3200 4 1000 4700 5 segmentów numerowanych 0,1,...,4 odwołanie do komórki 53 segmentu 2: 4300+53=4353 odwołanie do komórki 852 segmentu 3: 3200+852=4052 odwołanie do komórki 1222 segmentu 0: błąd adresowania

Fragmentacja planista musi znaleźć i przydzielić pamięć wszystkim segmentom programu mamy do czynienia z dynamicznym przydziałem pamięci: metoda pierwszego dopasowania, metoda najlepszego dopasowania segmentacja powoduje zewnętrzną fragmentację problem stanowi dobór średniego rozmiaru segmentu każdy proces stanowi jeden segment stronicowanie upraszcza się do ciągłego przydziału pamięci każdy bajt zapisany jest w osobnym segmencie unika się całkowicie zewnętrznej fragmentacji, ALE każdy bajt potrzebuje swojego rejestru bazowego. W efekcie podwaja się zużycie pamięci segmentacja likwiduje całkowicie wewnętrzną fragmentację

Fragmentacja planista musi znaleźć i przydzielić pamięć wszystkim segmentom programu mamy do czynienia z dynamicznym przydziałem pamięci: metoda pierwszego dopasowania, metoda najlepszego dopasowania segmentacja powoduje zewnętrzną fragmentację problem stanowi dobór średniego rozmiaru segmentu każdy proces stanowi jeden segment stronicowanie upraszcza się do ciągłego przydziału pamięci każdy bajt zapisany jest w osobnym segmencie unika się całkowicie zewnętrznej fragmentacji, ALE każdy bajt potrzebuje swojego rejestru bazowego. W efekcie podwaja się zużycie pamięci segmentacja likwiduje całkowicie wewnętrzną fragmentację

Fragmentacja planista musi znaleźć i przydzielić pamięć wszystkim segmentom programu mamy do czynienia z dynamicznym przydziałem pamięci: metoda pierwszego dopasowania, metoda najlepszego dopasowania segmentacja powoduje zewnętrzną fragmentację problem stanowi dobór średniego rozmiaru segmentu każdy proces stanowi jeden segment stronicowanie upraszcza się do ciągłego przydziału pamięci każdy bajt zapisany jest w osobnym segmencie unika się całkowicie zewnętrznej fragmentacji, ALE każdy bajt potrzebuje swojego rejestru bazowego. W efekcie podwaja się zużycie pamięci segmentacja likwiduje całkowicie wewnętrzną fragmentację

Fragmentacja planista musi znaleźć i przydzielić pamięć wszystkim segmentom programu mamy do czynienia z dynamicznym przydziałem pamięci: metoda pierwszego dopasowania, metoda najlepszego dopasowania segmentacja powoduje zewnętrzną fragmentację problem stanowi dobór średniego rozmiaru segmentu każdy proces stanowi jeden segment stronicowanie upraszcza się do ciągłego przydziału pamięci każdy bajt zapisany jest w osobnym segmencie unika się całkowicie zewnętrznej fragmentacji, ALE każdy bajt potrzebuje swojego rejestru bazowego. W efekcie podwaja się zużycie pamięci segmentacja likwiduje całkowicie wewnętrzną fragmentację

Fragmentacja planista musi znaleźć i przydzielić pamięć wszystkim segmentom programu mamy do czynienia z dynamicznym przydziałem pamięci: metoda pierwszego dopasowania, metoda najlepszego dopasowania segmentacja powoduje zewnętrzną fragmentację problem stanowi dobór średniego rozmiaru segmentu każdy proces stanowi jeden segment stronicowanie upraszcza się do ciągłego przydziału pamięci każdy bajt zapisany jest w osobnym segmencie unika się całkowicie zewnętrznej fragmentacji, ALE każdy bajt potrzebuje swojego rejestru bazowego. W efekcie podwaja się zużycie pamięci segmentacja likwiduje całkowicie wewnętrzną fragmentację

Fragmentacja planista musi znaleźć i przydzielić pamięć wszystkim segmentom programu mamy do czynienia z dynamicznym przydziałem pamięci: metoda pierwszego dopasowania, metoda najlepszego dopasowania segmentacja powoduje zewnętrzną fragmentację problem stanowi dobór średniego rozmiaru segmentu każdy proces stanowi jeden segment stronicowanie upraszcza się do ciągłego przydziału pamięci każdy bajt zapisany jest w osobnym segmencie unika się całkowicie zewnętrznej fragmentacji, ALE każdy bajt potrzebuje swojego rejestru bazowego. W efekcie podwaja się zużycie pamięci segmentacja likwiduje całkowicie wewnętrzną fragmentację

Fragmentacja planista musi znaleźć i przydzielić pamięć wszystkim segmentom programu mamy do czynienia z dynamicznym przydziałem pamięci: metoda pierwszego dopasowania, metoda najlepszego dopasowania segmentacja powoduje zewnętrzną fragmentację problem stanowi dobór średniego rozmiaru segmentu każdy proces stanowi jeden segment stronicowanie upraszcza się do ciągłego przydziału pamięci każdy bajt zapisany jest w osobnym segmencie unika się całkowicie zewnętrznej fragmentacji, ALE każdy bajt potrzebuje swojego rejestru bazowego. W efekcie podwaja się zużycie pamięci segmentacja likwiduje całkowicie wewnętrzną fragmentację