Systemy operacyjne

34
Systemy operacyjne Wykład 10 - ostatni Pamięć wirtualna nż. Wojciech Bieniecki ytut Nauk Ekonomicznych formatyki ://wbieniec.kis.p.lodz.pl/pwsz 1

description

Systemy operacyjne. Wykład 10 - ostatni Pamięć wirtualna. dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz. Egzamin – 27.06.2014. Warunkiem uczestnictwa w tym terminie egzaminu jest zaliczenie laboratorium na dzień 27.06. - PowerPoint PPT Presentation

Transcript of Systemy operacyjne

Page 1: Systemy operacyjne

Systemy operacyjne

Wykład 10 - ostatniPamięć wirtualna

dr inż. Wojciech BienieckiInstytut Nauk Ekonomicznychi Informatykihttp://wbieniec.kis.p.lodz.pl/pwsz 1

Page 2: Systemy operacyjne

Egzamin – 27.06.2014

2

Pytania testowe – jak na przedmiocie Architektura:• Wybór Tak / Nie• Wybór jednej opcji z listy• Wybór kilku opcji z listy• Ustawienie opcji w odpowiedniej kolejności

Pytania o krótkiej odpowiedzi:• Uzupełnić, opisać wykres• Rozwinąć , wyjaśnić skrót

Zadanie• Szeregowanie procesów• Przydział pamięci

Warunkiem uczestnictwa w tym terminie egzaminujest zaliczenie laboratorium na dzień 27.06

Page 3: Systemy operacyjne

Metody oszczędzania pamięci

3

Metody pozwalające zmniejszyć zużycie miejsca w pamięci operacyjnej: – łączenie dynamiczne – ładowanie dynamiczne – nakładanie.

Idea: fragment kodu programu nie jest wprowadzany do pamięci komputera dopóki nie ma faktycznego zapotrzebowania na jego wykonanie. Dzięki temu fragmenty kodu wykonywane rzadko nie zajmują miejsca w pamięci. Te fragmenty obejmują najczęściej: – procedury obsługi wyjątków, – struktury danych, które nie są w pełni wykorzystywane, – fragmenty kodu, których wykonanie jest objęte warunkiem, który rzadko jestspełniony.

WadaProgramista aplikacji musiałby utworzyć odpowiedni system gospodarowania pamięcią.RozwiązanieZarządzanie pamięcią przez system operacyjny.

Page 4: Systemy operacyjne

Zasada lokalności programu

4

Zasada lokalności przestrzennejJeśli nastąpiło odwołanie programu do pewnej lokacji w pamięci komputera, to następne odwołania z dużym prawdopodobieństwem będą dotyczyły lokacji położonej w pobliżu tej do której nastąpiło to odwołanie.

Zasada lokalności czasowejJeśli nastąpiło odwołanie programu do określonej lokacji w pamięci komputera, to w przyszłości to odwołanie zostanie wielokrotnie powtórzone.

Spełnienie zasad lokalności przez program powoduje, że jest możliwość automatycznego zarządzania pamięcią przez system operacyjny.

Jedną z możliwości jest pamięć wirtualna.

Page 5: Systemy operacyjne

Idea pamięci wirtualnej

5

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łujeprzechowywane 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.

Pamięć wirtualna jest szczególnie przydatna w systemach wieloprogramowych. Wszystkie uruchomione procesy są załadowane w całości do pamięci logicznej, ale w RAM znajdują się obszary wykorzystywane przez aktualnie wykonywany proces.

Page 6: Systemy operacyjne

Implementacja pamięci wirtualnej

6

Metody implementacji pamięci wirtualnej (ang. virtual memory)Stronicowanie na żądanie (ang. demand paging)Segmentacja (na żądanie)Segmentacja stronicowana (na żądanie)

Stronicowanie zwykłe – przed rozpoczęciem wykonania programu jego strony muszą być załadowane do pamięci operacyjnej.

Stronicowanie na żądanie – technika leniwej wymiany (ang. lazy swapper).Przed rozpoczęciem wykonania programu jego strony ładowane są do obszaru wymiany na dysku. Gdy nastąpi odwołanie do strony – jest ona wprowadzana do RAM.

