Download as pdf or txt
Download as pdf or txt
You are on page 1of 53

wykład 6

1
Adres „wytworzony” przez procesor jest
adresem logicznym, a umieszczony w rejestrze
adresowym jednostki pamięci jest adresem
fizycznym.

2
Schemat wiązania adresów podczas
wykonywania rozkazów powoduje że adresy
logiczne i fizyczne są różne.
 Zbiór wszystkich adresów logicznych
(wirtualnych) generowanych przez program
to logiczna przestrzeń adresowa.
 Zbiór wszystkich adresów fizycznych
odpowiadających tym adresom logicznym
jest fizyczną przestrzenią adresową.
3
 Odwzorowywanie adresów logicznych na
fizyczne, odbywające się podczas działania
programu, jest dokonywane przez urządzenie
sprzętowe – jednostkę zarządzania pamięcią
MMU (memory-management unit).
 Program użytkownika nigdy nie ma do
czynienia z rzeczywistymi adresami
fizycznymi.

4
Podstawowe funkcje dotyczące zarządzania
pamięcią wewnętrzną (RAM) realizowane przez
S.O.:
1. Śledzenie stanu pamięci,
2. Określenie strategii podziału pamięci,
3. Metody przydziału pamięci,
4. Metody i strategie zwalniania pamięci.

5
1. Pamięć przydzielona w całości dla jednego
zadania (procesu),
2. Przydzielanie wielu obszarów (stref),
3. Stronicowanie,
4. Segmentacja,
5. Segmentacja stronicowana.

6
 Zarządzanie pamięcią w systemie wieloprogramowym
polega na przydzielaniu pamięci rozmaitym procesom
pozostającym w kolejce wejściowej (w oczekiwaniu na
wprowadzenie do pamięci).
 Na początku pamięć stanowi jeden wielki blok - dziurę.
Potrzebującemu procesowi przydziela się odpowiednią
ilość pamięci z dziury. Kolejnym procesom - kolejne ilości.
W efekcie powstaje zbiór dziur o różnych wymiarach,
rozproszonych po całej pamięci. Gdy proces nadchodzi i
zamawia pamięć, wtedy przegląda się ten zbiór w
poszukiwaniu wystarczająco dużej dziury. (Przyległe
dziury są łączone w jedną większą).

7
P5

8
9
Problem - jak na podstawie listy wolnych dziur spełnić zamówienie na
obszar o danym rozmiarze?
Przegląda się zbiór dziur, aby określić, która najlepiej nadaje się do
przydziału.
Strategie wyboru dziury:
 pierwsza pasująca (pierwsza o wystarczającym rozmiarze)- jest to
najszybszy przydział,
 najlepiej pasująca (najmniejsza z pasujących),
 najgorzej pasująca (największa).
Dwa pierwsze przydziały nie są najlepsze pod względem wykorzystania
pamięci.
Opisany algorytm obarczony jest zewnętrzną fragmentacją (nie ma
odpowiednio dużych, spójnych obszarów w pamięci).

10
 Pamięć fizyczna podzielona jest na bloki o stałej
długości, zwane ramkami. Pamięć logiczna jest
podzielona na bloki takiego samego rozmiaru,
zwane stronami. Gdy ma nastąpić wykonanie
procesu, wówczas jego strony z pamięci
pomocniczej są wprowadzane w dowolne
ramki.
 Każdy adres wygenerowany przez procesor
dzieli się na dwie części: numer strony i
odległość na stronie. Numer strony jest używany
jako indeks w tablicy stron. Rozmiar strony jest
określony przez sprzęt.
12
Tablica stron najczęściej jest przydzielana do
każdego procesu. W bloku kontrolnym procesu
(obok zawartości innych rejestrów)
przechowuje się wskaźnik do tablicy stron.

13
Stronicowanie. Model stronicowania pamięci logicznej i fizycznej.
[Źródło: Silberschatz, Peterson, Galvin "Podstawy systemów operacyjnych"]

14
Zaleta:
 Stronicowanie eliminuje zewnętrzną
fragmentację.
Wada:
 Pozostaje fragmentacja wewnętrzna.

15
Zastosowanie:

 Strony dzielone - umożliwiają współdzielenie


stron kodu programu. (Gdy np. kilku
użytkowników korzysta z tego samego
edytora tekstu, w pamięci jest
przechowywana jedna jego kopia).

16
Stronicowanie. Dzielenie kodu w środowisku stronicowanym
[Źródło: Silberschatz, Peterson, Galvin "Podstawy systemów operacyjnych"]
17
 Segmentacja jest schematem zarządzania
pamięcią, w którym przestrzeń adresów
logicznych jest zbiorem segmentów. Każdy
segment ma nazwę i długość. Adresy
określają nazwę segmentu i odległość
wewnątrz segmentu.

18
 Segmentacja jest blisko związana z modelem
zarządzania obszarami pamięci. Różnica
polega na tym, że program może składać się
z kilku segmentów.

19
Przykład segmentacji
[Źródło: Silberschatz, Peterson, Galvin "Podstawy systemów operacyjnych”]operacyjnych"]

