Zarządzanie pamięcią w systemie operacyjnym: ciągłe, zamiana, fragmentacja

Co to jest zarządzanie pamięcią?

Zarządzanie pamięcią to proces kontrolowania i koordynowania pamięci komputera, przypisywania części zwanych blokami do różnych uruchomionych programów w celu optymalizacji ogólnej wydajności systemu.

Jest to najważniejsza funkcja systemu operacyjnego, która zarządza pamięcią główną. Pomaga procesom poruszać się tam i z powrotem między pamięcią główną a dyskiem wykonawczym. Pomaga systemowi operacyjnemu śledzić każdą lokalizację pamięci, niezależnie od tego, czy jest ona przydzielona do jakiegoś procesu, czy pozostaje wolna.

Dlaczego warto korzystać z zarządzania pamięcią?

Oto powody, dla których warto korzystać z zarządzania pamięcią:

  • Pozwala sprawdzić, ile pamięci należy przydzielić procesom decydującym, który procesor ma otrzymać pamięć w jakim czasie.
  • Śledzi każde zwolnienie lub nieprzydzielenie zapasów. Według niego zaktualizuje status.
  • Przydziela miejsce na procedury aplikacyjne.
  • Upewnij się także, że aplikacje te nie kolidują ze sobą.
  • Pomaga chronić różne procesy przed sobą
  • Umieszcza programy w pamięci, dzięki czemu pamięć jest wykorzystywana w pełnym zakresie.

Techniki zarządzania pamięcią

Oto kilka najważniejszych technik zarządzania pamięcią:

Pojedyncza ciągła alokacja

Jest to najłatwiejsza technika zarządzania pamięcią. W tej metodzie wszystkie typy pamięci komputera, z wyjątkiem małej części zarezerwowanej dla systemu operacyjnego, są dostępne dla jednej aplikacji. Na przykład system operacyjny MS-DOS przydziela pamięć w ten sposób. System wbudowany również działa na pojedynczej aplikacji.

Podzielona alokacja

Dzieli pamięć podstawową na różne partycje pamięci, które są przeważnie sąsiadującymi obszarami pamięci. Każda partycja przechowuje wszystkie informacje dotyczące określonego zadania lub zadania. Ta metoda polega na przydzieleniu partycji do zadania w momencie jego rozpoczęcia i nieprzydzieleniu po jego zakończeniu.

Zarządzanie pamięcią stronicowaną

Metoda ta dzieli pamięć główną komputera na jednostki o stałym rozmiarze, zwane ramkami stron. Ta sprzętowa jednostka zarządzająca pamięcią mapuje strony w ramki, które powinny być przydzielane na podstawie stron.

Segmentowane zarządzanie pamięcią

Pamięć segmentowana to jedyna metoda zarządzania pamięcią, która nie zapewnia programowi użytkownika liniowej i ciągłej przestrzeni adresowej.

Segmenty wymagają wsparcia sprzętowego w postaci tabeli segmentów. Zawiera adres fizyczny sekcji w pamięci, rozmiar i inne dane, takie jak bity i stan ochrony dostępu.

Co to jest zamiana?

Swapping to metoda, w której proces powinien zostać tymczasowo zamieniony z pamięci głównej na magazyn zapasowy. Później zostanie on przeniesiony z powrotem do pamięci w celu kontynuacji wykonywania.

Magazyn kopii zapasowych to dysk twardy lub inne dodatkowe urządzenie pamięci masowej, które powinno być wystarczająco duże, aby pomieścić kopie wszystkich obrazów pamięci dla wszystkich użytkowników. Może także oferować bezpośredni dostęp do tych obrazów pamięci.

Zamień

Korzyści z wymiany

Oto główne korzyści/zalety wymiany:

  • Oferuje wyższy stopień wieloprogramowości.
  • Umożliwia dynamiczną relokację. Na przykład, jeśli używane jest wiązanie adresów w czasie wykonywania, wówczas procesy można zamieniać w różnych lokalizacjach. W przeciwnym razie w przypadku powiązań czasu kompilacji i ładowania procesy powinny zostać przeniesione do tej samej lokalizacji.
  • Pomaga uzyskać lepsze wykorzystanie pamięci.
  • Minimalne straty czasu procesora po zakończeniu, dzięki czemu można je łatwo zastosować w metodzie planowania opartej na priorytetach w celu poprawy jej wydajności.