technika wymaga wzbogacenia każdej pozycji w tablicy stron o dodatkowy bit, nazywany bitem poprawności odniesienia, który sygnalizuje, czy strona do której odwołuje się program jest załadowana do pamięci operacyjnej.

Page 7: Systemy operacyjne

Format pozycji tablicy stron

7

Ochrona: Pozwolenie na zapis i odczyt (ewentualnie wykonanie).

D (ang. dirty) automatycznie ustawiany na jeden, jeżeli strona zostanie zmodyfikowana.

R (ang. referenced) automatycznie ustawiany na jeden, jeżeli nastąpi odwołanie do strony.

V (ang. valid) 1-strona jest w pamięci 0 – strony nie ma w pamięci.

Jeżeli V==0, to próba odwołania do strony generuje wyjątek błędu strony (ang. page fault)

Jeżeli V==0, to numer ramki jest nieistotny. System operacyjny może w tymmiejscu przechować numer bloku dyskowego, w którym zapisano stronę.

Page 8: Systemy operacyjne

Przechowywanie stron na dysku

8

Ciągły obszar w przestrzeni wymiany odpowiada logicznej przestrzeni adresowej.

Numer ramki w tablicy stron identyfikuje przy pomocy tablicy pomocniczej numer bloku dyskowego.

Page 9: Systemy operacyjne

Obsługi błędu strony

9

Błąd strony jest obsługiwany przez odpowiednia procedurę obsługi wyjątku.z „punktu widzenia” procesu, który czeka na obsługę błędu strony, wykonywany jest szereg innych czynności

zachowanie stanu bieżącego procesu;

sprawdzenie poprawności adresu, który wygenerował wyjątek (jeśli adres byłnieprawidłowy to kończymy wykonanie procesu);

rozpoczęcie wykonania operacji wejścia-wyjścia, której celem jest załadowanieodpowiedniej strony do wolnej ramki w pamięci operacyjnej;

przydzielenie procesora innemu procesorowi na czas oczekiwania na zrealizowanie transmisji (ten krok niekoniecznie musi być wykonany);

obsługa przerwania od dysku twardego sygnalizującego zakończenie operacjisprowadzania strony do pamięci. Po pomyślnym odczycie strony zmodyfikować pozycję w tablicy stron (numer ramki, V=1,D=0,R=0)

oczekiwanie na przydzielenie procesowi dla którego została sprowadzona strona procesora;

wykonanie przerwanego przez błąd strony rozkazu.

Page 10: Systemy operacyjne

Wydajność stronicowania na żądanie

10

Czas dostępu do pamięci RAM: 100 ns

Czas sprowadzenia strony z dysku: 10 ms.

Błąd braku strony zwiększa czas dostępu 100 000 razy

Wniosek: Powinniśmy zadbać o to, aby błędy braku stron występowały bardzorzadko.

Efektywny czas dostępu do pamięci

p – prawdopodobieństwo wystąpienia błędu

ma – czas dostępu do pamięci

tpfh – czas obsługi błędu strony

Na czas obsługi błędu strony składają się czasy wykonania wszystkich czynności (poprzedni slajd). Czas ten jest długi, dlatego tez dąży się do jego skrócenia oraz dozminimalizowania liczby błędów strony (liczba ramek, które zostały programowi przydzielone i sprawność algorytmu wymiany).

Page 11: Systemy operacyjne

Zastępowanie stron

11

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.page replacement).

Page 12: Systemy operacyjne

Algorytmy zastępowania stron

12

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ć.

W przykładach wykorzystamy ciąg odwołań :

1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

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.

Page 13: Systemy operacyjne

Algorytm FIFO

13

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, 3, 4, 5.

Jeżeli procesowi przydzielono trzy ramki:

Jeżeli procesowi przydzielono cztery ramki:

1

1

2

1

2

3

1

2

3

4

4

2

3

1

4

1

3

2

4

1

2

5

5

1

2

