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