Systemy operacyjne Zarządzanie pamięcią

Podobne dokumenty
Organizacja zarządzania pamięcią. Systemy operacyjne / Zarządzanie pamięcią str.4/59. Zarządzanie pamięcią. Funkcje systemu operacyjnego

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

Zarządzanie zasobami pamięci

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

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

Zarządzanie pamięcią operacyjną

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

dr inż. Jarosław Forenc

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią w systemie operacyjnym

Schematy zarzadzania pamięcia

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

Systemy operacyjne III

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.

Architektura komputerów

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

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

Podstawy. Pamięć wirtualna. (demand paging)

Mikroinformatyka. Tryb wirtualny

Współpraca procesora ColdFire z pamięcią

Architektura komputerów

dr inŝ. Jarosław Forenc

dr inż. Jarosław Forenc

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

Stronicowanie w systemie pamięci wirtualnej

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

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

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

Sprzętowe wspomaganie pamięci wirtualnej

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

ARCHITEKTURA PROCESORA,

System pamięci. Pamięć wirtualna

Podstawowe zagadnienia informatyki

Systemy Operacyjne Pamięć wirtualna cz. 2

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

4. Procesy pojęcia podstawowe

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

ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ

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

Pamięć wirtualna w AS/400

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

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

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

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

Mikroinformatyka. Wielozadaniowość

Zbigniew S. Szewczak Podstawy Systemów Operacyjnych

Hierarchia pamięci w systemie komputerowym

WOJSKOWA AKADEMIA TECHNICZNA

System pamięci. Pamięć wirtualna

System pamięci. Pamięć wirtualna

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

dr inż. Jarosław Forenc

Systemy Operacyjne Pamięć wirtualna cz. 1

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

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

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]

Systemy operacyjne system przerwań

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

Mikroprocesory rodziny INTEL 80x86

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

4. Procesy pojęcia podstawowe

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

Architektura komputerów

Wykład 10 Zarządzanie pamięcią

Pytania do treści wykładów:

Systemy Operacyjne Zarządzanie pamięcią operacyjną

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

J. Ułasiewicz Komputerowe systemy sterowania 1. 1 Architektura PC Ogólna struktura systemu jednoprocesorowego

Procesory rodziny x86. Dariusz Chaberski

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Zarz arz dzanie pam dzanie ięci ę ą

DYNAMICZNE PRZYDZIELANIE PAMIECI

Architektura systemów informatycznych

1.1 Definicja procesu

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Zarz¹dzanie pamiêci¹

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

Wybrane zagadnienia elektroniki współczesnej

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

Mikroinformatyka. Mechanizmy ochrony pamięci

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

Stronicowanie na ¹danie

WINDOWS NT. Diagram warstw systemu Windows NT

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Prezentacja systemu RTLinux

Opracowanie zadań testowych i otwartych z kolokwiów i egzaminów z przedmiotu SOI, prowadzący WBD

Podstawowe zagadnienia

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

Systemy operacyjne III

Architektura komputerów

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

Zarz arz dzanie pam dzanie ięci ę ą

4. Procesy pojęcia podstawowe

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

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

Transkrypt:

Systemy operacyjne Zarządzanie pamięcią [] Zarządzanie pamięcią Czego programiści oczekują od pamięci systemu: by była duża, by była szybka, by była nieulotna. Hierarchia pamięci: mała szybka droga pamięć (np. cache), średnia, średnio szybka, umiarkowanie droga, pamięć (np. pamięć operacyjna), ogromna, wolna i tania pamięć (np. pamięć dyskowa/ taśmowa). Zarządzanie pamięcią (ang. Memory Management, MM) na poziomie systemu operacyjnego uwarunkowane architekturą systemu. [] Organizacja zarządzania pamięcią Na organizację zarządzania mają wpływ: pole adresowe argumentów rozkazu, miejsce pola adresacji w słowie, sprzętowe możliwości przekształcania pola adresacji. W zależności od długości pola adresacji przestrzeń adresowa może pokrywać się z zakresem adresów pamięci operacyjnej, może być większa lub mniejsza. [] Funkcje systemu operacyjnego Funkcje systemu operacyjnego w kontekście zarządzania pamięcią: zagospodarowanie przestrzeni adresowej poprzez wykorzystanie mechanizmów translacji adresów, ochrona zawartości pamięci,