Stos
Segment 3
Podprogram
Segment 0

Tablica
Tablica symboli segmentów

Procedura Segment 4

Segment 1

Program główny Pamięć fizyczna

Segment 2 Pamięć Pamięć fizyczna


logiczna

20
21
Zalety:
 Powiązanie ochrony pamięci z jej
segmentami.
 Pozwala to np. segmenty rozkazów
zdefiniować jako przeznaczone tylko do
czytania lub wykonywania i dzielić kod i dane.
Wady:
 Zewnętrzna fragmentacja pamięci.

22
 Stronicowanie usuwa zewnętrzną
fragmentację i upraszcza problem przydziału
- każda pusta ramka może być użyta na
potrzebną stronę.
 Stronicuje się segmenty.
 Każdy segment ma osobną tablicę stron.

24
25
Poprzednio omówione strategie zarządzania
pamięcią miały na celu utrzymanie wielu
procesów w pamięci operacyjnej i umożliwienie
wieloprogramowości. Każda z tych strategii
wymagała, aby w pamięci znajdował się cały
proces przed jego wykonaniem.

26
Pamięć wirtualna jest techniką, która
umożliwia wykonywanie procesów, pomimo że
nie są one w całości przechowywane w pamięci
operacyjnej. Zatem np. programy mogą być
większe niż pamięć fizyczna.

27
 W wielu przypadkach programy nie
wykorzystują w całości swojego kodu. Często
zawierają fragmenty, które mogą być
niezmiernie rzadko używane.

28
Sposoby implementacji pamięci wirtualnej:
1. Stronicowanie na żądanie
2. Segmentacja na żądanie

29
 Procesy rezydują w pamięci pomocniczej (na
dysku), natomiast proces do wykonania jest
wprowadzany do pamięci operacyjnej.
 Proces jest traktowany jako ciąg stron.
Program zmieniania stron sprowadza do
pamięci tylko strony niezbędne. Takie
rozwiązanie wymaga środków sprzętowych
(rozszerza się tablicę stron).

30
 Dopóki proces działa na stronach pozostających
w pamięci, jego wykonanie przebiega normalnie.
Gdy proces chce sięgnąć po informacje na
stronie nie sprowadzonej to powstaje pułapka
systemowa nazywana błędem strony.
 Sprzęt stronicujący spowoduje wtedy awaryjne
przerwanie w SO. SO musi wczytać żądaną
stronę do pamięci i wznowić proces tak, jakby ta
strona zawsze była w pamięci.
31
 Stronicowanie powinno być całkowicie
przezroczyste dla procesu użytkownika.

32
 Problem:
Co się stanie jeśli zajdzie potrzeba załadowania
strony, a na liście wolnych ramek nie ma ani jednej
wolnej ramki?
Stosuje się wtedy zastępowanie stron.
 Zastępowanie stron
Jeśli wszystkie ramki są zajęte, znajduje się taką,
która nie jest bieżąco używana i zwalnia się ją
(zapisuje się jej zawartość na dysku i uaktualnia
tablicę stron).

33
Procedura obsługi błędów strony:
1. Odnalezienie lokalizacji potrzebnej strony na dysku,
2. Odnalezienie wolnej ramki:
 gdy istnieje wolna - zostaje użyta,
 gdy nie ma wolnej ramki stosuje się algorytm zastępowania
stron w celu wytypowania ramki-ofiary.
 stronę - ofiarę zapisuje się na dysku, zmieniając odpowiednie
tablice stron i ramek.
3. Do zwolnionej (ew. wolnej) właśnie ramki wczytuje się
potrzebną stronę i znowu zmienia tablice stron i ramek
4. Wznawia się działanie procesu.

34
Aby zrealizować stronicowanie na żądanie
trzeba opracować:
 algorytm przydziału ramek,
 algorytm zastępowania stron.

35
Algorytmy zastępowania stron
Przy wyborze tego algorytmu należy kierować się
tym, aby częstość błędów strony była najmniejsza.
 Algorytm FIFO - każda strona ma zapisany czas
wprowadzenia lub określone miejsce w kolejce
FIFO. Do zastąpienia wybiera się najstarszą.
 Algorytm optymalny - idealne, właściwe nie
stosowane w praktyce - zastępuje tę stronę,
która najdłużej nie będzie używana. Wymaga się
wiedzy o przyszłych odniesieniach. Trudny do
realizacji.
36
 Algorytm LRU - zastępowanie najdawniej używanych
stron (least recently used) - zastępowana jest strona,
która nie była używana od najdłuższego czasu. Z
każdą stroną kojarzony jest czas jej ostatniego użycia.
Jest to realizowane przez dodanie do każdej pozycji w
tablicy stron rejestru czasu użycia, a do procesora
dodawany jest zegar logiczny lub licznik. Wskazania
zegara są zwiększane za każdym odniesieniem do
pamięci. Zastępowana jest strona z najmniejszą
wartością odwołań. Żadnej implementacji metody
LRU nie można wykonać bez odpowiedniego
wyposażenia sprzętowego.
37
Algorytmy przybliżające metodę LRU -
stosowane w przypadku braku odpowiedniego
sprzętu do realizacji LRU:
 algorytm LFU - zastępowanie najmniej