1

5

1

2

2

5

1

2

5

5

1

2

1

5

1

2

2

5

1

2

3

5

3

2

4

5

3

4

5

5

3

4

1

1

2

1

2

3

1

2

3

4

1

2

3

4

1

1

2

3

4

2

1

2

3

4

5

5

2

3

4

1

5

1

3

4

2

5

1

2

4

5

5

1

2

4

1

5

1

2

4

2

5

1

2

4

3

5

1

2

3

4

4

1

2

3

5

4

5

2

3

Page 14: Systemy operacyjne

Algorytm FIFO drugiej szansy

14

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.

Niestety działanie FIFO nie gwarantuje, że strona wymieniana nie będzie w najbliższym czasie potrzebna, dlatego algorytm FIFO generuje dużą liczbę błędów stron, a dodatkowo obciążony jest anomalią Belady’ego, tzn. wraz ze wzrostem liczby ramek może wzrastać liczba błędów stron.

Page 15: Systemy operacyjne

Algorytm drugiej szansy

15

Jeżeli procesowi przydzielono trzy ramki:1

1●

2

1●

2●

3

1●

2●

3●

4

4●

2

3

1

4●

1●

3

2

4●

1●

2●

5

5●

1

2

1

5●

1●

2

2

5●

1●

2●

5

5●

1●

2●

1

5●

1●

2●

2

5●

1●

2●

3

5

3●

2

4

5

3

4●

5

5●

3

4

FIFO

1 12

123

234

341

412

125

125

125

125

125

125

253

534

534

Page 16: Systemy operacyjne

Algorytm drugiej szansy

16

Jeżeli procesowi przydzielono cztery ramki:1

1●

2

1●

2●

3

1●

2●

3●

4

1●

2●

3●

4●

1

1●

2●

3●

4●

2

1●

2●

3●

4●

5

5●

2

3

4

1

5●

1●

3

4

2

5●

1●

2●

4

5

5●

1●

2●

4

1

5●

1●

2●

4

2

5●

1●

2●

4

3

5●

1●

2●

3●

4

4●

1

2

3

5

4

5

2

3

FIFO

1 12

123

1234

1234

1234

2345

3451

4512

4512

4512

4512

5123

1234

2345

Page 17: Systemy operacyjne

Algorytm optymalny

17

Zastąp stronę, do której nie będziemy się odwoływać przez najdłuższy czas.

Algorytm teoretyczny – powoduje najmniejszą liczbę wymian stron, a zarazem najmniejszą liczbę błędów stron.

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ą.

Page 18: Systemy operacyjne

Algorytm optymalny

18

Kolejność odwołań: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.

Jeżeli procesowi przydzielono cztery ramki:1

1

2

1

2

3

1

2

3

4

1

2

3

4

1

1

2

3

4

2

1

2

3

4

5

1

2

3

5

1

1

2

3

5

2

1

2

3

5

5

1

2

3

5

1

1

2

3

5

2

1

2

3

5

3

1

2

3

5

4

4

2

3

5

5

4

2

3

5

Jeżeli procesowi przydzielono trzy ramki:1

1

2

1

2

3

1

2

3

4

1

2

4

1

1

2

4

2

1

2

4

5

1

2

5

1

1

2

5

2

1

2

5

5

1

2

5

1

1

2

5

2

1

2

5

3

3

2

5

4

3

4

5

5

3

4

5

Page 19: Systemy operacyjne

19

Algorytm LRUAlgorytm 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ść”.

LRU jest najpopularniejszym algorytmem stosowanym do wymiany stron. Efektywność jego działania jest zbliżona do efektywności algorytmu OPT. Brak anomalii Belady’ego.

Jeżeli procesowi przydzielono trzy ramki:2

1

2

3

1

2

3

4

4

2

3

1

4

1

3

2

4

1

2

5

5

1

2

1

5

1

2

2

5

1

2

5

5

1

2

1

5

1

2

2

5

1

2

3

3

1

2

4

3

4

2

5

3

4

5

Kolejka

1 12

123

234

341

412

125

