W tym artykule szczegółowo omówimy zarządzanie pamięcią.
Co masz na myśli mówiąc zarządzanie pamięcią?
Pamięć jest ważną częścią komputera służącą do przechowywania danych. Zarządzanie jej ma kluczowe znaczenie dla systemu komputerowego, ponieważ ilość pamięci głównej dostępnej w systemie komputerowym jest bardzo ograniczona. W każdej chwili konkuruje o to wiele procesów. Ponadto, aby zwiększyć wydajność, kilka procesów jest realizowanych jednocześnie. W tym celu musimy przechowywać w pamięci głównej kilka procesów, dlatego jeszcze ważniejsze jest efektywne zarządzanie nimi.
Rola zarządzania pamięcią
Poniżej przedstawiono ważne role zarządzania pamięcią w systemie komputerowym:
- Menedżer pamięci służy do śledzenia stanu komórek pamięci, niezależnie od tego, czy są one wolne, czy przydzielone. Odnosi się do pamięci podstawowej, dostarczając abstrakcje, dzięki czemu oprogramowanie dostrzega, że przydzielono mu dużą pamięć.
- Menedżer pamięci umożliwia komputerom z małą ilością pamięci głównej wykonywanie programów większych niż rozmiar lub ilość dostępnej pamięci. Czyni to poprzez przenoszenie informacji tam i z powrotem między pamięcią podstawową a pamięcią dodatkową, korzystając z koncepcji zamiany.
- Menedżer pamięci jest odpowiedzialny za ochronę pamięci przydzielonej każdemu procesowi przed uszkodzeniem przez inny proces. Jeśli nie zostanie to zapewnione, system może wykazywać nieprzewidywalne zachowanie.
- Menedżerowie pamięci powinni umożliwiać współdzielenie przestrzeni pamięci pomiędzy procesami. W ten sposób dwa programy mogą znajdować się w tym samym miejscu pamięci, chociaż w różnym czasie.
Techniki zarządzania pamięcią:
Techniki zarządzania pamięcią można podzielić na następujące główne kategorie:
- Schematy zarządzania pamięcią ciągłą
- Schematy zarządzania pamięcią nieciągłą
Schematy zarządzania pamięcią ciągłą:
W schemacie zarządzania pamięcią ciągłą każdy program zajmuje pojedynczy, ciągły blok lokalizacji pamięci, tj. zestaw lokalizacji pamięci z kolejnymi adresami.
Pojedyncze, ciągłe schematy zarządzania pamięcią:
Schemat zarządzania pojedynczą ciągłą pamięcią jest najprostszym schematem zarządzania pamięcią stosowanym w systemach komputerowych najwcześniejszej generacji. W tym schemacie pamięć główna jest podzielona na dwa sąsiadujące obszary lub partycje. Systemy operacyjne znajdują się na stałe na jednej partycji, zazwyczaj w dolnej części pamięci, a procesy użytkownika są ładowane na drugą partycję.
zestaw maszynopisu
Zalety pojedynczych, ciągłych schematów zarządzania pamięcią:
- Proste w wykonaniu.
- Łatwe w zarządzaniu i projektowaniu.
- W schemacie zarządzania pojedynczą ciągłą pamięcią, po załadowaniu procesu, przydzielany jest mu pełny czas procesora i żaden inny procesor nie będzie go przerywał.
Wady pojedynczych, ciągłych schematów zarządzania pamięcią:
- Marnowanie miejsca w pamięci z powodu nieużywanej pamięci, ponieważ jest mało prawdopodobne, aby proces wykorzystał całą dostępną przestrzeń pamięci.
- Procesor pozostaje bezczynny, czekając, aż dysk załaduje obraz binarny do pamięci głównej.
- Nie można go wykonać, jeśli program jest zbyt duży, aby zmieścić całą dostępną przestrzeń pamięci głównej.
- Nie obsługuje wieloprogramowości, tzn. nie może obsługiwać wielu programów jednocześnie.
Wielokrotne partycjonowanie:
Pojedynczy schemat zarządzania pamięcią ciągłą jest nieefektywny, ponieważ ogranicza komputery do wykonywania tylko jednego programu na raz, co powoduje marnotrawienie miejsca w pamięci i czasu procesora. Problem nieefektywnego wykorzystania procesora można przezwyciężyć, stosując wieloprogramowość, która pozwala na jednoczesne działanie więcej niż jednego programu. Aby przełączać się między dwoma procesami, systemy operacyjne muszą załadować oba procesy do pamięci głównej. System operacyjny musi podzielić dostępną pamięć główną na wiele części, aby załadować wiele procesów do pamięci głównej. Dzięki temu w pamięci głównej może jednocześnie znajdować się wiele procesów.
Schematy wielokrotnego partycjonowania mogą być dwojakiego rodzaju:
- Naprawiono partycjonowanie
- Partycjonowanie dynamiczne
Naprawiono partycjonowanie
Pamięć główna jest podzielona na kilka partycji o stałym rozmiarze w ramach schematu zarządzania pamięcią o stałych partycjach lub partycjonowania statycznego. Partycje te mogą mieć ten sam rozmiar lub różne rozmiary. Każda partycja może pomieścić pojedynczy proces. Liczba partycji określa stopień wieloprogramowości, czyli maksymalną liczbę procesów w pamięci. Partycje te są tworzone w momencie generowania systemu i pozostają niezmienne po tym czasie.
Zalety schematów zarządzania pamięcią z partycjonowaniem stałym:
- Proste w wykonaniu.
- Łatwe w zarządzaniu i projektowaniu.
Wady schematów zarządzania pamięcią ze stałym partycjonowaniem:
- System ten charakteryzuje się wewnętrzną fragmentacją.
- Liczba partycji jest określana w momencie generowania systemu.
Partycjonowanie dynamiczne
Partycjonowanie dynamiczne zostało zaprojektowane w celu przezwyciężenia problemów związanych ze stałym schematem partycjonowania. W schemacie partycjonowania dynamicznego każdy proces zajmuje tylko tyle pamięci, ile potrzebuje po załadowaniu do przetwarzania. Żądanym procesom przydzielana jest pamięć do momentu wyczerpania całej pamięci fizycznej lub pozostałego miejsca jest niewystarczające do przechowywania procesu żądającego. W tym schemacie stosowane są partycje o zmiennej wielkości, a liczba partycji nie jest zdefiniowana w momencie generowania systemu.
Zalety schematów zarządzania pamięcią poprzez partycjonowanie dynamiczne:
minipasek narzędzi Excel
- Proste w wykonaniu.
- Łatwe w zarządzaniu i projektowaniu.
Wady schematów zarządzania pamięcią poprzez partycjonowanie dynamiczne:
- System ten charakteryzuje się również wewnętrzną fragmentacją.
- Liczba partycji jest określana w momencie segmentacji systemu.
Schematy zarządzania pamięcią nieciągłą:
W schemacie zarządzania pamięcią nieciągłą program jest podzielony na różne bloki i ładowany w różnych częściach pamięci, które niekoniecznie muszą sąsiadować ze sobą. Schemat ten można sklasyfikować w zależności od rozmiaru bloków i tego, czy bloki znajdują się w pamięci głównej, czy nie.
Co to jest stronicowanie?
Stronicowanie to technika eliminująca wymagania ciągłej alokacji pamięci głównej. W tym przypadku pamięć główna jest podzielona na bloki pamięci fizycznej o stałym rozmiarze zwane ramkami. Rozmiar ramki powinien być taki sam jak rozmiar strony, aby zmaksymalizować pamięć główną i uniknąć fragmentacji zewnętrznej.
Zalety stronicowania:
- Strony zmniejszają fragmentację zewnętrzną.
- Proste w wykonaniu.
- Pamięć wydajna.
- Dzięki jednakowej wielkości ramek, zamiana staje się bardzo łatwa.
- Służy do szybszego dostępu do danych.
Co to jest segmentacja?
Segmentacja to technika eliminująca wymagania ciągłej alokacji pamięci głównej. W tym przypadku pamięć główna jest podzielona na bloki pamięci fizycznej o zmiennej wielkości zwane segmentami. Opiera się na sposobie, w jaki programista konstruuje swoje programy. W przypadku segmentowanej alokacji pamięci każde zadanie jest podzielone na kilka segmentów o różnych rozmiarach, po jednym dla każdego modułu. Funkcje, podprogramy, stos, tablica itp. to przykłady takich modułów.