ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ

Transkrypt

ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ
ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ
Łukasz Redmer
Opracowane dnia 20.07.2012
Wstęp
Pamięć operacyjna jest to pamięć, która ma za zadanie przechowywać dla procesora
aktualnie uruchomiony program (bądź jego część) wraz z jego danymi, fragmenty systemu
oraz wszystkie inne procesy. Możemy ją traktować jak tablicę słów, a pozycję danego słowa
w tej tablicy nazywamy adresem. Pamięć owa jest pamięcią ulotną tzn. w przypadku
wyłączenia komputera informacje w niej zawarte są utracone, dlatego co jakiś czas zaleca się
zapisywać wykonywaną pracę na pamięci zewnętrznej.
Zarządzanie pamięcią operacyjną
Zarządzanie pamięcią operacyjną jest jednym z głównych zadań systemu operacyjnego a
mianowicie odpowiada on za przydział pamięci poszczególnym procesom. Zanim przejdę do
opisywania owego zadania wyjaśnię co to jest pamięć fizyczna i logiczna. Pamięć fizyczna
jest to obraz całej pamięci jaką widzi system operacyjny, a odwoływanie do niej następuje
poprzez adresy fizyczne. Pamięć logiczna jest to natomiast obraz pamięci jaką widzi dany
proces, a odwołanie do niej następuje poprzez adresy logiczne. Jednakże tutaj należy dodać,
iż pamięć logiczna jest realizowana przez mechanizm MMU (ang. memory management unit),
którego zadaniem jest sprawdzanie czy używane przez proces adresy logiczne są poprawnymi
adresami, tzn. czy odnoszą się do pamięci która została przydzielona temu procesowi, gdy jest
inaczej zostaje zgłoszony błąd. Poniższy rysunek Rys 1. przedstawia schemat budowy MMU
dla przydziału pamięci ciągłego o którym napiszę niżej.
Rys 1.
Źródło: http://www.mimuw.edu.pl/~kubica/sop/wyklad7/wyklad.html
Jak widać na rysunku MMU składa się z dwóch programowalnych rejestrów. Z rejestru
przemieszczenia który zawiera początkowy adres fizyczny przydzielonego obszaru oraz z
rejestr granicznego który zawiera wielkość przydzielonego obszaru. Jeżeli adres logiczny jest
większy od wielkości przydzielonego obszaru pamięci, to zostaje zgłoszony błąd. Natomiast
gdy adres logiczny jest mniejszy od wielkości przydzielonego obszaru pamięci, to adres
fizyczny jest sumą adresu logicznego i adresu fizycznego początku przydzielonego obszaru.
Teraz przejdę do głównego zadania w zarządzaniu pamięcią operacyjną a mianowicie
przydziału pamięci. Wyróżniamy trzy główne metody przydziału miejsca w pamięci:
przydział ciągły, segmentacja i stronicowanie. Ja opiszę tylko przydział ciągły który jest
najprostszym z wyżej wymienionych. Przydziela on każdemu procesowi jeden integralny
fragment pamięci fizycznej. Jednakże w systemie w tym samym czasie wykonywanych jest
zazwyczaj wiele procesów, dlatego pamięć fizyczna podzielona jest na wolne i zajęte obszary,
co widać na poniższym rysunku.
Rys 2.
Źródło: http://www.mimuw.edu.pl/~kubica/sop/wyklad7/wyklad.html
W metodzie tej każdy proces jest alokowany liniowo a adresy logiczne maja wartość od zera
do wielkości przydzielonego obszaru minus jeden. Kiedy nadchodzi nowy proces należy mu
przydzielić wystarczający obszar wolnej pamięci, aby mógł się zmieścić. W przydziale
ciągłym wyróżniamy trzy strategie przydzielania pamięci: dopasowanie pierwsze, najlepsze
oraz najgorsze. Postaram się opisać pokrótce każdy z nich. Zanim przejdę do opisywania
poszczególnych strategii wyjaśnię co to jest fragmentacja, ponieważ jest to zjawisko
powiązane z przydziałem pamięci.
Fragmentacja jest zjawiskiem niekorzystnym, występuje podczas przydziału pamięci jak i nie
tylko. Wyróżniamy dwa jej rodzaje: fragmentację wewnętrzną i zewnętrzną. Pierwsza z
nich polega na tym, iż obszar pamięci dla danej aplikacji jest przydzielany z zaokrągleniem w
górę przez co nadwyżka nie jest używana przez aplikację i zostaje niewykorzystana.
Natomiast fragmentacja zewnętrzna polega na tym, że obszar pamięci jest przydzielany i
zwalniany na bieżąco podczas działania programu, przez co powstają obszary wolnej pamięci
między zajętą pamięcią. Niektóre systemy operacyjne rozwiązują problem związany z
fragmentacja poprzez stronicowanie które pozwala na przydzielenie procesowi kilku
obszarów pamięci.
Pierwsze dopasowanie (First-Fit) polega na znalezieniu pierwszego dostępnego obszaru o
wielkości wystarczającej dla danego bloku programu, gdy taki się znajdzie kończone jest
poszukiwanie. Jest to najprostsza strategia przydzielania pamięci i charakteryzuje się dużą
szybkością.
Najlepsze dopasowanie (Best-Fit) polega na przeszukaniu wszystkich dostępnych obszarów
i znalezieniu najbardziej odpowiadającego do wielkości bloku programu. Strategia ta
charakteryzuje się najmniejszą fragmentacją zewnętrzną co jest oczywiście dużym plusem
jednak jest dużo wolniejsza niż poprzednia.
Natomiast najgorsze dopasowanie (Worst-Fit) polega na przeszukaniu wszystkich
dostępnych obszarów oraz wybraniu największego z nich, celem zastosowania tej strategii
jest szansa, że gdy zostanie przydzielona pamięć z tego obszaru danemu procesowi to
pozostały wolny obszar będzie na tyle duży, iż będzie można go jeszcze wykorzystać dla
innego procesu. Aby mniej więcej to zobrazować poniżej zamieszczam rysunek Rys 3. na
którym pokazane jest przydzielenie obszaru dla procesu P6 w każdej z tych strategii.
Rys 3.
Źródło: http://www.mimuw.edu.pl/~kubica/sop/wyklad7/wyklad.html
Bibliografia
 http://kompy.republika.pl/pamieci.html
 http://www.mimuw.edu.pl/~kubica/sop/wyklad7/wyklad.html

Podobne dokumenty