251

152

125

251

512

123

234

345

1

1

Page 20: Systemy operacyjne

Algorytm LRU

20

Jeżeli procesowi przydzielono cztery ramki:

1

1

2

1

2

3

1

2

3

4

1

2

3

4

1

1

2

3

4

2

1

2

3

4

5

1

2

5

4

1

1

2

5

4

2

1

2

5

4

5

1

2

5

4

1

1

2

5

4

2

1

2

5

4

3

1

2

5

3

4

1

2

4

3

5

5

2

4

3

Kolejka

1 12

123

1234

2341

3412

4125

4251

4512

4125

4251

4512

5123

1234

2345

Page 21: Systemy operacyjne

Implementacja LRU

21

Implementacja algorytmu LRU trudna, wymaga wsparcia sprzętu. Aby określić, która ze stron była najdawniej używana stosuje się liczniki, albo stos.

Liczniki: każda pozycja tablicy stron ma wartość zegara logicznego, która jest zwiększana, przy każdym odwołaniu do strony. Problemem może być powstanie nadmiaru w zegarze logicznym.

Stos: zawiera numery stron do których się odwoływał program .Numer strony, która została ostatnio użyta jest na szczycie tego stosu, a numer strony, która najdawniej była używana jest na jego dnie. Liczba elementów na stosie jest równa liczbie ramek.

Zastosowanie stosu w implementacji algorytmu LRU pozwoliło określić klasę algorytmów nazywanych algorytmami stosowymi, które nie prowadzą do anomalii Belady’ego. Algorytm stosowy to taki algorytm dla którego zbiór stron obecnych w pamięci przy n dostępnych ramkach jest podzbiorem zbioru stron obecnych w pamięci, gdyby było dostępnych n+1 ramek.

Jeśli w systemie nie ma odpowiednich środków sprzętowych do realizacji algorytmu LRU, to można zastosować metodę, która będzie dawała rezultaty zbliżone do rezultatów tego algorytmu.

Page 22: Systemy operacyjne

Symulowanie algorytmu LRU

22

Co pewien czas, w procedurze obsługi, przerwania zegarowego system przegląda tablicę stron.

Dla strony w której R==1 (referenced) zwiększana jest zawartość licznika i R jest ustawiany na zero.

W ten sposób strony, do których występuje wiele odwołań, charakteryzują się dużą wartością licznika.

Jako ofiara wybierana jest strona o największej wartości licznika.

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.

Algorytm LFU (ang. Least Frequently Used) wybiera do wymiany te strony, do których najrzadziej się odwoływano.

Page 23: Systemy operacyjne

Zastosowanie bitów R i D

23

D (bit modyfikacji) automatycznie ustawiany na jeden, jeżeli strona zostanie zmodyfikowana.

R (bit odniesienia) automatycznie ustawiany na jeden, jeżeli nastąpi odwołanie do strony.

Możemy wyróżnić cztery stany stron, w zależności od ustawienia tych bitów w celu znalezienia kandydata do wymiany.

(0,0) – strona nie używana i nie zmieniona, idealna kandydatka do wymiany, nie trzeba jej nawet zapisywać do przestrzeni wymiany,

(0,1) – strona nie używana ostatnio, a więc może być wymieniona, ale trzeba ją zapisać do pamięci pomocniczej, bo jej stan uległ zmianie,

(1,0) – strona używana, ale nie zmieniona, może być potrzebna, ale ewentualna jej wymiana nie wymagałaby zapisu jej zawartości na dysk,

(1,1) – strona używana i zmieniona, nie wymieniać!

Wymianę stron zaczyna sie od tych, które należą do pierwszej klasy, jeśli nie matakowych, to brane są pod uwagę strony z następnych klas.

Page 24: Systemy operacyjne

Pobieranie stron do pamięci

24

Pobieranie następuje w momencie wystąpienia błędu braku strony.

Jeżeli strona jest tylko do odczytu, np. kod programu to możemy wczytać ją z pliku wykonywalnego.

– Przy starcie procesu żadna strona nie jest w pamięci.

