1 - Wojciech Bieniecki

Download Report

Transcript 1 - Wojciech Bieniecki

Systemy operacyjne
Algorytmy przydziału
pamięci - ćwiczenia
dr inż. Wojciech Bieniecki
Instytut Nauk Ekonomicznych i Informatyki
1
http://wbieniec.kis.p.lodz.pl/pwsz
Wstęp
W systemie wieloprogramowym procesy, które działają powinny
mieć wydzielone – rozłączne obszary pamięci.
W najprostszym przypadku zakładamy, że każdy proces posiada
stały rozmiar potrzebnej pamięci.
Proces może być w stanie aktywnym tylko wtedy, gdy program
jest załadowany do pamięci. W przeciwnym wypadu musi
poczekać.
System operacyjny musi zdecydować, czy dla ładowanego
procesu jest wystarczająca ilość pamięci, a jeśli tak, to który jej
obszar przydzielić.
W najprostszym przypadku przydzielany obszar musi być ciągły
2
Przydział dynamiczny
Załóżmy że w kolejce procesów gotowych systemu, który stosuje
szeregowanie FCFS jest 5 procesów, które potrzebują odpowiednio:
P1 – 600KB, P2 – 1000KB, P3 – 300KB, P4 – 700KB i P5 – 500KB
pamięci.
Dostępnych jest tylko 2560KB pamięci operacyjnej.
Można ją przydzielić od razu pierwszemu, drugiemu i trzeciemu
procesowi.
W pamięci zostanie dziura (D), miejsce wolne, które będzie nie
wystarczające, dla żadnego z pozostałych procesów.
Będą musiały poczekać, aż zakończy sie jeden z trzech procesów,
które są już w pamięci.
Jako pierwszy zakończył się proces drugi.
W pamięci powstają zatem dwa ciągłe obszary wolne.
Okazuje sie, ze dziurę po P2 można przydzielić tylko jednemu z
procesów, z kolejki. Tym procesem będzie proces P4.
3
Przydział dynamiczny - przykład
Po tym przydziale w pamięci operacyjnej nadal istnieją dwie dziury,
o sumarycznej wielkości 560KB.
Ta wielkość spełnia wymagania programu piątego (500KB), ale
ponieważ te dziury nie tworzą obszaru spójnego, to nie można ich
przydzielić temu procesowi.
Następnym procesem, który zakończy swa prace będzie proces P1.
Po jego zakończeniu w pamięci operacyjnej pojawia się ciągły
obszar wolny o wielkości 600KB, co pozwala na spełnienie
zapotrzebowania na pamięć ze strony procesu piątego.
Z tej dziury procesowi P5 zostanie przydzielone dokładnie 500KB.
Po wykonaniu ostatniego z przydziałów w pamięci operacyjnej
powstają trzy niespójne wolne obszary o łącznej pojemności 660KB.
Powstaje fragmentacja zewnętrzna.
4
Fragmentacja pamięci
Zjawisko występuje powszechnie w systemach, które stosują dynamiczny przydział pamięci.
Rozróżniamy dwa rodzaje tego zjawiska:
Fragmentacja wewnętrzna
Występuje, gdy procesowi przydzielane jest więcej pamięci, niż on potrzebuje.
Ta dodatkowa pamięć nie będzie nigdy przez niego wykorzystana.
Przydział taki może być podyktowany względami ekonomicznymi: nie jest opłacalne
utrzymywanie 2 bajtowej dziury w pamięci, jeśli należy zapamiętać o wiele więcej
informacji o niej.
Fragmentacja zewnętrzna
Występuje, gdy w pamięci operacyjnej istnieje wiele obszarów wolnych, których
sumaryczna wielkość pozwalałaby na spełnienie zadania przydziału pamięci przez proces,
ale każdy z osobna z tych obszarów ma zbyt mała pojemność, żeby to było możliwe.
Obliczanie fragmentacji zewnętrznej
free freemax
frag 
100%
free
5
Strategie wyboru dziury
SO utrzymuje ewidencję wolnych oraz zajętych obszarów pamięci i na bieżąco podejmuje
decyzję, który z wolnych obszarów przydzielić czekającym procesom. To planowanie
wymaga określenia strategii wyboru dziury, jeśli jest ich wiele.
Pierwsza pasująca (ang. first-fit)
Przydzielana jest pierwsza dziura, która spełnia wymagania procesu co do rozmiaru.
Jej poszukiwanie może rozpoczynać się zawsze od początku wykazu miejsc wolnych lub od
miejsca ostatniego przydziału (ang. next-fit).
Najlepiej pasująca (ang. best fit)
Przydziela sie dziurę, która dokładnie spełnia wymagania co do rozmiaru, lub dla której
różnica miedzy jej rozmiarem, a rozmiarem wymaganym jest najmniejsza spośród
pozostałych dziur.
Najgorzej pasująca (ang. worst fit)
przydziela sie największą dziurę w systemie. Zakłada się, że proces zażąda w czasie
wykonania dodatkowej pamięci. Przy zastosowaniu tej strategii istnieje duże
prawdopodobieństwo, ze zadanie to zostanie od razu zrealizowane.
Symulacje wykazały, że najlepsze rezultaty uzyskuje się przy zastosowaniu strategii
Pierwsza pasująca i Najlepiej pasująca. Z praktycznego punktu widzenia ta pierwsza
jest lepsza ponieważ działa szybciej.
6
Zadanie
Załóżmy, że w systemie jest 2048kB pamięci.
Przydziel pamięć dynamicznie stosując strategie:
a) first-fit,
b) best-ft,
c) worst-fit.
Narysuj wykresy czasowe pamięci i oblicz fragmentację zewnętrzną przy każdym
przełączniu
Proces
Czas nadejścia
Czas wykonania
Zajętość pamięci kB
P1
0
7
480
P2
4
6
1350
P3
12
6
540
P4
14
12
960
7
Stronicowanie
Stronicowanie (ang. paging) jest systemem zarządzania pamięcią,
który rozwiązuje problem zewnętrznej fragmentacji pamięci
pozwalając, aby pamięć przydzielana była nieciągła.
Pamięć fizyczna jest podzielona na ramki (ang. frame) o stałym
rozmiarze, będącym potęgą dwójki (512B – 4KB).
Przestrzeń adresowa procesu jest podzielona na strony (ang. page),
rozmiar strony jest równy rozmiarowi ramki.
I–tej stronie w przestrzeni adresowej procesu odpowiada K-ta
ramka. Dla dowolnego I, K może być dowolne.
8
Przykład stronicowania
Aby proces mógł być załadowany do pamięci
musi jedynie istnieć odpowiednia liczba
wolnych ramek dla niego.
Strony w ramkach nie musza być umieszczane
po kolei, fizycznie pamięć procesu nie musi być
ciągła.
Po lewej stronie znajduje się pamięć logiczna,
w środku tablica stron, a po prawej pamięć
fizyczna.
Stronicowanie eliminuje całkowicie
fragmentację zewnętrzną, ale nie jest odporne
na fragmentacje wewnętrzną. Ta fragmentacja
dotyczy ostatniej ramki przydzielonej
procesowi i w skrajnych przypadkach może
wynosić rozmiar strony minus jeden bajt.
9
Przykład stronicowania
W pamięci procesy A, B. Załaduj C.
W pamięci procesy A, B, C. Zakończ B.
W pamięci procesy A, C. Załaduj D.
Struktury systemu po załadowaniu D.
10
Zadanie
Pamięć składa się z 16 stron po 4kB (razem 64kB).
Jak będą umieszczane strony procesów w tej pamięci (first Fit) ?
Wykonaj rysunki stron w ramkach dla odpowiednich chwil czasowych oraz oblicz
fragmentację wewnętrzną
Proces
P1
P2
P3
P4
Czas nadejścia
0
4
6
7
Czas wykonania
5
4
5
3
Zajętość pamięci (kB)
18
21
14
10
11
Idea pamięci wirtualnej
System operacyjny pozwala na wykorzystanie pamięci o pojemności większej od
zainstalowanej pamięci RAM, dzięki wykorzystaniu przestrzeni dysku twardego.
Mechanizm ukryty przed procesami użytkownika. Proces “widzi” logiczną
przestrzeń adresową od 0 do max_address
Obszary logicznej przestrzeni adresowej, do których proces często się odwołuje
przechowywane są w pamięci RAM. Obszary, do których proces odwołuje się
rzadko, są na dysku. System operacyjny bez współpracy procesu przesyła dane do
oraz z dysku.
Metody implementacji pamięci wirtualnej (ang. virtual memory)
Stronicowanie na żądanie (ang. demand paging)
Segmentacja (na żądanie)
Segmentacja stronicowana (na żądanie)
12
Przechowywanie stron na dysku
Ciągły obszar w przestrzeni wymiany
odpowiada logicznej przestrzeni
adresowej.
Numer ramki w tablicy stron identyfikuje
przy pomocy tablicy pomocniczej numer
bloku dyskowego.
13
Zastępowanie stron
Problem podczas obsługi błędu strony – zabrakło wolnych ramek w pamięci.
Rozwiązania:
– Zawiesić proces, który żąda strony lub:
– Wymiana stron
Wymiana stron polega na odnalezieniu strony-ofiary, co do której istnieje podejrzenie, że
nie będzie używana (już wcale lub w najbliższym czasie), wysłaniu jej do przestrzeni
wymiany i sprowadzeniu w jej miejsce żądanej strony.
Należy więc uzupełnić scenariusz obsługi błędu strony o następujące czynności:
Jeśli nie istnieje wolna ramka, należy wytypować ramkę-ofiarę.
Jeżeli ta strona w rej ramce została zmodyfikowana (D==1), jest zapisywana na
dysku i aktualizowana jest tablic stron.
Do zwolnionej ramki wczytywana jest żądana strona.
Wybór strony-ofiary jest wykonywany przez algorytm zastępowania stron (ang.
14
page replacement).
Algorytmy zastępowania stron
Kryterium: Minimalizacja liczby błędów stron.
Test algorytmu: za pomocą wygenerowanego losowo ciągu odwołań (ang.
reference string), czyli ciągu numerów stron, do których hipotetyczny program
mógłby się odwoływać.
Należy również założyć pewną liczbę wolnych ramek, którymi będzie dysponował
ten program.
Badanie przeprowadza się dla kilku różnych wartości tego czynnika, co pozwala
sprawdzić, czy algorytm zachowuje sie poprawnie, tzn. czy wraz ze wzrostem
liczby ramek maleje liczba błędów stron.
W przykładach wykorzystamy ciąg odwołań :
1, 2, 3, 4, 1, 2, 5, 1, 2, 5, 1, 2, 3, 4, 5
15
Algorytm FIFO
Zastąp stronę, która została sprowadzona jako pierwsza do pamięci.
Sprowadzone strony tworzą kolejkę.
Kolejność odwołań: 1, 2, 3, 4, 1, 2, 5, 1, 2, 5, 1, 2, 3, 4, 5.
Jeżeli procesowi przydzielono trzy ramki:
1
2
3
4
1
2
5
1
2
5
1
2
3
4
5
1
1
1
4
4
4
5
5
5
5
5
5
5
5
5
2
2
2
1
1
1
1
1
1
1
1
3
3
3
3
3
3
2
2
2
2
2
2
2
2
4
4
Jeżeli procesowi przydzielono cztery ramki:
1
2
3
4
1
2
5
1
2
5
1
2
3
4
5
1
1
1
1
1
1
5
5
5
5
5
5
5
4
4
2
2
2
2
2
2
1
1
1
1
1
1
1
5
3
3
3
3
3
3
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
4
3
3
3
16
Algorytm FIFO drugiej szansy
Algorytm drugiej szansy jest to modyfikacja algorytmu FIFO
W standardowym algorytmie FIFO wybierana jest pierwsza strona z kolejki
W algorytmie drugiej szansy sprawdzany jest bit odniesienia R.
– Jeżeli R==0 (brak odniesienia) to strona jest wybierana na ofiarę.
– Jeżeli R==1 (odniesienie) to:
●R=0
● Strona przesunięta jest na koniec kolejki (“otrzymała drugą
szansę”).
● Przechodzimy do kolejnej strony w kolejce.
17
Algorytm drugiej szansy
Jeżeli procesowi przydzielono trzy ramki:
1
2
3
4
1
2
5
1
2
5
1
2
3
4
5
1
●
1
●
1
●
4
●
4
●
4
●
5
●
5
●
5
●
5
●
5
●
5
●
5
5
5
●
2
●
2
●
2
1
●
1
●
1
1
●
1
●
1
●
1
●
1
●
3
●
3
3
3
●
3
3
2
●
2
2
2
●
2
●
2
●
2
●
2
4
●
4
1
2
3
2
3
4
3
4
1
4
1
2
1
2
5
1
2
5
1
2
5
1
2
5
1
2
5
1
2
5
2
5
3
5
3
4
5
3
4
FIFO
1
1
2
18
Algorytm drugiej szansy
Jeżeli procesowi przydzielono cztery ramki:
1
2
3
4
1
2
5
1
2
5
1
2
3
4
5
1
●
1
●
1
●
1
●
1
●
1
●
5
●
5
●
5
●
5
●
5
●
5
●
5
●
4
●
4
2
●
2
●
2
●
2
●
2
●
2
1
●
1
●
1
●
1
●
1
●
1
●
1
5
3
●
3
●
3
●
3
●
3
3
2
●
2
●
2
●
2
●
2
●
2
2
4
●
4
●
4
●
4
4
4
4
4
4
3
●
3
3
1
2
3
4
1
2
3
4
1
2
3
4
2
3
4
5
3
4
5
1
4
5
1
2
4
5
1
2
4
5
1
2
4
5
1
2
5
1
2
3
1
2
3
4
2
3
4
5
FIFO
1
1
2
1
2
3
19
Algorytm optymalny
Algorytm teoretyczny – powoduje najmniejszą liczbę wymian stron, a zarazem
najmniejszą liczbę błędów stron.
Zastąp stronę, do której nie będziemy się odwoływać przez najdłuższy czas.
W praktyce – nie możliwe jest przewidzenie, która ze stron będzie najdłużej
potrzebna
Algorytm ten zwany OPT lub MIN jest stosowany do porównywania innych
algorytmów i badania i stopnia, w jakim go przybliżają.
20
Algorytm optymalny
Kolejność odwołań: 1, 2, 3, 4, 1, 2, 5, 1, 2, 5, 1, 2, 3, 4, 5.
Jeżeli procesowi przydzielono trzy ramki:
1
2
3
4
1
2
5
1
2
5
1
2
3
4
5
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
4
4
3
4
4
4
5
5
5
5
5
5
5
5
5
Jeżeli procesowi przydzielono cztery ramki:
1
2
3
4
1
2
5
1
2
5
1
2
3
4
5
1
1
1
1
1
1
1
1
1
1
1
1
1
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
3
4
4
4
5
5
5
5
5
5
5
5
5
21
Algorytm LRU
Algorytm LRU (ang. Least Recently Used) wymienia tę stronę, która najdawniej była
używana.
Stanowi on w pewnym sensie odwrotność działania algorytmu OPT.
Algorytm OPT „patrzy w przyszłość”, żeby znaleźć stronę do wymiany, a algorytm LRU
„patrzy w przeszłość”.
Przybliżenie – algorytm MFU (ang. Most Frequently Used) - wymienia on tę stronę, do
której najczęściej się odwoływano, wychodząc z założenia, że nie będzie już potrzebna.
LRU: Jeżeli procesowi przydzielono trzy ramki:
1
2
3
4
1
2
5
1
2
5
1
2
3
4
5
1
1
1
4
4
4
5
5
5
5
5
5
3
3
3
2
2
2
1
1
1
1
1
1
1
1
1
4
4
3
3
3
2
2
2
2
2
2
2
2
2
5
3
4
1
4
1
2
1
2
5
2
5
1
1
5
2
1
2
5
2
5
1
5
1
2
1
2
3
2
3
4
3
4
5
Kolejka
1
1
2
1
2
3
2
3
4
22
Algorytm LRU
Jeżeli procesowi przydzielono cztery ramki:
1
2
3
4
1
2
5
1
2
5
1
2
3
4
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
5
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
5
5
5
5
5
5
5
4
4
4
4
4
4
4
4
4
4
4
3
3
3
1
2
3
4
2
3
4
1
3
4
1
2
4
1
2
5
4
2
5
1
4
5
1
2
4
1
2
5
4
2
5
1
4
5
1
2
5
1
2
3
1
2
3
4
2
3
4
5
Kolejka
1
1
2
1
2
3
23
Zadanie
Zakładamy, że proces odwołuje się kolejno do stron 2, 1, 3, 4, 1, 2, 5, 3, 2, 3, 4, 5 i mamy
cztery dostępne ramki dla tego procesu.
Zaprezentuj algorytm FIFO, LRU, OPT wymiany stron.
Oblicz, ile jest błędów strony w każdym przepadku
24