Co to jest alokacja pamięci?

Alokacja pamięci to proces, w wyniku którego programom komputerowym przydzielana jest pamięć lub miejsce.

Tutaj pamięć główna jest podzielona na dwa typy partycji

  1. Słaba pamięć - Operasystem tingu tkwi w tego typu pamięci.
  2. Wysoka pamięć– Procesy użytkownika są przechowywane w dużej pamięci.

Alokacja partycji

Pamięć jest podzielona na różne bloki lub partycje. Każdy proces jest przydzielany zgodnie z wymaganiami. Alokacja partycji to idealna metoda uniknięcia wewnętrznej fragmentacji.

Poniżej znajdują się różne schematy alokacji partycji:

  • Pierwsze dopasowanie: W dopasowaniu tego typu przydzielana jest partycja, która jest pierwszym wystarczającym blokiem od początku pamięci głównej.
  • Najlepsze dopasowanie: Przydziela proces do partycji, która jest pierwszą najmniejszą partycją wśród wolnych partycji.
  • Najgorsze dopasowanie: Przydziela proces do partycja, która jest największą, swobodnie dostępną partycją w pamięci głównej.
  • Następne dopasowanie: Jest to w większości podobne do pierwszego Fit, ale to Fit wyszukuje pierwszą wystarczającą partycję z ostatniego punktu alokacji.

Co to jest stronicowanie?

Stronicowanie to mechanizm przechowywania, który umożliwia systemowi operacyjnemu pobieranie procesów z pamięci dodatkowej do pamięci głównej w postaci stron. W metodzie stronicowania pamięć główna jest dzielona na małe bloki pamięci fizycznej o stałym rozmiarze, zwane ramkami. Rozmiar ramki powinien być taki sam jak rozmiar strony, aby maksymalnie wykorzystać pamięć główną i uniknąć fragmentacji zewnętrznej. Stronicowanie służy do szybszego dostępu do danych i jest to koncepcja logiczna.

Co to jest fragmentacja?

Procesy są przechowywane i usuwane z pamięci, co tworzy wolną przestrzeń pamięci, która jest zbyt mała, aby mogła być wykorzystana przez inne procesy.

Czasem proces, który nie jest w stanie przydzielić bloków pamięci ze względu na mały rozmiar, a bloki pamięci zawsze pozostają niewykorzystane, nazywa się fragmentacją. Tego typu problemy występują w systemie dynamicznej alokacji pamięci, gdy wolne bloki są dość małe i nie są w stanie spełnić żadnego żądania.

Dwa rodzaje metod fragmentacji to:

  1. Fragmentacja zewnętrzna
  2. Fragmentacja wewnętrzna
  • Fragmentację zewnętrzną można zmniejszyć, przestawiając zawartość pamięci tak, aby cała wolna pamięć znajdowała się w jednym bloku.
  • Wewnętrzną fragmentację można zmniejszyć, przypisując najmniejszą partycję, która nadal jest wystarczająco dobra, aby przeprowadzić cały proces.

Co to jest segmentacja?

Metoda segmentacji działa prawie podobnie do stronicowania. Jedyna różnica między nimi polega na tym, że segmenty mają zmienną długość, podczas gdy w metodzie stronicowania strony mają zawsze stały rozmiar.

Segment programu obejmuje główną funkcję programu, struktury danych, funkcje narzędziowe itd. System operacyjny utrzymuje tabelę mapowania segmentów dla wszystkich procesów. Zawiera również listę wolnych bloków pamięci wraz z ich rozmiarem, numerami segmentów i ich lokalizacjami w pamięci głównej lub pamięć wirtualna.

Co to jest ładowanie dynamiczne?

Ładowanie dynamiczne to procedura programu, która nie jest ładowana, dopóki program jej nie wywoła. Wszystkie procedury powinny być zawarte na dysku w formacie ładowania, który można przenosić. Program główny zostanie załadowany do pamięci i zostanie wykonany. Ładowanie dynamiczne zapewnia również lepsze wykorzystanie przestrzeni pamięci.