organizacja dostępu do obszarów dzielonych, efektywna organizacja pamięci operacyjnej. Wielkość pamięci operacyjnej przeznaczonej na kod systemu operacyjnego jest zazwyczaj stała, natomiast bardziej złożony jest przydział pamięci procesom użytkowym. [5] Metody przydziału pamięci Metody przydziału pamięci operacyjnej procesom użytkowym:. brak podziału, wolna przestrzeń adresowa w danje chwili przydzielana jednemu procesowi użytkowemu. Wieloprogramowanie można realizować przez wymiatanie (ang. swapping),. podział pamięci, wolna przestrzeń adresowa podzielona na części przydzielane pojedynczym procesom użytkowym,. wykorzystanie pamięci wirtualnej, istnieje jedna lub wiele wirtualnych przestrzeni adresowych przydzielanych procesom użytkowym, a mających w niewielkim stopniu pokrycie w pamięci operacyjnej. [6] Brak podziału Trzy metody prostej organizacji pamięci dla systemu operacyjnego i jednego procesu uzytkownika. User program Operating system in RAM xfff Operating system in ROM Device drivers in ROM User program User program Operating system in RAM (a) (b) (c) [7] Podział pamięci Cele podziału pamięci między procesy:

lepsze wykorzystanie elementów sprzętowych systemu, głównie procesora i pamięci, umożliwienie szybkiego przełączania procesora z pracy z jednym procesem na pracę z innym procesem. Można wyróżnić następujące typy systemów z podziałem pamięci: systemy z podziałem statycznym. Podział statyczny dzieli pamięć na stałe partycje o różnej długości lub na bloki o stałej długości zwane ramami (ang. frame). systemy z podziałem dynamicznym. Realizacja z wykorzystaniem struktur opisujących wolne bloki pamięci o różnych długościach oraz mechanizm wymiatania. [8] Podział statyczny na stałe partycje Multiple input queues Partition 8K 7K Partition Partition Single input queue Partition K Partition Partition Operating system (a) K K Partition Partition Operating system (b) a. partycje o stałym rozmiarze z osobnymi kolejkami wejściowymi, b. partycje o stałym rozmiarze z jedną kolejką wejściową. [9] Podział dynamiczny Do realizacji dynamicznego podziału pamięci można stosować następujące hipotetyczne funkcje: przydziel( rozmiar, adres )

wybranie spośród bloków wolnych bloku pokrywającego zapotrzebowanie, efektem jest zwrócenie adresu wybranego bloku i usunięcie przydzielonego bloku ze zbioru bloków wolnych, malloc( size ), calloc( n, size ), realloc( ptr, size ). zwolnij( adres ) - dołączenie bloku zajętego do zbioru wolnych bloków, np. free( ptr ), informuj() - zwróc rozmiar aktualnie największego wolnego bloku, np. msize(). [] Zarządzanie w kontekście wieloprogramowania Dwa zasadnicze aspekty: obsługa relokacji, nie ma pewności gdzie dokładnie program zostanie załadowany do pamięci, wykorzystanie rejestrów bazowych i rejestrów ograniczających. wzajemna ochrona pamięci. [] Modelowanie wieloprogramowania CPU utilization (in percent) 8 6 % I/O wait 5% I/O wait 8% I/O wait 5 6 7 8 9 Degree of multiprogramming Wykorzystanie procesora w funkcji liczby procesów w pamięci. [] Analiza wydajności wieloprogramowania

