Transcript Document
Systemy operacyjne
Wykład 10 - ostatni
Pamięć wirtualna
dr inż. Wojciech Bieniecki
Instytut Nauk Ekonomicznych
i Informatyki
http://wbieniec.kis.p.lodz.pl/pwsz
1
Egzamin – 27.06.2014
Warunkiem uczestnictwa w tym terminie egzaminu
jest zaliczenie laboratorium na dzień 27.06
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
2
Metody oszczędzania pamięci
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 jest
spełniony.
Wada
Programista aplikacji musiałby utworzyć odpowiedni system gospodarowania
pamięcią.
Rozwiązanie
Zarządzanie pamięcią przez system operacyjny.
3
Zasada lokalności programu
Zasada lokalności przestrzennej
Jeś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 czasowej
Jeś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.
4
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.
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.
5
Implementacja pamięci wirtualnej
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.
6
Format pozycji tablicy stron
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 tym
miejscu przechować numer bloku dyskowego, w którym zapisano stronę.
7
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.
8
Obsługi błędu strony
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ładowanie
odpowiedniej 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 operacji
sprowadzania 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.
9
Wydajność stronicowania na żądanie
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 bardzo
rzadko.
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 do
zminimalizowania liczby błędów strony (liczba ramek, które zostały programowi
10
przydzielone i sprawność algorytmu wymiany).
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.
11
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, 3, 4, 5
12
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, 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
13
Algorytm FIFO drugiej szansy
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.
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.
14
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
15
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
16
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ą.
17
Algorytm optymalny
Kolejność odwołań: 1, 2, 3, 4, 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
18
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ść”.
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:
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
19
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
20
Implementacja LRU
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.
21
Symulowanie algorytmu LRU
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.
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 LFU (ang. Least Frequently Used) wybiera do wymiany te strony, do
których najrzadziej się odwoływano.
22
Zastosowanie bitów R i D
R (bit odniesienia) automatycznie ustawiany na jeden, jeżeli nastąpi odwołanie do
strony.
D (bit modyfikacji) automatycznie ustawiany na jeden, jeżeli strona zostanie
zmodyfikowana.
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 ma
23
takowych, to brane są pod uwagę strony z następnych klas.
Pobieranie stron do pamięci
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,...
24
Zapisywanie zmodyfikowanych
stron
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.
25
Buforowanie stron
Zastępowanie stron niekoniecznie musi być przeprowadzane w momencie
wystą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.
26
Stronicowanie na żądanie w systemie
wieloprogramowym
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ł ramek
Minimalna liczba ramek
Aby 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.
27
Algorytmy zastępowania ramek dla
wielu procesów
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.
28
Dynamiczna alokacja ramek
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
29
Szamotanie
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.
30
Przyczyny szamotania
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 wszystkie
niezbę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.
31
Konstrukcja kodu a szybkość wykonania
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
32
Przykład optymalizacji kodu
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
33
procesora).
Współpraca z urządzeniami I/O
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 odpowiedniego
mechanizmu kontrolującego bit blokady (ang. lock) w tablicy stron.
Blokowanie stron może również być użyte do ograniczenia szamotania procesów o
34
niskim priorytecie