Zbigniew S. Szewczak Systemy Operacyjne

Transkrypt

Zbigniew S. Szewczak Systemy Operacyjne
Zbigniew S. Szewczak
Systemy Operacyjne
Wykład 3
Planowanie procesora.
Zarządzanie pamięcią.
Toruń, 2005
Propozycje terminu egzaminu
✦ piątek, 17.02.2006, g.12.00-14.00
✦ niedziela, 19.02.2006, g.14.00-16.00
✦ piątek, 3.03.2006, g.12.00-14.00
✦ niedziela, 5.03.2006, g.14.00-16.00
✦
O czym będzie?
✦ Planowanie przydziału procesora
✦
✦
✦
✦
✦
✦
Podstawowe pojęcia
Kryteria planowania
Algorytmy planowania
Planowanie wieloprocesorowe
Planowanie w czasie rzeczywistym
Ocena algorytmów
✦ Zarządzanie pamięcią
✦
✦
✦
✦
✦
✦
✦
Logiczna i fizyczna przestrzeń adresowa
Wymiana
Przydział ciągły
Stronicowanie
Segmentacja
Segmentacja ze stronicowaniem
Struktura systemów operacyjnych
✦ System zarządzania zadaniami (procesami)
✦ System zarządzania pamięcią operacyjną
✦ System zarządzania plikami
✦ System zarządzania wejściem-wyjściem
✦ Sieciowy system operacyjny
✦ System ochrony
✦ System interpretacji poleceń
✦ Generacja systemu
Podstawowe pojęcia
✦ Idea wieloprogramowania: wiele procesów dzieli
(niepodzielny zasób) CPU
✦ Celem wieloprogramowania jest maksymalne
wykorzystanie jednostki centralnej (CPU)
✦ Planowanie przydziału procesora (ang. CPU
scheduling) jest kluczową funkcją w każdym
systemie operacyjnym albowiem jest realizacją
idei wieloprogramowania
Fazy procesu
✦ CPU-I/O - wykonanie procesu składa się z fazy
procesora (ang. CPU burst) i fazy we/wy (ang.
I/O burst)
✦ Krzywa częstości zatrudnień procesora ma
kształt wykładniczy lub hiperwykładniczy
✦ Proces ograniczony przez we/wy ma wiele
krótkich faz procesora, proces ograniczony przez
procesor ma długie fazy procesora
Naprzemienny ciąg faz
procesora i we/wy
load store
add store
read file
czekaj na we/wy
store increment
index
write file
czekaj na we/wy
load store
add store
read file
czekaj na we/wy
.
.
.
faza procesora
faza we/wy
faza procesora
faza we/wy
faza procesora
faza we/wy
Histogram czasów faz procesora
160
częstość występowania fazy
140
120
100
80
60
40
20
0
8
16
24
czas trwania fazy (milisekundach)
32
40
Planista przydziału procesora
✦ Planista (krótkoterminowy) przydziału procesora (ang.
CPU scheduler) wybiera jeden proces spośród
przebywających w pamięci procesów gotowych do
wykonania i przydziela mu procesor
✦ Decyzje o przydziale procesora podejmowane są
✦ 1. gdy proces przeszedł od stanu aktywności do czekania
✦ np. z powodu operacji we/wy
✦ np. czekanie za zakończnie potomka
✦ 2. gdy proces przeszedł od stanu aktywności do gotowości
✦ np. wskutek przerwania
✦ 3. gdy proces przeszedł od stanu czekania do gotowości
✦ np. po zakończeniu operacji we/wy
✦ 4. gdy proces kończy działanie
✦ W pkt. 2 i 3 można dokonać wyboru procesu któremu
przydzielić CPU
Diagram stanów procesu
nowy
zakończony
przerwanie
przyjęcie
wyjście
gotowy
obsłużenie zdarzenia
lub operacja we/wy
aktywny
decyzja planisty
czekający
oczekiwanie na zdarzenie
lub na wykonanie
operacji we/wy
Planista przydziału procesora
(c.d.)
✦ Planowanie w sytuacjach 1 i 4 nazywamy
niewywłaszczeniowym (ang. nonpreemptive)
✦ Algorytm planowania (szeregowania) nazywamy
wywłaszczającym (ang. preemptive) w pozostałych
sytuacjach
✦ systemy Windows 9x, 2K, XP, Mac OS X
✦ Planowanie bez wywłaszczeń: proces, który otrzyma
procesor, zachowuje go tak długo aż nie odda go z
powodu przejścia w stan oczekiwania lub zakończenia
(nie wymaga zegara)
✦ systemy Windows 3.x i Apple Macintosh OS
Planista przydziału procesora
(c.d.)
✦ Planowanie wywłaszczające: drogie i ryzykowne
✦ Co się stanie gdy wywłaszczony zostanie proces w
trakcie wykonywania funkcji systemowej (np. zmiany
danych w blokach opisu kolejki we/wy)?
✦ UNIX czeka z przełączeniem kontekstu do zakończenia
wywołania systemowego lub do zablokowania procesu
na we/wy
✦ Nie można wywłaszczać procesu gdy wewnętrzne
struktury jądra są niespójne
✦ Blokowanie przerwań przy wejściu do ryzykownych
fragmentów kodu jądra
Ekspedytor
✦ Ekspedytor (ang. dispatcher) jest modułem, który
faktycznie przekazuje procesor do dyspozycji procesu
wybranego przez planistę krótkoterminowego; obowiązki
ekspedytora to
✦ przełączanie kontekstu
✦ przełączanie do trybu użytkownika
✦ wykonanie skoku do odpowiedniej komórki w programie użytkownika
w celu wznowienia działania programu
✦ Opóźnienie ekspedycji (ang. dispatch latency) to czas,
który ekspedytor zużywa na wstrzymanie jednego
procesu i uaktywnienie innego
Kryteria planowania
✦ Definicje
✦ Wykorzystanie procesora (ang. CPU utilization) – procent
czasu, przez który procesor pozostaje zajęty
✦ najlepiej by było gdyby procesor był nieustannie zajęty
pracą
✦ powinno się mieścić od 40% (słabe obciążenie systemu) do
90% (intensywna eksploatacja)
✦ Przepustowość (ang. throughput) - liczba procesów
kończących w jednosce czasu
✦ długie procesy - 1 na godzinę, krótkie - 10 na sekundę
Kryteria planowania
✦ Definicje (c.d.)
✦ Czas cyklu przetwarzania (ang. turnaround time) – czas
między nadejściem procesu do systemu a chwilą jego
zakończenia
✦ suma czasów czekania na wejście do pamięci, czekania w
kolejce procesów gotowych, wykonywania we/wy,
wykonania (CPU)
✦ Czas oczekiwania (ang. waiting time) - suma okresów, w
których proces czeka w kolejce procesów gotowych do
działania
Kryteria planowania (c.d.)
✦ Definicje (c.d.)
✦ Czas odpowiedzi (ang. response time) - ilość czasu między
wysłaniem żądania a pojawieniem się odpowiedzi bez
uwzględnienia czasu potrzebnego na wyprowadzenie
odpowiedzi (np. na ekran).
✦ czas odpowiedzi jest na ogół uzależniony od szybkości
działania urządzenia wyjściowego
✦ miara zastępująca miarę czasu cyklu przetwarzania w
systemach interaktywnych
✦ np. kliknięcie myszą obiektu – mniej niż 0,1s
Kryteria optymalizacji
algorytmów planowania
✦ Maksymalne wykorzystanie procesora
✦ Maksymalna przepustowość
✦ Minimalny czas cyklu przetwarzania
✦ Minimalny czas oczekiwania
✦ Minimalny czas odpowiedzi
✦ minimalizowanie wariancji czasu odpowiedzi zamiast
średniego czasu odpowiedzi w systemach z podziałem
czasu
✦ mało algorytmów minimalizujących wariancję
✦ pożądany system z sensownym i przewidywalnym czasem
odpowiedzi zamiast systemu o lepszym średnio czasie
odpowiedzi i bardzo zmiennym
Planowanie metodą FCFS
✦ Pierwszy zgłoszony, pierwszy obsłużony (ang. firstcome, first-served - FCFS)
✦ Implementuje się łatwo za pomocą kolejek FIFO blok kontrolny procesu dołączany na koniec kolejki,
procesor dostaje PCB z czoła kolejki
Czas trwania fazy
✦ Przykład: Proces
P1
24
P2
3
P3
3
✦ Przypuśćmy, że procesy nadejdą w porządku: P1 ,
P2 , P3
Planowanie metodą FCFS (c.d.)
✦ Diagram Gantta dla FCFS
P1
0
P2
24
P3
27
30
✦ Czas oczekiwania dla P1 = 0; P2 = 24; P3 = 27
✦ Średni czas oczekiwania: (0 + 24 + 27)/3 = 17
milisekund
✦ Wariancja czasu oczekiwania: (0^2 + 24^2 +
27^2)/3 – 17^2 =435 – 289 = 146 ms
Planowanie metodą FCFS (c.d.)
✦ Przypuśćmy, że procesy nadejdą w porządku
✦ Diagram Gantta dla FCFS
P2
0
✦
✦
✦
✦
P3
3
P1
6
30
Czas oczekiwania dla P1 = 6; P2 = 0; P3 = 3
Średni czas oczekiwania (6 + 0 + 3)/3 = 3 ms
Średni czas oczekiwania znacznie lepszy
Dlaczego?
P2 , P3 , P1
Planowanie metodą FCFS (c.d.)
✦ Założmy, ze mamy jeden proces P ograniczony przez
procesor i wiele procesów ograniczonych przez we/wy
(Q,R,..)
✦ proces P uzyskuje procesor i procesy Q,.. kończą we/wy
✦ urządzenia we/wy są bezczynne
✦ proces P kończy swoją fazę procesora, procesy Q,... zadziałają szybko
(mają krotkie fazy procesora bo są ograniczone przez we/wy)
✦ proces P uzyskuje procesor, procesy Q,.. kończą we/wy...
✦ Efekt konwoju (ang. convoy effect) - procesy czekają aż
wielki proces odda procesor
Planowanie metodą FCFS (c.d.)
✦ Algorytm FCFS jest niewywłaszczający - proces
utrzymuje procesor do czasu aż zwolni go wskutek
zakończenia lub zamówi operację we/wy
✦ Niewydajne wykorzystanie CPU (efekt konwoju) oraz
we/wy (efekt konwoju dla we/wy)
✦ Krzywdzący dla procesów krótkich oraz ograniczonych
przez we/wy bowiem faworyzuje dłuższe zadania
✦ Proces zawsze dostanie się do CPU (po pewnym czasie)
tj. nie ma groźby zagłodzenia procesów
✦ Algorytm FCFS jest kłopotliwy w systemach z podziałem
czasu bowiem w takich systemach ważne jest
uzyskiwanie procesora w regularnych odstępach czasu
Planowanie metodą SJF
✦ Algorytm napierw najkrótsze zadanie (ang. shortest-job-first
- SJF) wiąże z każdym procesem długość jego najbliższej z
przyszłych faz procesora. Gdy procesor staje się dostępny
wówczas zostaje przydzielony procesowi o najkrótszej
następnej fazie procesora (gdy fazy są równe to stosujemy
planowanie FCFS)
✦ Algorytm może być
✦ wywłaszczający - SJF usunie proces jeśli nowy proces w kolejce procesów
gotowych ma krótszą następną fazę procesora od czasu do zakończenia
procesu
✦ gdy w kolejce procesów gotowych są procesy o jednakowych fazach to
stosujemy FCFS
✦ algorytm SRTF (ang. shortest-remaining-time-first) - najpierw
najkrótszy pozostały czas
✦ niewywłaszczający - pozwól procesowi zakończyć
SJF niewywłaszczający
Proces
Czas trwania fazy
6
8
7
3
P1
P2
P3
P4
✦ Diagram Gantta dla SJF (niewywłaszczający)
P4
0
P1
3
P3
9
✦ Średni czas oczekiwania:
✦ (3 + 16 + 9 + 0)/4 = 7
P2
16
24
SJF wywłaszczający
Proces
Czas przybycia Czas trwania fazy
P1
0
8
P2
1
4
P3
2
9
P4
3
5
✦ Diagram Gantta dla SRTF
P1
0 1
P2
P4
5
P1
10
P3
17
✦ Średni czas oczekiwania:
✦ ((10-1) + (1-1) + (17-2) + (5-3))/4 = 26/4=6.5
26
Planowanie medotą SJF (c.d.)
✦ SJF charakteryzuje to, że
✦ ma dobry czas odpowiedzi dla krótkich procesów
✦ jest krzywdzący dla procesów długich
✦ może powodować zagłodzenie procesów
✦ Planowanie metodą SRTF zwykle daje lepszy
czas przetwarzania niż SJF
Planowanie metodą HRRN
✦ Def. Stosunkiem reaktywności (ang. response
ratio) nazywamy liczbę
R = 1+ w/t, gdzie w oznacza czas oczekiwania na
procesor zaś t - fazę procesora
✦ Największy stosunek reaktywności jako następny
(ang. highest response ratio next - HRRN)
✦ Faworyzuje krótkie zadania, lecz po pewnym
czasie oczekiwania dłuższy proces uzyska CPU
✦ Podobnie jak SJF i SRTF również algorytm HRRN
wymaga oszacowania dla następnej fazy
procesora
Planowanie metodą HRRN (c.d.)
Proces
Czas przybycia
0
1
2
3
P1
P2
P3
P4
Czas trwania fazy
8
4
9
5
✦ Diagram Gantta dla HRRN (niewywłaszczający)
P1
0
P2
8
P4
12
P3
17
✦ Średni czas oczekiwania:
✦ (0 + (8-1)+ (17-2) + (12-3))/4 = 31/4=7.75
26
Planowanie metodą HRRN (c.d.)
✦ Faworyzuje krótkie zadania jednak oczekiwanie
dłuższych zadań zmienia ich współczynnik i w
konsekwencji pozwala im uzyskać dostęp do
CPU
✦ Ma dobry czas odpowiedzi
✦ Proces zawsze dostanie się do CPU (po pewnym
czasie) tj. nie ma groźby zagłodzenia procesów
Następna faza procesora
✦ SJF jest optymalny: daje minimalny średni czas
oczekiwania dla danego zbioru procesów
✦ Nie ma sposobu na poznanie długości następnej fazy,
możemy ją jedynie oszacować
✦ Można tego dokonać wyliczając średnią wykładniczą
poprzednich faz procesora
✦ t(n) = długość n-tej fazy procesora
✦ a - liczba z przedziału [0,1], zwykle 0.5
✦ Definiujemy średnią wykładniczą jako:
s(n+1) = a*t(n) + (1-a)*s(n)
gdzie s(n+1) = przewidywana długość następnej fazy
Następna faza procesora (c.d.)
✦ a=0
✦ s(n+1) = s(n)
✦ niedawna historia nie ma wpływu
✦ a=1
✦ s(n+1) = t(n)
✦ jedynie najnowsze notowanie długości fazy ma wpływ
✦ a*(1-a)≠ 0 i rozwiniemy wzór to:
s(n+1) = a*t(n) + (1-a)*a*t(n-1) + .... (1-a)^j*a*t(n-j)
+ ..... ..+ (1-a)^(n+1)*s(0)
✦ Ponieważ a i (1-a) są mniejsze od 1 to starsze składniki
(przeszłość) mają coraz mniejszą wagę
Przykład dla s(0)=10; a=1/2
12
s(i)
10
8
t(i)
6
4
2
czas
faza procesora t(n)
wartość
odgadnięta s(n)
10
6
4
6
4
13
13
13
....
8
6
6
5
9
11
12
....
Planowanie priorytetowe
✦ SJF jest przykładem planowania priorytetowego
(ang. priority scheduling) w którym każdemu
procesowi przypisuje się priorytet (liczbę)
✦ Priorytety należą do pewnego skończonego
podzbioru liczb naturalnych np. [0..7], [0,4095]
✦ Prz. nice {+|- n} polecenie
✦ Procesor przydziela się procesowi o najwyższym
priorytecie (jeśli priorytety są równe to FCFS)
✦ planowanie priorytetowe wywłaszczające
✦ planowanie priorytetowe niewywłaszczające
✦ SJF - priorytet jest odwrotnością następnej fazy
Przykład: 0 - najwyższy priorytet
Proces
P1
P2
P3
P4
P5
P2
0
Czas trwania fazy
10
1
2
1
5
P5
1
Priorytet
3
1
4
5
2
P1
6
✦ średni czas oczekiwania:
✦ (6 + 0 + 16 + 18 + 1)/5 = 41/5 = 8.2
P3
16
P4
18
19
Planowanie priorytetowe
✦ Problem: nieskończone zablokowanie (ang. indefinite
blocking) lub głodzenie (ang. starvation) - procesy o
małym priorytecie mogą nigdy nie dostać czasu procesora
✦ Krąży taka pogłoska, że gdy w 1973 r. wycofywano z
eksploatacji w MIT komputer IBM 7094 wykryto zagłodzony
niskopriorytetetowy proces przedłożony do wykonania
jeszcze w 1967 r.
✦ Rozwiązanie: postarzanie (ang. aging) polegające na
podwyższeniu priorytetu procesów oczekujących już zbyt
długo
✦ Prz. Proces ma priorytet 127, co 15 min zwiększamy
priorytet o 1 więc w najgorszym przypadku (tzn. jeśli nie
dostanie się do CPU) po 32 godzinach proces będzie miał
najwyższy priorytet równy 0 (co wcale nie oznacza, że
dostanie do CPU )
Planowanie rotacyjne
✦ Planowanie rotacyjne, RR (ang. round-robin,
time-slicing) zaprojektowano dla systemów z
podziałem czasu
✦ Każdy proces otrzymuje małą jednostkę czasu,
nazywaną kwantem czasu (ang. time quantum,
time slice) zwykle od 10 do 100 milisekund. Gdy
ten czas minie proces jest wywłaszczany i
umieszczany na końcu (ang. tail) kolejki zadań
gotowych (FCFS z wywłaszeniami)
✦ średni czas oczekiwania jest stosunkowo długi
Planowanie rotacyjne (c.d.)
✦ Jeśli jest n procesów w kolejce procesów
gotowych a kwant czasu wynosi q to każdy
proces otrzymuje 1/n czasu procesora porcjami
wielkości co najwyżej q jednostek czasu.
✦ Każdy proces czeka nie dłużej niż (n-1)*q
jednostek czasu
✦ Wydajność algorytmu
✦ gdy q duże to RR(q) przechodzi w FCFS
✦ gdy q małe to mamy dzielenie procesora (ang. processor
sharing) ale wtedy q musi być duże w stosunku do
przełączania kontekstu (inaczej mamy spowolnienie)
Mniejszy kwant czasu zwiększa
przełączanie kontekstu
kwant
czas procesu = 10
kontekstu
0
12
0
6
1
1
9
10
0
0
przełą
czenia
6
1
2
3
4
5
6
10
7
8
9
10
Czas cyklu przetwarzania zależy
od kwantu czasu
proces
czas
12.0
P1
6
11.5
P2
3
11.0
P3
1
10.5
P4
7
średni czas cyklu przetwarzania
12.5
10.0
9.5
9.0
1
2
3
4
5
kwant czasu
6
7
8
RR - średni czas cyklu
przetwarzania z kwantem = 6
Proces
Czas trwania fazy
P1
6
P2
3
P3
1
P4
7
✦ Diagram Gantta dla RR(6)
P1
0
P2
6
P3
9
P4
10
✦ Średni czas cyklu przetwarzania
✦ (6+9+10+17)/4=42/4=10,5
P4
16
17
RR - średni czas cyklu
przetwarzania z kwantem = 5
Proces
Czas trwania fazy
P1
6
P2
3
P3
1
P4
7
✦ Diagram Gantta dla RR(5)
P1
0
P2
5
P3
8
P4
9
✦ Średni czas cyklu przetwarzania
✦ (15+8+9+17)/4=49/4=12,25
P1
14
15
P4
17
Planowanie metodą RR (c.d.)
Dobry czas odpowiedzi dla krótkich procesów
Efektywny w systemach z podziałem czasu
Sprawiedliwe traktowanie procesów
Kwant powinien być nieco dłuższy od czasu
wymaganego na typową interakcję
✦ Procesy ograniczone przez CPU są faworyzowane
kosztem procesów ograniczonych przez we/wy co
prowadzi do nieefektywnego wykorzystania we/wy
✦ Nie powoduje zagłodzenia procesów
✦
✦
✦
✦
Wielopoziomowe planowanie
kolejek
✦ Wielopoziomowe planowanie kolejek (ang.
mulitilevel queue scheduling ) polega na tym, że
kolejka procesów gotowych zostaje podzielona
na oddzielne (pod)kolejki
✦ procesy pierwszoplanowe (ang. foreground) - interakcyjne
✦ procesy drugoplanowe (ang. background) - wsadowe
✦ Każda z kolejek ma swój własny algorytm
szeregujący np.
✦ pierwszoplanowa - RR
✦ drugoplanowa - FCFS
Wielopoziomowe planowanie
kolejek (c.d.)
✦ Między kolejkami także należy dokonać wyboru
algorytmu planowania
✦ planowanie priorytetowe tzn. obsłuż najpierw wszystkie
procesy pierwszoplanowe potem drugoplanowe możliwość zagłodzenia procesu drugoplanowego
✦ porcjowanie czasu (ang. time slice) - każda kolejka
otrzymuje pewną porcję czasu procesora, który
przydzielany jest każdej z kolejek np.
✦ 80% kolejka pierwszoplanowa z algorytmem RR
✦ 20% kolejka drugoplanowa z algorytmem FCFS
Wielopoziomowe planowanie
kolejek (c.d.)
najwyższy priorytet
procesy systemowe
procesy interakcyjne
procesy redagowania interakcyjnego
procesy wsadowe
procesy studenckie
najniższy priorytet
Kolejki wielopoziomowe ze
sprzężeniem zwrotnym
✦ Kolejki wielopoziomowe z sprzężeniem zwrotnym
(ang. multilevel feedback queue scheduling)
umożliwiają przesuwanie procesów między kolejkami
✦ Proces, który zużywa za dużo procesora można
zdymisjonować poprzez przesunięcie go do kolejki o
niższym priorytecie i dzięki temu zapobiec
zagłodzeniu innych procesów
✦ Postępowanie takie prowadzi do pozostawienia
procesów ograniczonych przez we/wy oraz
interakcyjnych w kolejkach o wyższych priorytetach
Kolejeki wielopoziomowe ze
sprzężeniem zwrotnym (c.d.)
kwant=8
kwant=16
FCFS
Kolejeki wielopoziomowe ze
sprzężeniem zwrotnym (c.d.)
✦ Trzy koleki:
✦ Q0 – kwant czasu 8 milisekund
✦ Q1 – kwant czasu 16 milisekund
✦ Q2 – FCFS
✦ Planowanie
✦ nowe zadanie wchodzi do kolejki Q0 obsługiwanej przez
FCFS. Zadanie dostaje 8 milisekund i jeśli się nie zmieści
w tym czasie zostaje przeniesione na koniec kolejki Q1
✦ W kolejce Q1 zadanie jest znów obsługiwane przez
algorytm FCFS i dostaje dodatkowe 16 milisekund. Jeśli
ponownie nie zmieści się w tym czasie zostaje wywłaszone
do kolejki Q2
Kolejki wielopoziomowe ze
sprzężeniem zwrotnym (c.d.)
✦ Algorytm ten daje najwyższy priorytet procesom
o fazie nie większej niż 8ms, procesy o fazie
między 8ms i 24ms są także szybko
obsługiwane; długie procesy wchodzą do kolejki
2 i są obsługiwane (FCFS) w cyklach pracy
procesora nie wykorzystanych przez procesy z
kolejek 0 i 1
✦ Planowanie ze sprzężeniem zwrotnym jest
najogólniejszym i najbardziej złożonym
algorytmem planowania przydziału procesora
Kolejeki wielopoziomowe ze
sprzężeniem zwrotnym (c.d.)
✦ Planista wielopoziomowych kolejek ze
sprzężeniem zwrotnym jest określony za pomocą
następujących parametrów
✦ liczba kolejek
✦ algorytm planowania dla każdej kolejki
✦ metody użytej do decydowania o awansowaniu (ang.
upgrade) procesu do kolejki o wyższym priorytecie
✦ metody użytej do decydowania o zdymisjonowaniu (ang.
demote) procesu do kolejki o niższym priorytecie
✦ metody wyznaczenia kolejki, do której trafia proces
potrzebujący obsługi
Planowanie wieloprocesorowe
✦ Planowanie wieloprocesorowe (ang. multiple-processor
scheduling) komplikuje się wraz ze wzrostem liczby
procesorów i ich architektury
✦ Wypróbowano wiele metod planowania i nie znaleziono
najlepszej
✦ Procesory mogą być homogeniczne (identyczne) lub
heterogeniczne (różne)
✦ Planowanie wieloprocesorowe heterogeniczne - na
danym procesorze można wykonać programy, które
zostały przetłumaczone na odpowiadający mu zbiór
rozkazów; sieciowe systemy operacyjne
Planowanie wieloprocesorowe
(c.d.)
✦ Planowanie wieloprocesorowe homogeniczne
✦ dzielenie obciążeń (ang. load sharing) - wspólna kolejka
dla wszystkich procesorów
✦ każdy procesor sam planuje swoje działanie, oba operują na
tej samej kolejce procesów gotowych (ryzykowne - wymaga
bardzo starannego zaprogramowania) - wieloprzetwarzanie
symetryczne
✦ jeden procesor jest nadrzędny (ang. master), inne
podporządkowane (ang. slave) - wieloprzetwarzanie
asymetryczne (ang. asymmetric multiprocessing)
Planowanie w czasie
rzeczywistym
✦ Rygorystyczne systemy czasu rzeczywistego - wymóg
zakończenia zadania krytycznego w gwarantowanym
czasie
✦ rezerwacja zasobów (ang. resource reservation) gwarantujących
wykonanie zadania
✦ planista odrzuca zadanie jeśli nie może ich zarezerwować
✦ Łagodne systemy czasu rzeczywistego - procesy o
decydującym znaczeniu mają priorytet nad słabiej
sytuowanymi
✦ priorytety procesów czasu rzeczywistego nie mogą maleć z upływem
czasu
✦ można np. zakazać dymisjonowania procesów czasu rzeczywistego
Planowanie w czasie
rzeczywistym (c.d.)
✦ opóźnienie ekspediowania procesów do procesora musi
być małe aby proces czasu rzeczywistego nie musiał
czekać (Solaris: bez wywłaszczeń 100ms i z 2ms))
✦ musimy zezwolić na wywłaszczanie funkcji systemowych
✦ poprzez wstawienie w długotrwałych funkcjach systemowych
punktów wywłaszczeń (ang. preemption points)
✦ wywłaszczanie całego jądra, struktury danych jądra muszą być
chronione za pomocą mechanizmów synchronizacji (Solaris2)
✦ wysokopriorytetowe procesy nie mogą czekać na
zakończenie niskopriorytetowych; sytuacja gdy proces
wysokopriorytetowy czeka na zakończenie procesu o
niższym priorytetcie nosi nazwę odwrócenia priorytetów
(ang. priority inversion)
✦ protokół dziedziczenia priorytetów(ang. priority- inheritance)
-w czasie użycia zasobów proces dziedziczy wysoki priorytetu
Opóźnienie ekspedycji
odpowiedź na
zdarzenie
zdarzenie
czas do nadejścia odpowiedzi
proces osiąga
gotowość do
przetwarzanie działania
przerwania
opóźnienie ekspedycji
ekspedycja
konflikty
wywłaszczenia
procesów
czas
wykonanie
procesu w
czasie rzeczywistym
Ocena algorytmów
✦ Modelowanie deterministyczne - przyjmuje się
konkretne, z góry określone obciążenie robocze
systemu i definiuje zachowanie algorytmu w
warunkach tego obciążenia. Jest to odmiana
oceny analitycznej (ang. analytic evaluation)
✦ dla danego zbioru procesów mających zadane
uporządkowanie i wyrażone w milisekundach fazy
procesora rozważamy algorytmy planowania (FCFS, SJF,
RR (o zadanym kwancie czasu) , itp.)
✦ Pytanie: który algorytm minimalizuje czas oczekiwania?
Ocena algorytmów (c.d)
✦ Modelowanie deterministyczne jest proste i
szybkie, daje konkretne liczby pozwalające
dokonać wyboru algorytmu planowania
✦ Modelowanie deterministyczne wymaga jednak
specyficznych sytuacji i dokładnej wiedzy
dlatego nie zasługuje na miano ogólnie
użytecznego
Zadanie – ogólny schemat
Proces Czas przybycia Czas trwania fazy
P1
P2
P3
P4
P5
t1
t2
t3
t4
t5
f1
f2
f3
f4
f5
✦ Zakładając, że procesy P1 , P2 , P3 , P4 , P5 przybyły odpowiednio w chwilach: t1 , t2 , t3 , t4 , t5 , porównać metodą
deterministyczną algorytmy FCFS, SJF, SRTF, HRRN i RR(q )
✦ Uwaga: jeśli czasy przybycia nie są podane to zakładamy, że
t1 = t2 = t3 = t4 = t5 = 0 oraz, że procesy przybyły w
porządku P1 , P2 , P3 , P4 , P5
Ocena algorytmów (c.d.)
✦ Modele obsługi kolejek - analiza obsługi kolejek
w sieciach(ang. queueing-network analysis)
✦ Wzór Little’a: n = l*W - liczba procesów opuszczających
kolejkę musi się równać liczbie procesów przychodzących
✦ n - średnia długość kolejki
✦ W - średni czas oczekiwania w kolejce
✦ l - ilość nowych procesów na sekundę
✦ Symulacja sterowana rozkładami
✦ ma ograniczoną dokładność
✦ taśma śladów zdarzeń rzeczywistego systemu może
poprawić dokładność
✦ Implementacja - kosztowna ale dokładna ocena
Ocena planistów przydziału
procesora - symulacja
...
CPU
symulacja
10
we/wy 213
faktyczne
dane o
wykonaniu
procesu
CPU
statystyka działania
metodą FCFS
FCFS
12
we/wy 112
CPU
2
symulacja
SJF
statystyka działania
metodą SFJ
we/wy 147
CPU
173
...
taśma za śladem
symulacja
RR
(Q=14)
statystyka działania
metodą RR (Q=14)
Przykład: Solaris 2
✦
✦
✦
✦
4 klasy: real time, system, time sharing, interactive
Priorytet globalny i priorytety w obrębie klas
Proces potomny dziedziczy klasę i priorytet
Klasa domyślna time sharing, dynamicznie zmieniane
priorytety
✦ wielopoziomowe kolejki ze sprzężeniem zwrotnym
✦ wyższy (mniejszy) priorytet <-> mniejszy(większy) kwant czasu
✦ Klasa interactive:wyższy priorytet dla aplikacji X-ów
✦ Klasa system - procesy jądra
✦ proces działa, aż zostanie zablokowany lub wywłaszczony
✦ Planista wylicza priorytet globalny, jeśli taki sam to RR
✦ Solaris 9 - nowe klasy: fixed priority (time sharing), fair
share (udziały CPU)
Przykład: Solaris 2
priorytet
globalny
kolejność
planowania
najwyższy
pierwsza
priorytety
dla klas
rzeczywista
systemowa
interakcyjna
podziału czasu
najniższy
ostatnia
klasy
planowania
kolejka
wykonań
KLT LWP cz.
rzeczywistego
KLT usług
jądra
KLT LWP
interakcyjnych
i podziału
czasu
Przykłady poleceń: Solaris 2
✦ vmstat licznik [przedział]
✦ licznik - liczba raportów
✦ przedział - przerwa między raportami (w sek.)
✦ vmstat 5 4
✦ r - ilość działających procesów czekających na CPU
✦ cs - ilość przełączeń kontekstu
✦ us - procent cykli CPU w trybie użytkownika
✦ sy - procent cykli CPU w trybie jądra
✦ id - procent niewykorzystanych cykli CPU
Przykłady poleceń: Solaris 2 (c.d.)
✦ dispadmin -l
✦ dispadmin -g -c TS
✦ ts_quantum - kwant czasu
✦ ts_tqexp - nowy priorytet po wykorzystaniu czasu
✦ ts_slpret - nowy priorytet po wyjściu z uśpienia
✦ ts_maxwait - maksymalny czas pozostawania gotowym
✦ ts_lwait - nowy priorytet po przekroczeniu ts_maxwait
✦ priocntl -d -i all
Przykład: Windows 2000
✦ Planowanie priorytetowe z wywłaszczeniami [0..31]
✦ Wątek jest wykonywany aż zostanie wywłaszczony przez
proces o wyższym priorytecie, zakończy, zużyje kwant czasu,
wykona blokujące wywołanie systemowe (np. we/wy)
✦ klasa czasu rzeczywistego [16..31] i klasa zmienna [0..15]
✦ Win32 API: klasy priorytetów oraz relatywne priorytety w
obrębie klas
✦ NORMATYWNY – domyślny priorytet relatywny w klasie
✦ Wątek w klasie zmiennej po wyczerpaniu czasu jest
degradowany, gdy zakończy czekanie (we/wy) - awansowany
✦ Procesy pierwszo(drugo)planowe (ang. fore(back)ground)
✦ Proces wybrany na ekranie staje się pierwszoplanowy i ma
zwiększany trzy razy kwant czasu co zapewnia mu dłuższe
działanie
Przykład: priorytety W2K
klasy
relatywne
czas
wysoki
rzeczywisty
nadnormatywne
normatywne
subnormatywne
idle
krytyczne
31
15
15
15
15
15
najwyższe
26
15
12
10
8
6
nadnormatywne
25
14
11
9
7
5
normatywne
24
13
10
8
6
4
subnormatywne
23
12
9
7
5
3
najniższe
22
11
8
6
4
2
idle
16
1
1
1
1
1
Przykłady poleceń: Windows XP
✦ Menedżer zadań
✦ Crtl+Shift+Esc
✦ Ctrl+Alt+Delete
✦ Procesy
✦ Widok
✦ Wybierz kolumny
✦ Uruchom
✦ start /?
✦ msconfig.exe
✦ Logo Win+Break
✦ Zaawansowane
✦ Wydajność
✦ Ustawienia
Zarządzanie pamięcią
✦ Program musi być wprowadzony do pamięci
operacyjnej i przydzielony odpowiedniemu
procesowi
✦ Kolejka wejściowa – (ang. input queue) zbiór
procesów czekających na dysku na
wprowadzenie do pamięci w celu wykonania
✦ Program użytkownika, zanim zostanie
wykonany, przechodzi przez kilka faz
Wieloetapowe przetwarzania
programu użytkownika
biblioteka
systemowa
ładowana
dynamicznie
biblioteka
systemowa
moduły
wynikowe
łączenie
statyczne
program
źródłowy
kompilator
asembler
czas
kompilacji
moduł
wynikowy
program
linkujący
moduł
ładowalny
czas
ładowania
program
ładujący
łączenie
dynamiczne
obraz
binarny
programu
w pamięci
czas
wykonania
(run time)
Powiązanie rozkazów i danych
z adresami pamięci (1)
✦ Powiązanie rozkazów i danych z adresami
pamięci może zostać wykonane w dowolnym z
trzech kroków
✦ 1. czas kompilacji - jeśli podczas kompilacji jest
znane miejsce, w którym proces będzie
przebywał, to można wygenerować kod
bezwzględny (ang. absolute code); gdy w
późniejszym czasie ten adres początkowy
ulegnie zmianie, wówczas kod taki trzeba
skompilować od nowa
Powiązanie rozkazów i danych
z adresami pamięci (2)
✦ 2. czas ładowania - jeśli podczas kompilacji nie
wiadomo, gdzie będzie umieszczony proces w
pamięci, to kompilator musi wytwarzać kod
przemieszczalny (ang. relocatable)
✦ 3. czas wykonania - jeśli proces może ulegać
przemieszczeniu z jednego miejsca pamięci do
innego podczas swojego wykonania to trzeba
zastosować specjalny sprzęt do mapowania
adresów (np. bazowe i graniczne rejestry).
Logiczna i fizyczna przestrzeń
adresowa
✦ Adres oglądany przez jednostkę pamięci zwie się
fizyczną przestrzenią adresową ; to w jaki sposób
fizyczna przestrzeń adresowa jest odwzorowywana
jest podstawową cechą zarzadzania pamięcią
✦ Logiczny adres – wygenerowany przez CPU; jeśli odwzorowany na
adres fizyczny podczas wykonywania programu wtedy jest to
wirtualny adres
✦ Fizyczny adres – adres widziany przez sterownik pamięci
✦ Adres logiczny i fizyczny jest taki sam podczas kompilacji
i ładowania; logiczny(wirtulany) i fizyczny adres różnią
się podczas wykonania
Jednostka zarządzania
pamięcią (MMU)
✦ Urządzenie sprzętowe dokonujące
odwzorowania adresów fizycznych na wirtualne
(ang. memory-managament unit)
✦ W MMU do każdego adresu wytwarzanego przez
proces użytkownika dodawana jest wartość
rejestru przemieszczenia (ang. relocation
register) w chwili odwoływania się do pamięci
✦ program użytkownika nigdy nie ma do czynienia
z rzeczywistym adresem; program ten działa na
na logicznych adresach
Przemieszczenie dynamiczne z
z użyciem rejestru
pamięć
rejestr
przemieszczenia
14000
CPU
adres logiczny
346
+
adres fizyczny
14364
jednostka zarządzania
pamięcią (MMU)
Ładowanie dynamiczne
✦ Podprogram nie jest wprowadzany do pamięci dopóty,
dopóki nie zostanie wywołany
✦ Lepsze wykorzystanie pamięci; nigdy nie zostanie
załadowany podprogram, którego się nie używa
✦ Schemat ten jest szczególnie przydatny wtedy, kiedy
trzeba okazjonalnie wykonać wielkie fragmenty kodu
(np. obsługa błędów)
✦ Nie wymaga specjalnego wsparcia ze strony systemu
operacyjnego; użytkownicy projektują wykorzystanie
procedur bibliotecznych
Konsolidacja dynamiczna
✦ Konsolidację opóźnia się do czasu wykonania
✦ W obrazie binarnym, w miejscu odwołania
bibliotecznego znajduje się tylko namiastka (ang.
stub) procedury będąca małym fragmentem kodu,
wskazującym jak odnaleźć odpowiedni, rezydujący w
pamięci podprogram biblioteczny lub jak załadować
bibliotekę jeśli podprogramu nie ma w pamięci
✦ Namiastka wprowadza na swoje miejsce adres
podprogramu i go wykonuje
✦ System operacyjny sprawdza podprogram czy jest w
pamięci a jeśli nie ma to go sprowadza
Konsolidacja dynamiczna (c.d.)
✦ Do pamięci można załadować więcej niż jedną wersję
biblioteki, każdy program posłuży się swoją informacją o
wersji, aby wybrać właściwą bibliotekę
✦ Niezgodności powodowane zmianami w bibliotece
uwidaczniają się tylko w programach skompilowanych z
nowym numerem wersji
✦ Biblioteki dzielone (ang. shared libraries)
✦ Konsolidacja dynamiczna (ang. dynamic linking ) wymaga
wspomagania ze strony systemu operacyjnego, niektóre
systemy realizują jedynie konsolidację statyczną (ang. static
linking)
Nakładki
✦ Idea polega na przechowywaniu w pamięci tylko tych
danych i rozkazów, które są stale potrzebne
✦ Nakładki (ang. overlays) są potrzebne w sytuacji gdy
proces jest większy niż ilość przydzielonej mu pamięci
✦ Implementowane z poziomu użytkownika; nie wymagają
wsparcia ze strony systemu operacyjnego; zrozumienie
dużego programu jest trudne więc projektowanie
nakładek jest złożonym przedsięwzięciem
Nakładki - przykład
Dwuprzebiegowy asembler
I przebieg konstruuje tablicę symboli
II przebieg generuje kod maszynowy
Kod przebiegu I = 70KB, II = 80KB, tablica symboli =
20KB, wspólne podprogramy = 30KB
✦ Wszystkiego 200KB; mamy tylko 150KB pamięci
✦ Kod przebiegu I i II są niezależne:
✦
✦
✦
✦
✦ I nakładka : I kod + tablica + wspólne podprogramy
✦ II nakładka : II kod + tablica + wspólne podprogramy
✦ moduł obsługi nakładek = 10KB
Nakładki dwuprzebiegowego
asemblera
tablica
symboli
20 kB
wspólne
podprogramy
30 kB
moduły obsługi
nakładek
10 kB
przebieg 1
70 kB
przebieg 2
90 kB
80 kB
Wymiana
✦ Proces może być tymczasowo odsyłany (ang.
swapped) do pamięci pomocniczej (ang. backing
store) i pobierany z powrotem do pamięci
operacyjnej w celu kontynuowania działania
✦ Pamięć pomocnicza (ang. backing store) - jest
nią na ogół szybki dysk dostatecznie pojemny
aby pomieścić kopie obrazów pamięci
wszystkich użytkowników; powinien także
umożliwiać bezpośredni dostęp do tych obrazów
pamięci
Wymiana (c.d.)
✦ Wytaczanie (ang. roll out), wtaczanie (ang. roll
in) - wariant wymiany wykorzystywany w
planowaniu priorytetowym; proces
niskopriorytetowy zostaje wyswapowany w
sytuacji gdy nadejdzie proces
wysokopriorytetowy do kolejki procesów
gotowych; proces wysokopriorytetowy zostaje
załadowany do pamięci i wykonany, a gdy
skończy, to proces o niższym priorytecie może
być sprowadzony do pamięci i wznowiony
Wymiana (c.d.)
✦ Głównym składnikiem czasu wymiany jest czas
transferu (na dysk); całkowity czas transferu
jest proporcjonalny do ilości pamięci
wyswapowanej
✦ Zmodyfikowana metoda wymiany jest
stosowana w wielu systemach operacyjnych
m.in. Unix, Linux, Windows; w normalnych
warunkach wymiana jest zabroniona, jednak
gdy nagromadzenie procesów w pamięci osiąga
pewną wartość progową może mieć miejsce
Wymiana dwu procesów z
użyciem pamięci pomocniczej
system
operacyjny
proces 1
wysłanie
proces 2
przestrzeń
użytkownika
pamięć
operacyjna
sprowadzenie
pamięć
pomocnicza
Zastosowanie rejestrów
sprzętowych do ochrony pamięci
rejestr
graniczny
adres
logiczny
<
nie
CPU
pułapka: błąd
adresowania
rejestr
przemieszczenia
tak
+
adres
fizyczny
pamięć
Przydział ciągły
✦ Pamięć główna zwykle mieści:
✦ Rezydentny system operacyjny przechowywany zwykle w
pamięci dolnej (ang. low memory) (wraz z wektorem
przerwań)
✦ Proces użytkownika przechowywany w pamięci górnej
(ang. high memory)
✦
Przydział ciągły (c.d.)
✦ Wieloprogramowanie ze stałą liczbą zadań (ang.
multiprogrammining with a fixed number of
tasks - MFT)
✦ Rejestr przemieszczenia (ang. relocation-register) jest
wykorzystany do do ochrony kodu użytkownika i systemu
operacyjnego
✦ Rejestr przemieszczenia zawiera wartość najmniejszego
adresu fizycznego; rejestr graniczny zawiera zakres
adresów logicznych - każdy adres logiczny musi być
mniejszy od wartości rejestu granicznego
Przydział ciągły (c.d.)
✦ Wieloprogramowanie z zmienną liczbą zadań (ang.
multiprogramming with a variable number of tasks MVT)
✦ Dziura (ang. hole ) – blok dostępnej pamięci; dziury o różnorodnej
wielkości są porozrzucane po całej pamięci operacyjnej
✦ Gdy proces staje się gotowy, alokuje pamięć z dziury w pamięci
operacyjnej na tyle pojemnej aby sprostać wymaganiom procesu
✦ System operacyjny zarządza:
a) zaalokowanymi partycjami b) wolnymi partycjami (dziurami w
pamięci)
Przydział ciągły (c.d.)
✦ przykład
SO
Proces 5
SO
Proces 5
SO
Proces 5
Proces 5
Proces 9
Proces 9
Proces 10
Proces 8
Proces 2
SO
Proces 2
Proces 2
Proces 2
Przykład planowania
kolejka zadań
0 kB
system
operacyjny
400 kB
2160 KB
2560 kB
proces
pamięć
czas
P1
600 kB
10
P2
1000 kB
5
P3
300 kB
20
P4
700 kB
8
P5
500 kB
15
Przykład planowania (c.d.)
0 kB
0 kB
system
operacyjny
0 kB
system
operacyjny
400 kB
400 kB
1000 kB
P2
system
operacyjny
400 kB
P1
P1
0 kB
400 kB
1000 kB
P3
P2
przydziel
2000 kB
P4
P3
system
operacyjny
400 kB
P5
2000 kB
900 kB
1000 kB
1000 kB
P4
1700 kB
2000 kB
system
operacyjny
P1
1000 kB
kończy
0 kB
P1
kończy
P4
2000 kB
P4
P5
1700 kB
P3
przydziel
1700 kB
P3
2000 kB
2300 kB
2300 kB
2300 kB
2300 kB
2300 kB
2560 kB
2560 kB
2560 kB
2560 kB
2560 kB
P3
Problem dynamicznego
przydziału pamięci
✦ Jak na podstawie listy wolnych dziur spełnić
zamówienie na obszar o rozmiarze n
✦ Pierwsze dopasowanie: (ang. first-fit) - przydziel
pierwszą dziurę o wystarczającej wielkości
✦ Najlepsze dopasowanie: (ang. best-fit) - przydziel
najmniejszą z dostatecznie dużych dziur; przejrzyj całą
listę, chyba że jest uporządkowana według rozmiarów.
Strategia ta zapewnia najmniejsze pozostałości po
przydziale
Problem dynamicznego
przydziału pamięci (c.d.)
✦ Najgorsze dopasowanie: (ang. worst-fit) przydziel największą dziurę; należy również
przeszukać całą listę. Strategia ta pozostawia po
przydziale największą dziurę, która może okazać
się bardziej użyteczna niż pozostałość wynikająca
z podejścia polegającego na przydziale najlepiej
pasującej dziury
✦ Symulacje wykazały, że first-fit i best-fit są lepsze
od worst-fit zarówno ze względu na zmniejszanie
czasu jak i zużycia pamięci
Fragmentacja
✦ Fragmentacja zewnętrzna (ang. external
fragmentation) – suma wolnych obszarów w
pamięci wystarcza na spełnienie zamówienia ale
nie tworzą one ciągłego obszaru
✦ Fragmentacja wewnętrzna ( ang. internal
fragmentation) – zaalokowana pamięć jest
nieznacznie większa od żądania alokacji pamięci;
różnica ta stanowi bezużyteczny kawałek
pamięci wewnątrz przydzielonego obszaru
Upakowanie pamięci - przykład
0 kB
0 kB
system
operacyjny
system
operacyjny
400 kB
400 kB
P5
900 kB
1000 kB
100 kB
P5
900 kB
upakuj
P4
P4
1600 kB
1700 kB
2000 kB
2300 kB
2560 kB
300 kB
P3
1900 kB
P3
660 kB
260 kB
2560 kB
Fragmentacja - (c.d.)
✦ Rozwiązanie problemu zewnetrznej fragmentacji
to upakowanie (ang. compaction)
✦ Przemieszczenie zawartości pamięci w taki sposów aby
cała wolna pamięć znalazła się w jednym wielkim bloku
✦ Upakownie nie jest możliwe jeśli ustalanie adresów jest
statyczne ; jest możliwe jedynie jeśli ustalanie adresów
jest dynamicznie wykonywane podczas działania procesu
✦ Problem we/wy
✦ “Zamknij” zadanie w pamięci w czasie wykonywanie we/wy
✦ Realizuj we/wy jedynie do buforów systemowych
Porównanie sposobów
upakowania pamięci
0 kB
0 kB
system
operacyjny
system
operacyjny
300 kB
500 kB
P1
P2
600 kB
0 kB
300 kB
500 kB
600 kB
P1
P2
P3
800 kB
1000 kB
P4
P3
1200 kB
1500 kB
system
operacyjny
300 kB
500 kB
P1
P2
600 kB
system
operacyjny
300 kB
500 kB
P4
1000 kB
P3
1900 kB
2100 kB
P2
600 kB
1500 kB
P4
przydział
początkowy
P1
1200 kB
1200 kB
1900 kB
2100 kB
0 kB
przemieszczono
600kB
P4
P3
2100 kB
2100 kB
przemieszczono
przemieszczono
400kB
200kB
Stronicowanie (ang. Paging)
✦ Logiczna przestrzeń adresowa procesu może być
nieciągła tj. procesowi można przydzielać
dowolne dostępne miejsca w pamięci fizycznej
✦ Pamięć fizyczną dzieli się na bloki stałej długości
zwane ramkami (ang. frames) (rozmiar jest
potęgą 2, między 512B a 16MB)
✦ Pamięć logiczną dzieli się na bloki tego samego
rozmiaru zwane stronami (ang. pages)
✦ Pamiętana jest lista wolnych ramek
Przykłady stron
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
Altlas
512 48b słów
Honeywell-Multics
1024 36b słów
IBM 370/XA i 370/ESA
4kB
VAX
512B
IBM AS/400
512B
DEC Alpha
8kB
MIPS
4kB -> 16MB
UltraSPARC
8kB -> 4MB
Pentium
4kB -> 4MB
PowerPC
4kB
Stronicowanie (c.d.)
✦ Wykonanie procesu o rozmiarze n stron wymaga
znalezienia n wolnych ramek i załadowanie w
nie procesu
✦ Utworzenie tablicy stron (ang. page table) do
odwzorowywania adresów logicznych na
fizyczne
✦ Eliminiuje się fragmentację zewnętrzna ale może
powstać fragmentacja wewnętrzna
✦ proces 72766B = 35 stron 2048B + 1086 B -> 36 ramek ->
fragmentacja wewnętrzna = 2048 B - 1086 B = 962 B
Schemat Translacji Adresu
✦ Stronicowanie wymaga wsparcia sprzętowego
✦ Adres wygenerowany przez CPU jest dzielony na
dwie części:
✦ Numer strony (ang. Page number) (p) – używany jako
indeks w tablicy stron zawierającej adresy bazowe
wszystkich stron w pamięci fizycznej
✦ Odległość na stronie (ang. Page offset ) (d) – w połączeniu
z adresem bazowym definuje fizyczny adres pamięci
posyłany do jednostki pamięci
Architektura sprzętu
stronicującego
f
adres
logiczny
CPU
p
f0000....0000
d
f
d
adres
fizyczny
f1111....1111
p
f
pamięć
fizyczna
tablica stron
Model stronicowania pamięci
logicznej i fizycznej
numer
ramki
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
Adres logiczny
✦ logiczna przestrzeń adresowa = 2^m
✦ rozmiar strony = 2^n (B lub słów)
✦ adres logiczny = (nr strony, odległość )
✦ nr strony ≤ 2^(m-n)
✦ odległość = 2^n
✦ Przykład (minimalny):
✦ strona rozmiaru 4 słów
✦ pamięć fizyczna = 32 słowa = 8 stron
Przykład minimalny
a b c d e f g h i j k l m n o p
pamięć
logiczna
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
5
6
1
2
0
1
2
3
i j k l m n o p
0
4
8
12
tablica
stron
pamięć
fizyczna
a b c d e f g h
16
20
24
28
Przydział wolnej ramki
lista wolnych
ramek
14
13
18
20
15
strona 0
strona 1
strona 2
strona 3
nowy proces
lista wolnych
ramek
15
13
13 strona 1
14
14 strona 0
15
15
16
16
strona 0
strona 1
strona 2
strona 3
nowy proces
17
18
19
20
21
17
18 strona 2
19
14
13
18
20
0
1
2
3
tablica stron
nowego procesu
20 strona 3
21
Implementacja Tablicy Stron (1)
✦ Tablicę stron przechowuje się w pamięci
operacyjnej
✦ Rejestr bazowy tablicy stron (ang. Page-table
base register - PTBR) wskazuje położenie tablicy
stron
✦ Rejestr długości tablicy stron (ang. Page-table
length register - PTLR) wskazuje rozmiar tablicy
stron; zwartość ta jest badana w celu
sprawdzenia czy dany adres jest dozwolny
Implementacja Tablicy Stron (2)
✦ Schemat ten wymaga dwóch kontaktów z pamięcia w
celu uzyskania dostępu do bajtu - jeden do wpisu do
tablicy stron, drugi do danego bajtu. W większości
przypadków takie opóźnienie jest nie do zaakceptowania
✦ Problem ten rozwiązuje się za pomocą specjalnej, małej
i szybko przeszukiwanej, sprzętowej pamięci podręcznej
zwanej rejestrami asocjacyjnymi (ang. associative
registers ) lub buforami translacji adresów stron (ang.
translation look-aside buffers -TLBs)
Sprzęt stronicujący z TLB
adres
logiczny
CPU
p
f
d
numer
strony
numer
ramki
f0000....0000
trafienie
TLB
f
d
adres
fizyczny
TLB
f1111....1111
p
chybienie
TLB
f
pamięć
fizyczna
tablica stron
Rejestry asocjacyjne
✦ Równoległe wyszukiwanie
Nr strony
Nr ramki
Translacja adresu (A´, A´´)
✦ Jeśli A´ jest w rejestrze asocjacyjnym to weź odpowiadający mu
numer ramki
✦ W przeciwnym razie weź numer ramki z tablicy stron
Efektywny czas dostępu do
pamięci (EAT)
✦Przeglądnięcie rejestrów asocjacyjnych = ε jednostek
czasu
✦Niech cykl pamięci wynosi 1 jednostkę czasu
✦Współczynnik trafień (ang. hit ratio) – procent numerów
stron odnajdowywanych w rejestrach asocjacyjnych;
współczynnik zależy od liczby rejestrów asocjacyjnych
✦Współczynnik trafień = α
✦Effective Access Time (EAT)
EAT = (1 + ε) α + (2 + ε)(1 – α)
=2+ε–α
Ochrona pamięci
✦ Ochrona pamięci jest zaimplementowana za pomocą
bitów ochrony przypisanych każdej ramce
✦ Bit poprawności (ang. Valid-invalid bit) - każdy wpis w
tablicy stron zostaje uzupełniony o dodatkowy bit:
✦ “poprawny” (“valid” ) oznacza, że strona, z którą jest on związany,
znajduje się w logicznej przestrzeni adresowej procesu, a więc jest ona
dozwolona (ang. legal page)
✦ “niepoprawny” (“invalid” ) oznacza, że strona nie należy do logicznej
przestrzenia adresowej procesu
Bit poprawności lub
niepoprawności
0
strona 0
strona 1
strona 2
strona 3
strona 4
10,468
12,287
bit
poprawności
numer
ramki
0
2
v
1
3
v
2
4
v
3
7
v
4
8
v
5
9
v
6
0
i
7
0
i
strona 5
tablica
stron
2
3
4
strona 0
strona 1
strona 2
5
6
7
8
9
strona 3
strona 4
strona 5
Stronicowanie wielopoziomowe
✦Logiczna przestrzeń adresowa na 32- bitowej
maszynie z rozmiarem strony 4KB (2^12)
powoduje, że tablica stron może zawierać do
miliona wpisów (2^32/2^12)
✦Ponieważ każda pozycja w tablicy stron ma 4B
więc każdy proces może wymagać do 4MB
fizycznej przestrzeni adresowej na samą tylko
tablicę stron
✦Jednym z rozwiązań jest stronicowanie
wielopoziomowe
Przykład dwupoziomowego
stronicowania (1)
✦Logiczna przestrzeń adresowa na 32- bitowej
maszynie z rozmiarem strony 4K jest podzielona
na:
✦ 20-bitowy numer strony
✦ 12-bitowa odległość na stronie
✦Ponieważ dzielimy tablicę stron na strony, numer
strony podlega dalszemu podziałowi na:
✦ 10-bitowy numer strony
✦ 10-bitowa odległość na stronie
Schemat dwupoziomowej
tablicy stron
tablica
stron
0
1
1
500
.
.
.
100
100
500
.
.
.
708
.
.
.
708
929
zewnętrzna
tablica
stron
900
900
strona
tablicy
stron
pamięć
929
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Przykład dwupoziomowego
stronicowania (2)
✦Adres logiczny przyjmuje więc postać:
numer strony odległość na stronie
p1
p2
d
10
10
12
gdzie p1 jest indeksem do zewnętrznej
tablicy stron, a p2 oznacza przesunięcie na
stronie tej tablicy
Tłumaczenie adresu w 32b
dwupoziomowej architekturze
adres logiczny
p1
p2
d
p1
p2
zewnętrzna
tablica
stron
d
strona
tablicy
stron
Stronicowanie wielopoziomowe
a wydajność
✦Ponieważ każdy poziom jest zapamiętany jako
osobna tablica w pamięci więc przekształcenie
adresu logicznego na fizyczny może wymagać aż
czterech dostępów do pamięci
✦Zwiększyliśmy więc pięciokrotnie czas potrzebny
do wykonania jednego dostępu do pamięci,
zastosowanie pamięci podręcznej pozwala
utrzymać wydajność w rozsądnych granicach
Stronicowanie wielopoziomowe
a wydajność (c.d.)
✦Dla współczynnika α = 0.98, ε = 20 ns i czasu
dostępu do pamięci 100 ns otrzymujemy:
effective access time = 0.98 x 120 + 0.02 x 520
= 128 nanosekund.
Co stanowi jedynie 28-procentowe wydłużenie
czasu dostępu do pamięci mimo dodatkowych
poziomów przeszukiwania tablic
Haszowane tablice stron
✦ Przestrzeń adresowa > 32 bitów?
✦ Numer strony pamięci wirtualnej jest odwzorowany
(ang. hashed ) przy pomocy funkcji haszującej na
pozycje w tablicy (ang. hashed page table)
✦ Wszystkie strony wirtualne którym odpowiada ta
sama pozycja w tablicy (kolizja) zostają
umieszczone na jednej liście (metoda łańcuchowa)
✦ Element listy: numer strony wirtualnej (p), numer
strony pamięci (r), wskaźnik do następnego
elementu listy
Haszowanie - przykłady
✦ Osiem pozycji w tablicy z haszowaniem o etykietach:
0,1,2,3,4,5,6,7 (długość tablicy M=8)
✦ Modularna funkcja haszująca - reszta z dzielenia przez 8
✦ Rozwiązywanie kolizji
✦ liniową (ang. linear rehashing)
✦ metodą łańcuchową (ang. overflow with chaining )
✦ Średni długość przeszukania tablicy długości M jednego z
N elementów
✦ liniowe haszowanie: 2 - 2N/M
✦ łańcuchowe: 1+ (N-1)/2M
✦
Haszowanie liniowe
119
wartość (119)
50
0
1
50
wartość (50)
2
51
51
wartość (51)
3
74
74
wartość (74)
4
83
83
wartość (83)
5
95
-
119
95
6
wartość (95)
7
Haszowanie łańcuchowe
50
51
74
50
wartość (50)
83
51
wartość (51)
.
.
74
wartość (74)
83
wartość (83)
94
119
wartość (119)
95
139
wartość (139)
119
94
wartość (94)
95
wartość (95)
.
139
hash table
overflow table
.
-
Wyszukiwanie adresu strony w
tablicy z haszowaniem
adres logiczny
p
d
r
q
funkcja
haszująca
hash table
s
p
d
r
adres
fizyczny
...
pamięć
fizyczna
Odwrócona tablica stron
✦ Odwrócona tablica stron (ang. inverted page table) ma
po jednej pozycji dla każdej rzeczywistej strony pamięci
(ramki)
✦ Każda pozycja zawiera adres wirtualny strony
przechowywanej w ramce rzeczywistej pamięci oraz
informacje o procesie posiadającym stronę
✦ Zmniejsza się rozmiar pamięci potrzebnej do pamiętania
wszystkich tablic stron, jednak zwiększa się czas
potrzebny do przeszukania tablicy przy odwołaniu do
strony
✦ tablica haszowania (ang. hash table) - ogranicza szukanie do jednego
lub najwyżej kilku wpisów w tablicy stron
Odwrócona tablica stron
adres logiczny
CPU
pid
p
d
i
wyszukiwanie
d
adres
fizyczny
i
pid
p
pamięć
fizyczna
tablica stron
Strony dzielone
✦ Dzielenie kodu
✦ Jedna kopia kodu nie modyfikującego samego siebie tj.
wznawialnego (ang. reentrant) jest dzielona pomiędzy
procesy (np. editory tekstu, kompilatory, system okien)
✦ Kod dzielony musi być widziany pod tą samą lokacją w
logicznej przestrzeni adresowej dla wszystkich procesów
✦ Kod prywatny i dane
✦ Każdy proces ma własną kopie kodu i danych
✦ Strony dla prywatnego kodu i danych mogą się pojawić w
dowolnym miejscu logicznej przestrzeni adresowej
Dzielenie kodu w środowisku
stronicowanym
ed 1
ed 2
ed 3
dane 1
0
3
4
6
1
tablica stron
procesu P1
proces P1
ed 1
ed 2
ed 3
dane 2
ed 1
ed 2
ed 3
dane 3
proces P3
proces P2
3
4
6
2
tablica stron
procesu P3
3
4
6
7
tablica stron
procesu P2
1
dane 1
2
dane 3
3
ed 1
4
ed 2
5
6
ed 3
7
dane 2
8
9
10
11
Segmentacja
✦Segmentacja (ang. segmentation) to schemat
zarządzania pamięcią który urzeczywistnia sposób
widzenia pamięci przez użytkownika
✦Program jest zbiorem segmentów czyli jednostek
logicznych takich jak:
program główny,
procedura,
funkcja,
zmienne lokalne, zmienne globalne,
common block,
stos, tablica symboli, arrays
Program z punkty widzenia
użytkownika
podprogram
stos
tablica
symboli
funkcja
sqrt
program
główny
logiczna
przestrzeń
adresowa
Filozofia segmentacji
stos
podprogram
stos
podprogram
tablica
symboli
tablica
symboli
program
główny
logiczna
przestrzeń
adresowa
program
główny
pamięć
fizyczna
Adres logiczny - segmentacja
✦ <numer segmentu, odległość>
✦ Program użytkownika jest tłumaczony za pomocą
kompilatora, który automatycznie konstruuje segmenty
odpowiadające programowi
✦ Kompilator języka Pascal wytwarza segmenty
✦
✦
✦
✦
(1) zmienne globalne
(2) stosu wywołań procedur
(3) kod funkcji i procedur
(4) lokalne zmienne funkcji lub procedury
✦ Program ładujący przydziela numery segmentów
Sprzęt do segmentacji
s
granica
baza
tablica segmentów
s
d
tak
<
+
nie
CPU
pułapka: błąd adresacji
pamięć fizyczna
Przykład segmentacji
stos
segment 0
segment 3
segment 0
funkcja
sqrt
0
1
2
3
4
tablica
symboli
segment 4
granica
baza
1000
400
400
1100
1000
1400
6300
4300
3200
4700
2400
3200
segment 3
program
główny
tablica
segmentów
4300
4700
segment 1
segment 2
logiczna
przestrzeń
adresowa
s=4, d=600
5300
segment 2
segment 4
5700
6300
6700
segment 1
fizyczna przestrzeń adresowa
1400
podprogram
Implementacja segmentacji (1)
✦Adres logiczny składa się z dwu części :
<numer-segmentu, odległość w segmencie>,
✦Tablica segmentów (ang. segment table )– jest
wykazem par:
✦ bazy – zawiera początkowy fizyczny adres segmentu w
pamięci
✦ granica – oznacza długość segmentu
Implementacja segmentacji (2)
✦Rejestr bazowy tablicy segmentów (ang.
Segment-table base register -STBR) wskazuje na
tablicę segmentów w pamięci
✦Rejestr długości tablicy segmentów (ang.
Segment-table length register -STLR) oznacza
liczbę segmentów przypadających na program;
numer segmentu s jest poprawny jeśli s < STLR.
Implementacja segmentacji (3)
✦ Relokacja
✦ dynamiczna
✦ za pomocą tablicy segmentów
✦ Dzielenie
✦ segmenty dzielone
✦ ten sam numer segmentu
✦ Alokacja
✦ first fit/best fit
✦ fragmentacja zewnętrzna
✦ upakowanie możliwe w dowolnej chwili
Dzielenie segmentów w
pamięci segmentowanej
editor
pamięć
logiczna
procesu P1
granica baza
25286 43062
4425 68348
0
segment 0
1
dane 1
tablica
segmentów
procesu P1
segment 1
editor
editor
68348
72773
dane 1
90003
0
segment 0
pamięć
logiczna
procesu P2
43062
1
dane 2
segment 1
granica baza
25286 43062
8850 90003
tablica
segmentów
procesu P2
98553
dane 2
pamięć
fizyczna
Implementacja segmentacji (4)
✦ Ochrona. Z każdym elementem tablicy
segmentów stowarzyszamy:
✦ validation bit = 0 ⇒ segment niepoprawny
✦ uprawnienia read/write/execute
✦ Bity ochrony dołączone do każdego segmentu;
dzielenie kodu ma miejsce na tym samym
poziomie
✦ Segmenty mają zmienną długość - problem
dynamicznej alokacji pamięci
Segmentacja ze
stronicowaniem – MULTICS
✦ MULTICS rozwiązuje problemy fragmentacji
zewnętrznej i długich czasów przeszukiwań
poprzez stronicowanie segmentów
✦ Rozwiązanie to różni się od czystej segmentacji
tym, że pozycja w tablicy segmentów nie
zawiera adresu bazowego lecz adres bazowy
tablicy stron dla tego segmentu
Segmentacja ze
stronicowaniem – Intel 386
✦ Intel 386 (i późniejsze) stosuje segmentację ze
stronicowaniem do zarządzania pamięcią z
dwupoziomowym schematem stronicowania
✦ Maksymalna liczba segmentów w procesie 16K
✦ Każdy segment mniejszy niż 4GB
✦ Rozmiar strony 4KB
Segmentacja – Intel 386 (c.d.)
✦ Przestrzeń adresowa ma dwie strefy zawierające
po co najwyżej 8KB segmentów
✦ prywatne segmenty procesu przechowywane w tablicy
lokalnych deskryptorów (ang. local descriptor table -LDT)
✦ każda pozycja w LDT ma 8B
✦ wspólne segmenty procesów przechowywane w globalnej
tablicy deskryptorów (ang. global descriptor table - GDT)
✦ selektor jest 16b liczbą
✦ 13b - numer segmentu
✦ 1b - czy segment jest w LDT czy w GDT
✦ 2b - ochrona
✦ każdy adres logiczny jest parą (selektor, odległość)
Segmentacja - Intel 386 (c.d.)
✦ Procesor ma 6 rejestrów segmentów do zaadresowania
6 segmentów oraz 6 rejestrów mikroprogramowych (8b)
do przechowywania pozycji z LDT i GDT
✦ Adres fizyczny ma 32b
✦ rejestr wyboru wskazuje na pozycję w LDT lub GDT
✦ na podstawie adresu początku segmentu i jego długości tworzony jest
adres liniowy (ang. linear address)
✦ sprawdzenie poprawności ze względu na długość segmentu
✦ jeśli adres jest poprawny to odległość dodaje się do wartości bazowej
Segmentacja - Intel 386 (c.d.)
✦ W procesorze 386 przyjęto stronicowanie
dwupoziomowe
✦ adres liniowy składa się z
✦ 20b numeru strony
✦ 10b wskaźnik do katalogu stron
✦ 10b wskaźnik do tablicy stron
✦ 12b odległość na stronie
✦
Intel 30386-tłumaczenie adresu
selektor
offset
adres logiczny
+
deskryptor segmentu
tablica deskryptorów
katalog strona offset
adres liniowy
ramka strony
adres fizyczny
katalog stron
wpis katalogowy
rejestr bazowy
katalogu stron
tablica stron
pozycja tablicy stron
Ustalanie wielkości pamięci
✦ pagesize
✦ AIX
✦ lsattr -HE -l sys0 -a realmem
✦ FreeBSD
✦ grep memory /var/run/dmesg.boot
✦ HP-UX
✦ dmesg | grep Phys
✦ Linux
✦ free
✦ Solaris
✦ dmesg | grep mem
✦ True64
✦ vmstat | grep ‘^Total’
Monitorowanie wykorzystania
pamięci
✦ vmstat
✦ memory - swap lub free
✦ page
✦ re - liczba przywołanych stron pamięci
✦ pi - liczba wczytanych stron
✦ fr - liczba stron zwolnionych
✦ po - liczba wypisanych stron
✦ KDE System Guard (ksysguard)
Program - top
Wyświetlanie obszarów
stronicowania
✦ AIX
✦ lsps -a
✦ FreeBSD
✦ pstat -s
✦ HP-UX
✦ swapinfo -t -a -m
✦ Linux
✦ cat /proc/swaps
✦ swapon -s ; free -m -o
✦ Solaris
✦ swap -l
✦ True64
✦ swapon -s
Obszary stronicowania
✦ AIX w pliku /etc/swapspaces
✦ FreeBSD w pliku /etc/fstab
✦ HP-UX w pliku /etc/fstab
✦ Linux w pliku /etc/fstab
✦ Solaris w pliku /etc/vfstab
✦ True64 w pliku /etc/sysconfigtab
✦ WXP w pliku:
✦ C:\WINDOWS\system32\pagefileconfig.vbs
Windows XP
✦ Menedżer zadań
✦ Crtl+Shift+Esc
✦ Ctrl+Alt+Delete
✦ Wydajność
✦ Procesy
✦ Użycie pamięci
✦ Panel sterowania
✦ Narzędzia administracyjne
✦ Wydajność
Literatura
✦ A. Silberschatz, P.B. Gavin, G. Gagne, Podstawy
systemów operacyjnych, wyd. IV, WNT, 2005 (tł. 6th
ed.)
✦ http://cs-www.cs.yale.edu/homes/avi/os-book/os6/index.html
✦ W. Stallings – Systemy operacyjne, Robomatic, 2004
✦ http://williamstallings.com/OS/OS5e.html
✦ Æ. Frisch, Unix – Administracja systemu, RM, 2003
✦ E. Bott & C. Siechert, Windows XP, RM, 2002

Podobne dokumenty