Job Arrival time : : :5 : CPU minutes needed CPU idle CPU busy CPU/process # Processes.8.6.5..6.9..8.6..59.5 (a) (b)..9 Job starts.9.8.8.8.... Job finishes.9..9.9..7 5 7.6 8..7 Time (relative to job 's arrival) (c) a. czas nadejścia i wymagania poszczególnych prac, b. wykorzystanie procesora dla procesów z 8% I/O, c. sekwencja zdarzeń z pokazanym w minutach czasem, jaki dany proces otrzymuje w podanym interwale. [] Wymiatanie (ang. swapping) A Operating system (a) system B A Operating (b) C Time system C B B A Operating (c) (d) Operating system C B D Operating system (e) C D Operating system (f) C A D Operating system (g) Zmiany przydziału pamięci wraz z pojawianiem się i znikaniem procesów z pamięci. Obszary zakreskowane są niewykorzystane. [] Fragmentacja Przy wyborze algorytmu alokacji należy uwzględnić następujące czynniki: prędkość, 5

prostotę, efekt fragmentacji. Fragmentacja wewnętrzna - zjawisko tworzenia niewykorzystywalnych, choć przydzielonych w ramach pewnej struktury (partycja, ramka), obszarów pamięci. Fragmentacja zewnętrzna - zjawisko tworzenia niewykorzystywalnych, nieprzydzielonych obszarów pamięci, zazwyczaj spowodowane niedoskonałością działania organizacji alokacji pamięci procesom uzytkowym. [5] Algorytmy alokacji Zadaniem algorytmu alokacji jest wybranie wolnego bloku w celu przydzielenia procesowi pamięci. Wybrane algorytmy alokacji: algorytm pierwszej zgodności (ang. First Fit), wybór pierwszego pasującego ze zbioru/ listy, algorytm najlepszej zgodności (ang. Best Fit), wybór najmniejszego wystarczającego bloku ze zbioru/ listy, algorytm najgorszej zgodności (ang. Worst Fit), wybór największego ze zbioru/ listy, algorytm bliźniaków (ang. Buddies), podział pamięci (o długości k ) na dwa równe bliźniacze bloki; połowienie jednego aż do uzyskania bloku o minimalnej długości spełniającego zapotrzebowanie. [6] Przeciwdziałanie fragmentacji W systemie może być zdefiniowana wartość n będąca minimalna dopuszczalną wartością niejawnie przydzielanego bloku, co ułatwia zarządzanie i zwiększa efektywność, ale może prowadzić do zjawiska fragmentacji. Efektom fragmentacji można przeciwdziałać poprzez: zwalnianie i scalanie, zagęszczanie i relokacje, 6

mechanizm stronicowania. [7] Zarządzanie pamięcią - mapy bitowe i listy A B C D E 8 6 (a) (b) Hole P 5 H 5 P 8 6 P H 8 P 6 P 6 H 9 X Starts at 8 Length (c) Process a. fragment pamięci z pięcioma procesami i trzema dziurami, b. odpowiadająca mapa bitowa, c. ta sama informacja w postaci listy. [8] Problem dynamicznej alokacji A B Actually in use B-Data B-Program Room for growth B-Stack Room for growth Room for growth Actually in use A-Stack A-Data A-Program Room for growth Operating system Operating system (a) (b) a. alokacja pamięci dla rosnącego segmentu danych, b. alokacja pamięci dla rosnącego stosu i rosnącego segmentu danych. 7

[9] Pamięć wirtualna Pamięć wirtualna system pamięci złożony z co najmniej dwóch rodzajów pamięci: małej i szybkiej (np. pamięci operacyjnej) oraz dużej, lecz wolnej (np. pamięci pomocniczej), a także z dodatkowego sprzętu i oprogramowania umożliwiającego automatyczne przenoszenie fragmentów pamięci z jednego rodzaju pamięci do drugiego. Pamięć wirtualna ma być prawie tak szybka jak szybsza z pamięci i prawie tak duża jak większa z pamięci. Metody realizacji pamięci wirtualnej: stronicowanie, segmentacja, stronicowanie z segmentacją. [] Rola jednostki zarządzającej pamięcią CPU package The CPU sends virtual addresses to the MMU CPU Memory management unit Memory Disk controller Bus The MMU sends physical addresses to the memory MMU (ang. Memory Management Unit) może być zintegrowane z procesorem (tak zazwyczaj teraz), ale może być też niezależne (tak zazwyczaj było dawniej). [] Stronicowanie Stronicowanie bazuje na stałym podziale pamięci. Jednostki podziału: ramy, ramki (ang. frames) dla pamięci fizycznej, 8