Co to jest łączenie dynamiczne?

Łączenie to metoda, która pomaga systemowi operacyjnemu gromadzić i łączyć różne moduły kodu i danych w jeden plik wykonywalny. Plik można załadować do pamięci i wykonać. System operacyjny może łączyć biblioteki na poziomie systemu w program, który łączy biblioteki w czasie ładowania. W metodzie łączenia dynamicznego biblioteki są łączone w czasie wykonywania, więc rozmiar kodu programu może pozostać niewielki.

Różnica między obciążeniem statycznym i dynamicznym

Ładowanie statyczne Ładowanie dynamiczne
Ładowanie statyczne jest używane, gdy chcesz załadować program statycznie. Następnie w momencie kompilacji cały program zostanie powiązany i skompilowany bez konieczności stosowania jakichkolwiek zewnętrznych modułów lub zależności od programu. W programie ładowanym dynamicznie odniesienia zostaną dostarczone, a ładowanie zostanie wykonane w momencie wykonania.
W momencie ładowania cały program jest ładowany do pamięci i rozpoczyna jego wykonanie. Procedury z biblioteki ładowane są do pamięci tylko wtedy, gdy są wymagane w programie.

Różnica między łączeniem statycznym i dynamicznym

Oto główne różnice między łączeniem statycznym i dynamicznym:

Łączenie statyczne Linkowanie dynamiczne
Łączenie statyczne służy do łączenia wszystkich pozostałych modułów wymaganych przez program w jeden kod wykonywalny. Pomaga to systemowi operacyjnemu zapobiegać jakiejkolwiek zależności w czasie wykonywania. Kiedy używane jest łączenie dynamiczne, nie ma potrzeby łączenia rzeczywistego modułu lub biblioteki z programem. Zamiast tego użyj odniesienia do modułu dynamicznego dostarczonego podczas kompilacji i łączenia.

Podsumowanie

  • Zarządzanie pamięcią to proces kontrolowania i koordynowania pamięci komputera, przypisywania części zwanych blokami do różnych uruchomionych programów w celu optymalizacji ogólnej wydajności systemu.
  • Pozwala sprawdzić, ile pamięci należy przydzielić procesom decydującym, który procesor ma otrzymać pamięć w jakim czasie.
  • W przypadku pojedynczej ciągłej alokacji wszystkie typy pamięci komputera z wyjątkiem małej części zarezerwowanej dla systemu operacyjnego są dostępne dla jednej aplikacji
  • Metoda alokacji partycjonowanej dzieli pamięć podstawową na różne partycje pamięci, którymi są przeważnie ciągłe obszary pamięci
  • Metoda Paged Memory Management dzieli pamięć główną komputera na jednostki o stałym rozmiarze, zwane ramkami stron
  • Pamięć segmentowana to jedyna metoda zarządzania pamięcią, która nie zapewnia programowi użytkownika liniowej i ciągłej przestrzeni adresowej.
  • Swapping to metoda, w której proces powinien zostać tymczasowo zamieniony z pamięci głównej na magazyn zapasowy. Później zostanie on przeniesiony z powrotem do pamięci w celu kontynuacji wykonywania.
  • Alokacja pamięci to proces, w wyniku którego programom komputerowym przydzielana jest pamięć lub miejsce.
  • Stronicowanie to mechanizm przechowywania, który umożliwia systemowi operacyjnemu pobieranie procesów z pamięci dodatkowej do pamięci głównej w postaci stron.
  • Fragmentacja odnosi się do stanu dysku, w którym pliki są podzielone na kawałki rozproszone po całym dysku.
  • Metoda segmentacji działa prawie podobnie do stronicowania. Jedyna różnica między nimi polega na tym, że segmenty mają zmienną długość, podczas gdy w metodzie stronicowania strony mają zawsze stały rozmiar.
  • Ładowanie dynamiczne to procedura programu, która nie jest ładowana, dopóki program jej nie wywoła.
  • Łączenie to metoda, która pomaga systemowi operacyjnemu gromadzić i łączyć różne moduły kodu i danych w jeden plik wykonywalny.