używanej strony,
 algorytm MFU - zastępowanie strony
najczęściej używanej.

38
Przydział ramek
Problem do rozwiązania : jak rozdzielać stałą
ilość wolnej pamięci między różne procesy?
Minimalna liczba ramek przypadających na
proces jest zdefiniowana przez architekturę
logiczną komputera, natomiast maksymalna
ich liczba wynika z dostępnej pamięci fizycznej.

39
Algorytmy przydziału ramek:
 przydział równy,
 przydział proporcjonalny w zależności od
rozmiaru,
 przydział proporcjonalny w zależności od
priorytetu procesu.

40
Problemy:
 Gdy proces otrzymuje bardzo małą ilość ramek -
poniżej minimum wymaganego przez
architekturę komputera wtedy wystąpi szybko
brak strony, wtedy trzeba będzie zastąpić jakąś
stronę, która za chwilę okaże się potrzebna.
 Dużą aktywność stronicowania określa się
terminem szamotania. Proces szamoce się gdy
spędza więcej czasu na stronicowaniu niż na
wykonaniu.
41
Zagadnienia związane ze stronicowaniem:

 globalny a lokalny przydział ramek,


 stronicowanie wstępne,
 rozmiar strony.

42
Zagadnienia związane ze stronicowaniem:
 globalny a lokalny przydział ramek - zastępowanie
w obrębie ramek przydzielonych do jednego procesu
lub wśród wszystkich ramek.
Przy zastępowaniu lokalnym - liczba ramek
przydzielona do procesu nie zmienia się. Przy
zastępowaniu globalnym proces nie może kontrolować
własnej częstotliwości występowania błędów stron. Jego
wykonanie zależy ponadto od tego jak zachowują się
inne procesy. Z reguły większą przepustowość daje
zastępowanie globalne.
43
Zagadnienia związane ze stronicowaniem:
 stronicowanie wstępne - polega na
jednorazowym wprowadzeniu do pamięci
wszystkich stron procesu, o których
wiadomo, że będą potrzebne.
 rozmiar strony - ustalany przy projektowaniu
maszyny.

44
Wykonywany proces nie musi mieć w pamięci
wszystkich swoich segmentów.
Gdy proces odniesie się do segmentu zawierającego kod
lub dane - sprzęt sprawdzi bit poprawności (w
deskryptorze segmentu zawierającym informację o
długości danego segmentu, trybie jego ochrony i
umiejscowieniu) wskazujący czy żądany segment
znajduje się w pamięci czy nie.
Gdy nie ma, to wywołuje pułapkę systemową (błąd
segmentu). (Wtedy sprowadzany jest żądany segment
(na miejsce innego wysłanego do pamięci), a przerwany
rozkaz jest kontynuowany).
45
Problem: Który segment ma być zastąpiony
przy błędzie segmentu?
Można np. odczytywać z deskryptora
segmentu bit udostępnienia, który sygnalizuje,
że dany segment był już używany. Korzystając z
tych bitów ustawia się kolejkę segmentów i
stąd bierze segmenty do zastąpienia.

46
Segmentacja na żądanie nie jest optymalnym
środkiem na użytkowanie zasobów systemu
komputerowego, ale jest rozsądnym
kompromisem na rzecz funkcjonalności w
sytuacji ograniczeń sprzętowych,
uniemożliwiających stronicowanie na żądanie.

47
49
 Ten S.O. realizował pamięć wirtualną przy
użyciu stronicowania na żądanie z
grupowaniem. Polega to na obsługiwaniu
błędów stron przez sprowadzanie nie tylko
brakującej strony ale i pewnej liczby stron z
jej otoczenia.

50
 Po utworzeniu procesu przypisuje się mu
minimalną liczbę stron w pamięci,
gwarantowaną procesowi oraz maksymalną
czyli ile stron można maksymalnie przydzielić
procesowi w pamięci.
 Stosowana jest lokalna polityka
zastępowania stron.

51
 Algorytm stosowany przy wyznaczaniu
strony do usunięcia ze zbioru roboczego
zależy od typu procesora, na którym działa
dany SO.

52
 Proces działający w czasie rzeczywistym
powinien niezwłocznie otrzymywać procesor
i działać aż do zakończenia z minimalnymi
opóźnieniami.

53
 Pamięć wirtualna zupełnie nie pasuje do
obliczeń w czasie rzeczywistym, ponieważ
może wprowadzać nieoczekiwane
długotrwałe przestoje w wykonywaniu
procesu w trakcie sprowadzania brakujących
stron. Dlatego systemy czasu rzeczywistego
prawie nigdy nie mają pamięci wirtualnej.

54
Do rozważenia
- wykorzystanie stron dzielonych,
- jak można unikać zewnętrznej fragmentacji.

55
 Źródła m.in.
http://techformator.pl/ustawienia-pamieci-
wirtualnej-w-windows/

56

You might also like