– Duża liczba błędów strony przy starcie programu.

– Fragmenty kodu, które nie są wykorzystane, nie zostaną wczytanie do pamięci.

Wczytuj strony grupami.

Jeżeli mamy odwołanie do strony a, to prawdopodobne są odwołania do stron a+1,a+2,...

Page 25: Systemy operacyjne

Zapisywanie zmodyfikowanych stron

25

Strona zapisywana w momencie jej zastąpienia.

– Mała liczba zapisów na dysk

– Algorytm powolny: brak strony powoduje konieczność zapisania strony na dysk i wczytania strony z dysku.

Strony zapisywane periodycznie w tle.

– Proces drugoplanowy przegląda strony i zapisuje strony zmodyfikowane (D==1), do których ostatnio nie było odwołań.

– Zapisanie strony powoduje skasowanie bitu D.

– Proces drugoplanowy może zapisywać strony grupami => większa wydajność operacji dyskowych.

Page 26: Systemy operacyjne

Buforowanie stron

26

Zastępowanie stron niekoniecznie musi być przeprowadzane w momenciewystąpienia błędu braku strony.

Odzyskane strony są umieszczane na jednej z dwóch list.

– Lista stron zmodyfikowanych

– Lista stron niezmodyfikowanych – bufor stron (ang. page buffer)

Strony z listy stron zmodyfikowanych są grupami zapisywane na dysk i przenoszone do listy stron niezmodyfikowanych

W przypadku zapotrzebowania na nową ramkę przydzielana jest jedna ramka z bufora stron.

W przypadku wystąpienia błędu braku stron najpierw sprawdzamy czy ta strona jest na jednej z dwóch list.

Page 27: Systemy operacyjne

Stronicowanie na żądanie w systemie wieloprogramowym

27

na efektywność stronicowania na żądanie, oprócz algorytmu wymiany stron ma wpływ również metoda przydziału wolnych ramek procesom.

Przypadek 1: w systemie pracuje system operacyjny i proces użytkownika.Podział zbioru wolnych ramek rozdziela ramki korzystnie dla procesu użytkownika. Jeśli skończy się pula wolnych ramek, to strony procesu użytkownika lub systemu operacyjnego podlegają wymianie.Możliwe, że system przekazuje część swoich ramek na rzecz procesu użytkownika lub system utrzymuje zawsze pewna liczbę wolnych ramek, aby usprawnić proces wymiany stron.

Przypadek 2: system wielozadaniowy. Procesy rywalizują o przydział ramekMinimalna liczba ramekAby proces mógł wykonać choć jeden rozkaz, w pamięci komputera musza znajdować się jednocześnie wszystkie strony, których ten rozkaz dotyczy. Nie można tego z góry – system operacyjny zakłada najgorszy scenariusz i przydziela tyle ramek, aby mógł w nich zmieścić wszystkie strony konieczne do wykonania najbardziej złożonego rozkazu na liście rozkazów procesora.

Page 28: Systemy operacyjne

Algorytmy zastępowania ramek dla wielu procesów

28

Zastępowanie stron w systemie wieloprogramowym.

– Lokalne: strona-ofiara jest wybrana wyłącznie spośród stron procesu.

– Globalne: strona-ofiara jest wybrana spośród stron wszystkich procesów

Problem: Jak rozdzielić dostępne ramki pomiędzy procesy

Przydział równy – przydziel stałą liczbę ramek: 100 ramek, 5 procesów, przydziel po 20 ramek.

Przydział proporcjonalny – przydziel liczbę ramek proporcjonalną do rozmiaru procesu.

Metody wywodzące się z przydziału proporcjonalnego oprócz rozmiaru procesu mogąuwzględniać też inne jego właściwości, np. priorytet.

Page 29: Systemy operacyjne

Dynamiczna alokacja ramek

29

Obserwuj częstość błędów stron dla procesu.

– Jeżeli zbyt duża, przydziel mu dodatkowe ramki

– Jeżeli zbyt mała, to zabierz ramki

Page 30: Systemy operacyjne

Szamotanie