strony (ang. pages) dla wirtualnej przestrzeni adresowej procesu. Zadania mechanizmu stronicowania: odwzorowywanie adresów wirtualnych w adresy rzeczywiste:. określenie, do której strony odnosi się adres w programie,. znalezienie ramy, którą aktualnie zajmuje dana strona. przesyłanie - w zależności od potrzeby - stron z pamięci pomocniczej do pamięci operacyjnej oraz odsyłanie już nie używanych stron z powrotem. [] Przykład translacji 9

Virtual address space 6K-6K 56K-6K 5K-56K 8K-5K K-8K K-K 6K-K K-6K 8K-K K-8K K-K 6K-K K-6K 8K-K K-8K K-K X X X X 7 X 5 X X X 6 Virtual page Physical memory address 8K-K K-8K K-K 6K-K K-6K 8K-K K-8K K-K frame [] Realizacja stronicowania Korzystanie z pamięci wirtualnej nie stawia żadnych dodatkowych wymagań użyt-

kownikowi. Przydział pamięci realizowany jest systemowo z wykorzystaniem tablic stron i/ lub tablic ram. Zapewnienie własności przezroczystości wymaga: obsługi przez system przerwania określanego jako chybienie strony (ang. page fault), sygnalizującego brak w pamięci strony, do której usiłowano się odwołać. obsługa chybienia ma zgodnie z przyjętym algorytmem wymiany stron przydzielić ramę i ściągnąć stronę z pamięci pomocniczej, w celu minimalizacji strat wydajności odwołań do pamięci wykorzystanie pamięci asocjacyjnych do translacji adresów. [] Przykładowa tablica stron Wewnętrzne operacje MM z szesnastoma stronami po kb. table 5 9 8 7 6 5 Virtual page = is used as an index into the page table Present/ absent bit -bit offset copied directly from input to output Outgoing physical address (58) Incoming virtual address (896) Należy uwzględniąć następujące fakty:

tablica stron może być bardzo duża, odwzorowywanie musi być bardzo szybkie. [5] Typowy element tablicy stron Caching disabled Modified Present/absent frame number Referenced Protection [6] Wielopoziomowe tablice stron Second-level page tables table for the top M of memory Top-level page table Bits PT PT Offset (a) 6 5 6 5 To pages (b)

Zarządzanie pamięcią [7] TLB (ang. Translation Lookaside Buffer) Valid Virtual page Modified Protection frame RW R X 8 RW 9 9 RW 6 9 R X 5 R X 5 86 RW 86 RW 75 Główny cel: minimalizacja liczby odwołań do pamięci w trakcie stronicowania. Aspekty dotyczące TLB: koszt przełączania kontekstu, koszt wielopoziomowści tablic stron, realizacja: sprzętowa/ programowa. [8] Odwrócone tablice stron Traditional page table with an entry for each of the 5 pages 5-56-MB physical memory has 6 -KB page frames 6-6 - Hash table Indexed by virtual page Indexed by hash on virtual page Virtual page frame [9] Optymalny rozmiar strony Dobór rozmiaru strony ma wpływ na fragmentację wewnętrzną oraz rozmiar tablicy stron. Niech:

s przeciętny rozmiar procesu w bajtach, p rozmiar strony, e rozmiar pozycji w tablicy stron. wtedy nadmiar=s e/p+ p/ Wyszukiwanie ekstremum, pochodna względem p przyrównana do : se/p + /= Zatem optymalny rozmiar strony wynosi p= se [] Obsługa chybienia Obsługa chybienia przebiega następująco:. wskazanie ramy dla żądanej strony,. zwolnienie wskazanej ramy,. ściągnięcie żądanej strony w obszar wskazanej ramy,. aktualizacja tablicy ram. Wskazaniem ramy, w przypadku braku ram wolnych, zajmuje się algorytm wymiany stron (ang. page replacement algorithm). Główne zadanie: usunięcie z pamięci operacyjnej strony najmniej potrzebnej w przyszłości, tzn, strony, do której odwołanie nastąpi najpóźniej bądź w ogóle nie nastąpi. [] Algorytmy wymiany stron Zestawienie wybranych algorytmów wymiany stron: algorytm optymalny, algorytm NRU (ang. not recently used) (bity R i M), algorytm FIFO, algorytm drugiej szansy, algorytm zegarowy, algorytm LRU (ang. least recently used).

