ZARZADZANIE PAMIECIA.doc

(409 KB) Pobierz
Gwóźdź Konrad

Gwóźdź Konrad

Gr. EES „A”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TEMAT: ZARZĄDZANIE PAMIECIĄ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.Podstawowe zagadnienia

Podstawowym zadaniem każdego systemu operacyjnego jest wykonywanie programów. Przed wykonaniem, kod programu i jego dane muszą być umieszczone przynajmniej częściowo w pamięci operacyjnej. Zwykle w każdym systemie dochodzi do sytuacji, gdy zaczyna brakować pamięci dla wykonywanych programów lub nawet dla jednego programu. Z tego względu pamięć operacyjna należy do najważniejszych zasobów każdego systemu komputerowego, a zarządzanie tą pamięcią stanowi jedno z głównych zadań systemu operacyjnego. W tym artykule prezentujemy podstawowe zagadnienia dotyczące zarządzania pamięcią operacyjną. Opisujemy szczegółowo strategię stronicowania na zadanie zastosowaną w systemie Linux. Omawiamy strukturę pamięci wirtualnej procesu.

 

Celem zarządzania pamięcią operacyjną jest:

·         przydział pamięci fizycznej poszczególnym procesom,                        

·         odwzorowanie logicznej przestrzeni adresowej procesu na fizyczną przestrzeń adresową pamięci,                        

·         ochrona zawartości pamięci,                        

·         współdzielenie obszarów pamięci przez różne procesy.  

 

1.1 Realizacja wieloprogramowości

 

Systemy wieloprogramowe dają możliwość jednoczesnego uruchamiania wielu programów. Każdy z działających programów musi mieć przydzielony odpowiedni obszar pamięci operacyjnej. System może to zapewnić poprzez:

·         podział pamięci operacyjnej pomiędzy działające procesy,                        

·         wymianę procesów w pamięci. 

    

       Podział pamięci na określoną liczbę obszarów o stałym rozmiarze określany jest jako podział statyczny. Proces dostaje kilka obszarów, których łączny rozmiar jest równy lub przekracza rozmiar procesu. Wystarczy przechowywać jedynie numery przydzielonych obszarów, gdyż ich położenie w pamięci można łatwo obliczyć na podstawie stałego rozmiaru. 

Podział dynamiczny polega na przydzielaniu obszarów o zmiennym rozmiarze w zależności od potrzeb uruchamianych procesów. Proces przechowuje dwa parametry każdego z przydzielonych obszarów:

·         adres początkowy (bazowy) obszaru,                        

·         rozmiar (granicę) obszaru.  

                         Z podziałem pamięci wiąże się nieodłącznie problem fragmentacji pamięci. Polega on na pozostawianiu niewykorzystanych fragmentów pamięci wewnątrz lub pomiędzy przydzielonymi obszarami.

                 Fragmentacja zewnętrzna występuje poza przydzielonymi obszarami o zmiennej długości, gdy pozostałe fragmenty wolnej pamięci są zbyt małe dla innych procesów.

                 Fragmentacja wewnętrzna występuje wewnątrz przydzielonych obszarów o stałej długości, gdy rozmiar procesu jest mniejszy niż suma przydzielonych mu obszarów. Niewykorzystany pozostaje wtedy fragment ostatniego z przydzielonych obszarów.

Wymiana procesów (ang. swapping) polega na okresowym przesłaniu procesu z pamięci operacyjnej do pamięci pomocniczej, aby umożliwić sprowadzenie innego procesu z pamięci pomocniczej do zwolnionego obszaru pamięci operacyjnej.
         W systemach z podziałem pamięci wymiana umożliwia wykonywanie większej liczby procesów niż może pomieścić pamięć operacyjna. Powoduje to zwiększenie stopnia wieloprogramowości, co zwykle poprawia efektywność systemu.
          W systemach bez podziału pamięci wymiana procesów stwarza jedyną możliwość uzyskania wieloprogramowości.

 

1.2 Przestrzenie adresowe

Adres wytworzony przez procesor w wyniku wykonania rozkazu programu nosi nazwę adresu logicznego (ang. logical address). Zbiór wszystkich adresów logicznych generownych przez program tworzy logiczną przestrzeń adresową procesu.

                 Adres fizyczny wskazuje konkretną komórkę pamięci operacyjnej. Zbiór wszystkich adresów fizycznych tworzy fizyczną przestrzeń adresową.

Wiązanie adresów polega na odwzorowaniu adresów logicznych generowanych w programie na adresy fizyczne w pamięci operacyjnej. Może następować w dowolnych z poniższych etapów:

·         w czasie kompilacji, czyli tworzenia programu,                        

·         w czasie ładowania programu do pamięci,                        

·         w czasie wykonania programu.  

Wiązanie podczas kompilacji wymaga dokładnej znajomości początkowego adresu, pod którym program zostanie załadowany do pamięci. Tylko w takiej sytuacji program może posługiwać się bezpośrednio adresami bezwzględnymi w pamięci. W czasie wykonywania programu adresy logiczne i fizyczne są już takie same. Wiązanie podczas kompilacji można zastosować jedynie w prostych systemach przeznaczonych dla jednego użytkownika (np. MS-DOS).                

Jeśli początkowy adres w pamięci nie jest znany w czasie tworzenia programu, to wiązanie adresów musi być opóźnione do momentu ładowania programu do pamięci. Po załadowaniu program nie może być już przemieszczany w pamięci podczas wykonywania, ponieważ adresy logiczne i fizyczne są już takie same. Zmiana adresu początkowego pociąga za sobą konieczność ponownego załadowania całego programu, począwszy od nowego adresu w pamięci.

                 Największe możliwości swobodnego przemieszczania programu w pamięci daje wiązanie adresów w czasie wykonywania programu. Adresy logiczne muszą być jednak tłumaczone na bieżąco na adresy fizyczne, co wymaga zastosowania specjalnego sprzętu. Zajmuje się tym jednostka zarządzania pamięcią (ang. memory management unit - MMU). Złożoność tej jednostki warunkuje wybór strategii zarządzania pamięcią.

 

1.3 Zwiększenie logicznej przestrzeni adresowej procesu

 

Ograniczenie logicznej przestrzeni adresowej procesu do rozmiaru pamięci operacyjnej stanowiło przez długi czas poważne ograniczenie w systemach operacyjnych, uniemożliwiając wykonywanie dużych programów. Opracowane zostały dwie metody rozwiązania tego problemu:

·         nakładki,                        

·         pamięć wirtualna.  

 

       Stosowanie nakładek wymaga wyróżnienia w programie kilku funkcjonalnych modułów. Program nie jest w całości wprowadzany do pamięci. W pamięci przechowywane są tylko te moduły, które są stale wykorzystywane. Pozostałe moduły, zwane nakładkami, mogą być wprowadzane zamiennie w miarę potrzeb. Stosowanie nakładek odbywa się w zasadzie bez udziału systemu operacyjnego. Programista musi zadbać o dokonanie odpowiedniego podziału swojego programu na moduły oraz zawrzeć w programie fragmenty kodu odpowiedzialne za ładowanie kolejnych nakładek w odpowiednich momentach. Rozwiązanie to jest zatem bardzo uciążliwe dla programistów. W związku z tym, nie jest obecnie stosowane w systemach operacyjnych ogólnego przeznaczenia działających na typowych komputerach. Polem dla stosowania nakładek pozostają natomiast urządzenia o specyficznym przeznaczeniu dysponujące ograniczonymi zasobami pamięci, takie jak kalkulatory programowalne, komputery kieszonkowe.       

           Znacznie większe możliwości i większą wygodę oferuje technika pamięci wirtualnej. Pamięć wirtualna umożliwia wykonywanie programów, które nie znajdują się w całości w pamięci operacyjnej. Udostępnia procesom dużą ciągłą przestrzeń adresową nieograniczoną rozmiarem fizycznej pamięci operacyjnej. Separuje w ten sposób pamięć logiczną procesu od pamięci fizycznej. System operacyjny zajmuje się odwzorowaniem pamięci wirtualnej używanej przez procesy, częściowo na pamięć operacyjną a częściowo na pamięć pomocniczą.

Ponieważ procesy nie muszą znajdować się w całości w pamięci operacyjnej, każdy z nich zajmuje mniejszy obszar tej pamięci. Dzięki temu w pamięci można umieścić więcej procesów, zwiększając stopień wieloprogramowości. Zmniejsza się liczba operacji wejścia-wyjścia związanych z ładowaniem lub wymianą procesów. W efekcie wzrasta przepustowość systemu.

 

1.4 Strategie zarządzania pamięcią

Systemy bez pamięci wirtualnej wykorzystują jedną ze strategii zarządzania pamięcią wymienionych w tablicy rys.1:

·         przydział ciągły pojedynczego obszaru,                        

·         przydział ciągły wielu obszarów,...

Zgłoś jeśli naruszono regulamin