30

Szamotanie procesu (ang. thrashing) występuje, gdy zmniejsza się przydział ramek dla danego procesu poniżej określonego progu. Proces ten zaczyna intensywnie wymieniać swoje strony.

Proces zużywa więcej czasu na wymianę stron niż na wykonanie. Wykorzystanie procesora jest bardzo małe.

Page 31: Systemy operacyjne

Przyczyny szamotania

31

Występuje w systemach stosujących równocześnie planowanie długoterminowe (wsadowe) i stronicowanie na żądanie.Szamotanie jednego procesu powoduje zwiększenie obciążenia urządzenia wymiany a spadek obciążenia procesora.Planista chce zwiększyć wykorzystanie procesora – wprowadza do systemu nowe zadanie. Zadanie to zabiera część ramek pozostałym procesom i zwiększa ryzyko ich szamotania, które pojawia się lawinowo.

Aby wyeliminować szamotanie należy zadbać o to by proces zawsze dysponowałwystarczająca liczba ramek, aby pomieścić jednocześnie w pamięci wszystkieniezbędne w danej chwili do jego wykonania strony.

Taki zbiór ramek nazywa się strefą. Stref w programie może być wiele, ale liczba wolnych ramek powinna być większa niż szerokość największej strefy

Jeśli proces ulega szamotaniu, to może być całkowicie wycofany z pamięci operacyjnej do przestrzeni wymiany, do momentu aż w pamięci głównej pojawi się odpowiednia liczba ramek pozwalająca na jego prawidłowe wykonanie.

Page 32: Systemy operacyjne

Konstrukcja kodu a szybkość wykonania

32

Stronicowanie na żądanie jest teoretycznie przezroczyste dla programisty piszącego aplikacje dla użytkownika.

Dobór struktur danych oraz sposobu odwołania do nich może mieć wpływ na częstotliwość błędów stron generowanych przez jego program.

Zalecane jest stosowanie dużej liczby struktur odznaczających się dobrą lokalnością (np. stos)

Nie jest zalecane stosowanie struktur odznaczających się złą lokalnością (np. tablica z adresowaniem mieszającym - ang. hash table).

Kompilacja i linkowanie mogą mieć znaczenie dla częstości błędów stron generowanych przez proces. Można ją zmniejszyć, jeśli kompilator będzie oddzielał kod od danych

Page 33: Systemy operacyjne

Przykład optymalizacji kodu

33

int A[1024][1024];

Każdy wiersz (4KB) jest przechowany na jednej stronie.

Procesowi przydzielono jedną ramkę (4KB)

– Program 1 for (j = 0; j<1024; j++) for(i = 0; i<1024; i++) A[i][j] = 0;

Spowoduje 1024 x 1024 = 1048576 błędów strony

– Program 2 for (i = 0; i<1024; i++) for(j = 0; j<1024; j++) A[i][j] = 0;

Spowoduje 1024 błędy strony.

Należy preferować kod odwołujący się do komórek pamięci o kolejnych adresach. (również ze względu na optymalne wykorzystanie pamięci podręcznej i szyny procesora).

Page 34: Systemy operacyjne

Współpraca z urządzeniami I/O

34

Proces P1 zgłasza żądanie odczytu z urządzenia do bufora w swojej pamięci.

Czy strony, w których znajduje się bufor, są w pamięci ? Jeżeli nie, to trzeba je sprowadzić z dysku.

Gdy P1 czeka na wykonanie odczytu, wykonuje się P2

P2 zgłasza błąd strony

Problem: do zastąpienia może być wybrana strona P1, w której znajduje się bufor.

Blokowanie (ang. locking) stron.

– Strona zablokowana nie może być wybrana do zastąpienia.

– Strony powinny pozostawać zablokowane przez stosunkowo krótki czas.

Blokowanie wymaga wsparcia sprzętowego, w postaci odpowiedniegomechanizmu kontrolującego bit blokady (ang. lock) w tablicy stron.

Blokowanie stron może również być użyte do ograniczenia szamotania procesów o niskim priorytecie