[] Algorytm drugiej szansy loaded first A B 7 C 8 D E F 5 G 8 H Most recently loaded page (a) B 7 C 8 D E F 5 G 8 H A A is treated like a newly loaded page a. strony sortowane w porządku FIFO, (b) b. nowa postć listy, gdy bład strony wystąpił w momencie i A miał ustawiony bit R. [] Algorytm zegarowy wymiany stron L A B J K I C E D When a page fault occurs, the page the hand is pointing to is inspected. The action taken depends on the R bit: R = : Evict the page R = : Clear R and advance hand H G F [] Sprzętowy algorytm LRU (a) (b) (c) (d) (e) (f) (g) (h) (i) (j) 5

Do stron odwoływano się w następującej kolejności:,,,,,,,,,. [5] Programowa symulacja algorytmu LRU (II) R bits for pages -5, clock tick R bits for pages -5, clock tick R bits for pages -5, clock tick R bits for pages -5, clock tick R bits for pages -5, clock tick 5 (a) (b) (c) (d) (e) Algorytm postarzania, pokazano sześć stron w okresie pięciu tyknięć zegara. [6] Zbiór roboczy stron Zbiorem roboczym nazywamy zbiór stron wykorzystywanych w trakcie k ostatnich odwołań do pamięci. Funkcja w(k, t) odpowiada mocy zbioru w chwili t. w(k,t) k [7] Algorytm zbioru roboczego 6

Current virtual time Information about one page 8 R (Referenced) bit Time of last use referenced during this tick not referenced during this tick 98 6 Scan all pages examining R bit: if (R == ) set time of last use to current virtual time if (R == and age > τ) remove this page if (R == and age τ) remember the smallest time table [8] Zegarowy algorytm zbioru roboczego 7

Current virtual time 6 8 6 8 98 98 (a) Time of last use R bit (b) 6 6 8 8 98 98 (c) (d) New page [9] Porównanie algorytmów wymiany stron Algorytm Optymalny NRU FIFO Drugiej szansy Zegarowy LRU NFU Postarzanie Zbiór roboczy WSClock Komentarz nieimplementowalny, punkt odniesienia surowy może wymiatać istotne strony duże ulepszenie FIFO realistyczny dobry, ale trudny do implementacji dość ogólna aproksymacja LRU efektywny z dobrą aproksymacją LRU dość kosztowny w implementacji dobry efektywny algorytm 8

[] Anomalia Belady ego Youngest page Oldest page All pages frames initially empty P P P P P P P P P 9 faults (a) Youngest page Oldest page P P P P P P P P P P (b) faults a. algorytm FIFO wymiany stron na maszynie z trzema ramkami, b. algorytm FIFO wymiany stron na maszynie z czteroma ramkami. więcej błedów strony przy większej liczbie ramek. [] Strony współdzielone Process table Program Data Data tables 9

[] Obsługa błędu strony MOVE.L #6(A), (A) 6 Bits MOVE 6 } } } Opcode First operand Second operand instrukcja wywołująca błąd strony, odkąd zacząć powtarzanie instrukcji? [] Organizacja przestrzeni wymiany Main memory Disk Main memory Disk s s 6 Swap area 7 5 6 Swap area table table 7 5 6 6 Disk map (a) (b) a. stronicowanie do statycznego obszaru wymiany, b. dynamiczny zrzut stron. [] Rozdzielenie strategii i mechanizmu realizacji Main memory. Request page Disk User space User process. Needed page External pager. arrives. fault 5. Here is page Kernel space Fault handler 6. Map page in MMU handler

