Zarządzanie pamięcią w systemie operacyjnym: ciągła, wymianaping, Fragmentacja
⚡ Inteligentne podsumowanie
Zarządzanie pamięcią to proces systemu operacyjnego polegający na kontrolowaniu i koordynowaniu pamięci komputera poprzez przypisywanie bloków do uruchomionych programów w celu optymalizacji wydajności. tracks każdą lokalizację w pamięci, przenosi procesy pomiędzy pamięcią główną i dyskiem oraz chroni procesy przed innymi procesami.

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.
To najważniejsza funkcja systemu operacyjnego, która zarządza pamięcią główną. Pomaga procesom przemieszczać się między pamięcią główną a dyskiem wykonawczym. Pomaga systemowi operacyjnemu w utrzymaniu… track każdej lokalizacji pamięci, niezależnie od tego, czy jest ona przydzielona jakiemuś procesowi, 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.
- Tracks za każdym razem, gdy zasoby zostaną zwolnione lub nieprzydzielone, i odpowiednio aktualizuje status.
- Przydziela miejsce na procedury aplikacyjne.
- Gwarantuje to również, że aplikacje te nie będą ze sobą kolidować.
- Pomaga chronić różne procesy przed innymi.
- 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
To najprostsza technika zarządzania pamięcią. W tej metodzie wszystkie rodzaje pamięci komputera, z wyjątkiem niewielkiej części zarezerwowanej dla systemu operacyjnego, są dostępne dla jednej aplikacji. Na przykład system operacyjny MS-DOS alokuje pamięć w ten sposób. System wbudowany również działa w oparciu o pojedynczą aplikację.
Podzielona alokacja
Dzieli pamięć główną na różne partycje pamięci, które są w większości ciągłymi obszarami pamięci. Każda partycja przechowuje wszystkie informacje dotyczące konkretnego zadania lub zadania. Metoda ta polega na przydzieleniu partycji do zadania na początku i zwolnieniu jej po 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 Swapping?
Zamianaping to metoda, w której proces powinien zostać tymczasowo przeniesiony z pamięci głównej do pamięci zapasowej. Później zostanie on przywrócony do pamięci w celu kontynuacji wykonywania.
Magazyn kopii zapasowych to dysk twardy lub inne 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. Musi również umożliwiać bezpośredni dostęp do tych obrazów pamięci.
Korzyści z wymianyping
Oto główne korzyści/zalety swapuping:
- Oferuje wyższy stopień wieloprogramowości.
- Umożliwia dynamiczną relokację. Na przykład, jeśli używane jest powiązanie adresów w czasie wykonywania, procesy można zamienić miejscami. W przeciwnym razie, w przypadku powiązań w czasie kompilacji i ładowania, procesy powinny zostać przeniesione do tej samej lokalizacji.
- Pomaga uzyskać lepsze wykorzystanie pamięci.
- Minimalne marnowanie czasu procesora po zakończeniu zadania, co pozwala na łatwe zastosowanie metody harmonogramowania opartej na priorytetach w celu zwiększenia 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 podzielona jest na dwa typy partycji:
- Słaba pamięć - Operasystem tingu tkwi w tego typu pamięci.
- Wysoka pamięć – Procesy użytkownika są przechowywane w pamięci masowej.
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 przedstawiono różne schematy alokacji partycji:
- Pierwsze dopasowanie: W tym typie dopasowania przydzielana jest partycja, która stanowi pierwszy wystarczający blok od początku pamięci głównej.
- Najlepsze dopasowanie: Przydziela proces do partycji, która jest najmniejszą wystarczająco dużą partycją spośród wolnych partycji.
- Najgorsze dopasowanie: Przydziela proces do partycji, która jest największą, wystarczająco wolną partycją w pamięci głównej.
- Następne dopasowanie: Jest to metoda w dużej mierze podobna do metody First Fit, ale w tej metodzie wyszukiwana jest pierwsza wystarczająca partycja z ostatniego punktu alokacji.
Co to jest stronicowanie?
Stronicowanie to mechanizm pamięci masowej, 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 zapewnić maksymalne wykorzystanie pamięci głównej 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ą zapisywane w pamięci i usuwane z niej, co powoduje powstawanie wolnych przestrzeni pamięci, które są zbyt małe, aby mogły być wykorzystane przez inne procesy.
Po pewnym czasie procesy te nie mogą zostać przydzielone do bloków pamięci ze względu na ich niewielki rozmiar, a bloki pamięci pozostają niewykorzystane. Nazywa się to fragmentacją. Ten typ problemu występuje w systemie dynamicznej alokacji pamięci, gdy wolne bloki są dość małe, co uniemożliwia im realizację żadnego żądania.
Dwa rodzaje metod fragmentacji to:
- Fragmentacja zewnętrzna
- 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.
- Fragmentację wewnętrzną można zmniejszyć, przypisując najmniejszą partycję, która nadal będzie wystarczająco dobra do przeprowadzenia całego procesu.
Co to jest segmentacja?
Metoda segmentacji działa niemal podobnie do stronicowania. Jedyną różnicą między nimi jest to, ż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 do momentu jej wywołania przez program. Wszystkie procedury powinny być zapisane na dysku w formacie umożliwiającym przenoszenie. Program główny zostanie załadowany do pamięci i wykonany. Ładowanie dynamiczne zapewnia również lepsze wykorzystanie przestrzeni pamięci.
Co to jest łączenie dynamiczne?
Łączenie to metoda, która pomaga systemowi operacyjnemu zebrać i scalić różne moduły kodu i danych w jeden plik wykonywalny. Plik ten można załadować do pamięci i uruchomić. System operacyjny może łączyć biblioteki systemowe w program, który łączy je w momencie ładowania. W metodzie łączenia dynamicznego biblioteki są łączone w momencie wykonywania, dzięki czemu 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 połączony i skompilowany bez potrzeby stosowania zewnętrznych modułów lub zależności programowych. | W przypadku programu ładowanego dynamicznie, odniesienia zostaną dostarczone, a ładowanie zostanie wykonane w momencie wykonywania. |
| 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 uniknąć zależności w czasie wykonywania. | W przypadku dynamicznego linkowania nie jest konieczne łączenie rzeczywistego modułu lub biblioteki z programem. Zamiast tego, program korzysta z odwołania do modułu dynamicznego dostarczonego w momencie kompilacji i linkowania. |

