background image

1

Zarządzanie pamięcią 

wewnętrzną. Pamięć 

wirtualna

Systemy operacyjne 

wykład 6

background image

2

Podstawowe funkcje 

dotyczące zarządzania 

pamięcią wewnętrzną

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. 

background image

3

Sposoby podziału pamięci

 

1. Pamięć przydzielona w całości dla 

jednego zadania (procesu),

2. Przydzielanie wielu obszarów (stref),
3. Stronicowanie,
4. Segmentacja,
5. Segmentacja stronicowana.

background image

4

Przydzielanie wielu obszarów 

(stref)

 

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

background image

5

• Rysunek – przydzielanie pamięci

background image

6

Przydzielanie wielu obszarów 

(stref) cd.

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

background image

7

Prostą przestrzeń adresową 

zastosowano w procesorze Motorola 
68000. 

background image

8

Stronicowanie

• 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 (np. od 512 do 2048 słów na stronę).

background image

9

Stronicowanie cd.

Zaleta: 
• Stronicowanie eliminuje zewnętrzną 

fragmentację. Pozostaje jedynie 

fragmentacja wewnętrzna

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

background image

10

Stronicowanie cd.

Stronicowanie. Model stronicowania pamięci logicznej i fizycznej.

[Źródło: Silberschatz, Peterson, Galvin "Podstawy systemów operacyjnych"]

background image

11

Stronicowanie cd.

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

background image

12

Stronicowanie cd.

Stronicowanie. Dzielenie kodu w środowisku stronicowanym
[Źródło: Silberschatz, Peterson, Galvin "Podstawy systemów operacyjnych"]

background image

13

Segmentacja

 

 

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

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

 

background image

14

Podprog
-ram
Segmen
t 0

Program 
główny

Segment 
2

Tablica 
symbol
i

Segme
nt 4

Proce-
dura

Seg-
ment

 

1

Stos
Segment

 

3

Pamięć fizyczna

Tablica 
segmentów

Pamięć 
fizyczna

Pamięć 
logiczna

Przykład segmentacji

[Źródło: Silberschatz, Peterson, Galvin "Podstawy systemów operacyjnych"]

background image

15

Segmentacja cd.

Zalety: 
Powiązanie ochrony pamięci z jej 

segmentami. Pozwala to np. segmenty 
rozkazów zdefiniować jako przeznaczone 
tylko do czytania lub wykonywania,

dzielenie kodu i danych. 
Wady: 

Zewnętrzna fragmentacja

 pamięci. 

background image

16

Przykład

Segmentację pamięci zastosowano już 

w procesorze Intel 8086.

Programy w tym środowisku były 

zwykle dzielone na segmenty kodu 
(CODE), danych (DATA) i stosu 
(STACK).

background image

17

Segmentacja 

stronicowana

 

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. 

background image

18

PAMIĘĆ WIRTUALNA

background image

19

Pamięć wirtualna

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

W wielu przypadkach programy nie wykorzystują w całości 

swojego kodu. Często zawierają fragmenty, które mogą być 

niezmiernie rzadko używane. 

Sposoby implementacji pamięci wirtualnej: 

1. Stronicowanie na żądanie 
2. Segmentacja na żądanie

 

background image

20

Stronicowanie na 

żądanie

 

• 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). 

• 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 S.O. S.O. musi wczytać żądaną stronę do pamięci i 

wznowić proces tak, jakby ta strona zawsze była w pamięci. 

• Stronicowanie powinno być całkowicie przezroczyste dla 

procesu użytkownika. 

background image

21

Stronicowanie na 

żądanie cd.

• 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). 

background image

22

Stronicowanie na 

żądanie cd.

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

background image

23

Stronicowanie na 

żądanie cd.

Aby zrealizować stronicowanie na 

żądanie trzeba opracować 

- algorytm przydziału ramek, 
- algorytm zastępowania stron. 

background image

24

Stronicowanie na 

żądanie cd.

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 te stronę, która najdłużej nie będzie używana. Wymaga się wiedzy 

o przyszłych odniesieniach. Trudny do realizacji. 

• 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żda 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. 

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. 

background image

25

Stronicowanie na 

żądanie cd.

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. 

Algorytmy przydziału: 
• przydział równy, 
• przydział proporcjonalny w zależności od rozmiaru, 
• przydział proporcjonalny w zależności od 

priorytetu procesu. 

background image

26

Stronicowanie na 

żądanie cd.

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. 

background image

27

Stronicowanie na 

żądanie cd.

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ększa przepustowość daje zastępowanie 

globalne. 

- 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(np. od 

512 do 16384 bajtów).  

background image

28

Segmentacja na żądanie

 

• 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). 

background image

29

Segmentacja na żądanie 

cd.

 

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. 

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. (Np. 

Intel 80286 operuje segmentami, nie ma możliwości 

stronicowania) .


Document Outline