obsługa błędu strony przez zewnętrzny program typu pager. [5] Pojedyncza przestrzeń adresowa Virtual address space Call stack Free Address space allocated to the parse tree Parse tree Space currently being used by the parse tree Constant table Source text Symbol table Symbol table has bumped into the source text table Niewygody pojedynczej przestrzeni adresowej na przykładzie mapy pamięci translatora/ kompilatora. [6] Cechy segmentacji celem segmentacji organizacji przestrzeni adresowej w sposób odzwierciedlający logiczny podział informacji, przy organizacji przestrzeni wirtualnej możliwość korzystania z dużej liczby segmentów z nadawanymi przez programistę nazwami, przestrzeń adresowa dwuwymiarowa z racji identyfikacji adresu poprzez parę nazwa segmentu + adres wewnątrz segmentu, odzworowanie adresu organizowane zazwyczaj poprzez osobną dla każdego procesu tablicę segmentów, elementy tablicy segmentów określane mianem deskryptorów segmentu,

każdy deskryptor zawiera adres bazy oraz rozmiar segmentu. [7] Rozmiary segmentów K 6K 6K K 8K K Symbol table K 8K K Source text K 8K K Parse tree K 8K K Call stack K Segment K Segment K Constants Segment K Segment K Segment Segmentacja pamięci umożliwia każdej tablicy niezależną zmianę rozmiaru. [8] Stronicowanie a segmentacja (I) celem segmentacji logiczny podział pamięci operacyjnej, celem stronicowania fizyczny podział pamięci, stronicowanie mechanizmem niskiego poziomu, niewidocznym dla programisty; segmentacja mechanizmem wyższego poziomu, widocznym dla programisty, rozmiar strony stały, ustalona, wynikający z architektury, rozmiar segmentu dowolny określany przez programistę, zarówno w przypadku zastosowania stronicowania jak i segmentacji całkowita przestrzeń adresowa może być większa od dostępnje pamięci fizycznej, segmentacja umożliwia lepszą ochronę poszczególnych elementów procesu poprzez możliwość rozróżniania segmentów logicznie grupujących elementy procesów, [9] Stronicowanie a segmentacja (II)

segmentacja umożliwia łatwiejsze zarządzanie elementami procesu o zmiennym rozmiarze (np. stos, sterta), segmentacja udostępnia współdzielenie procedur między procesami (np. segmenty dzielone, a przez to biblioteki dzielone). główny cel wprowadzenia stronicowania: uzyskanie większej pamięci adresowej bez konieczności zakupu dodatkowej pamięci fizycznej, główny cel wprowadzenia segmentacji: umożliwienie rozdzielenia programów i danych na logicznie niezależne przestrzenie adresowe z ułatwieniem współdzielenia wybranych obszarów i lepszej ochrony. segmentacja - może zachodzić fagmentacja zewnętrzna, stronicowanie - może zachodzić fragmentacja wewnętrzna. [5] Implementacja czystej segmentacji Segment (7K) Segment (8K) Segment (5K) Segment (8K) Segment (K) Segment (7K) Segment (8K) Segment (5K) (K) Segment 7 (5K) Segment (K) (K) Segment 5 (K) Segment (8K) Segment (5K) (K) Segment 7 (5K) Segment (K) Segment 5 (K) Segment 6 (K) Segment (5K) Segment 7 (5K) Segment (K) (a) (b) (c) (d) (e) (K) (K) (K) (K) Segment 5 (K) Segment 6 (K) Segment (5K) Segment 7 (5K) Segment (K) zjawisko fragmentacji zewnętrznej (ang. external fragmentation, checkerboarding), zbijanie/ gromadzenie segmentów metodą przeciwdziałania fragmentacji (rys. e), wykorzystanie stronicowania metodą przeciwdziałania fragmentacji. [5] MULTICS: Segmentacja ze stronicowaniem komputery Honeywell 6 i następne,

maksymalnie możliwych 8 segmentów, z których każdy mógł mieć maksymalnie 6556 6-bitowych słów, stronicowane segmenty, dla każdego procesu tablica segmentów, sama tablica segmentów również stronicowanym segmentem, fizyczne adresy -bitowe, strony rozmieszczane z dopasowaniem do 6 ( 6 ) bajtów, zatem 8 bitów na adres tablicy stron, standardowy rozmiar stron słów, część wewnętrznych małych segmentów systemu niestronicowana bądź ze stronami po 6 słowa, ewentualny adres segmentu w pamięci pomocniczej w osobnej tablicy wykorzystywanej przez program obsługi chybienia strony. [5] MULTICS: Pamięć wirtualna 6 bits entry entry Segment 6 descriptor entry Segment 5 descriptor table for segment Segment descriptor Segment descriptor Segment descriptor Segment descriptor entry Pamięć wirtualna systemu Multics Segment descriptor Descriptor segment (a) entry entry Main memory address of the page table table for segment a. segment deskryptorów ze wskazaniami do tablic stron, 8 9 Segment length (in pages) size: = words = 6 words = segment is paged = segment is not paged b. deskryptor segmentu. Miscellaneous bits Protection bits (b) [5] MULTICS: Wyznaczanie adresu fizycznego Address within the segment Segment number number Offset within the page 8 6

-bitowy adres wirtualny w systemie Multics. Word Descriptor frame Segment number Descriptor segment number table Offset Translacja dwuczęściowego adresu wirtualnego na adres w pamięci głównej. Dla przejrzystości pominięto fakt, że segment deskryptorów jest również stronicowany. [5] MULTICS: bufory TLB Comparison field Segment number Virtual page frame Protection Age Is this entry used? 7 Read/write 6 Read only Read/write Execute only 7 Execute only 9 Uproszczona wersja buforów TLB. 6 pozycji, dla których numer segmentu i strony są porównywane równolegle. W rzeczywistości ze względu na zróżnicowanie rozmiaru stron struktura jest bardziej złożona. [55] Intel Pentium: Segmentacja ze stronicowaniem Multics: 56K niezależnych segmentów, każdy do 6K 6-bitowych słów, Pentium: 6K niezależnych segmentów, każdy do G -bitowych słów, 5

pojedyncza GDT (ang. Global Descriptor Table) w systemie, LDT (ang. Local Descriptor Table) dla każdego procesu. [56] Intel Pentium: Selektor i deskryptor segmentu Bits Selektor w Pentium Index = GDT/ = LDT Privilege level (-) : 6-Bit segment : -Bit segment : Li is in bytes : Li is in pages : Segment is absent from memory : Segment is present in memory Privilege level (-) : System : Application Segment type and protection Base - G D Limit P DPL Type Base 6-6-9 S Base -5 Limit -5 Bits Deskryptor segmentu kodu w Pentium Relative address [57] Intel Pentium: Wyznaczanie adresu fizycznego (I) Selector Offset Descriptor Base address Limit Other fields + -Bit linear address jeżeli stronicowanie wyłączone (czysta segmentacja), uzyskany adres to adres fizyczny, przy włączonym stronicowaniu interpretacja uzyskanego adresu jako wirtualnego, wykorzystanie buforów TLB, 6

[58] Intel Pentium: Wyznaczanie adresu fizycznego (II) Bits Linear address Dir Offset (a) directory table frame Word selected Entries Dir Offset Directory entry points to page table (b) table entry points to word -bitowa logiczna przestrzeń adresowa, strony o rozmiarze KB, każdy proces posiada katalog stron z pozycjami, z których każda wskazuje na tablicę stron również z pozycjami. możliwa pojedyncza, stronicowana, -bitowa przestrzeń adresowa na potrzeby aplikacji. [59] Intel Pentium: Ochrona User programs Shared libraries Typical uses of the levels System calls Kernel Level cztery poziomy ochrony, można odwoływać się do danych segmentów swojego i wyższych poziomów, 7

aby odwołać się do procedury innego niż własny poziomu CALL ma jako argument nie adres ale selektor do tzw. call gate. 8