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ą podstawową. Pomaga procesom przechodzić wstecz i do przodu 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.
W tym samouczku dotyczącym systemu operacyjnego dowiesz się:
- Co to jest zarządzanie pamięcią?
- Dlaczego warto korzystać z zarządzania pamięcią?
- Techniki zarządzania pamięcią
- Co to jest zamiana?
- Co to jest alokacja pamięci?
- Co to jest stronicowanie?
- Co to jest metoda fragmentacji?
- Co to jest segmentacja?
- Co to jest ładowanie dynamiczne?
- Co to jest linkowanie dynamiczne?
- Różnica między obciążeniem statycznym i dynamicznym
- Różnica między łączeniem statycznym i dynamicznym
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 trzeba przydzielić procesom, które decydują o tym, który procesor powinien otrzymać pamięć w jakim czasie.
- Śledzi, kiedy zapasy zostaną zwolnione lub nieprzydzielone. Zgodnie z nim zaktualizuje status.
- Przydziela miejsce na procedury aplikacji.
- Upewnij się również, że te aplikacje nie kolidują ze sobą.
- Pomaga chronić różne procesy przed sobą
- Umieszcza programy w pamięci, dzięki czemu pamięć jest w pełni wykorzystana.
Techniki zarządzania pamięcią
Oto kilka najważniejszych technik zarządzania pamięcią:
Pojedynczy ciągły przydział
Jest to najłatwiejsza technika zarządzania pamięcią. W tej metodzie wszystkie typy pamięci komputera z wyjątkiem niewielkiej części, która jest zarezerwowana dla systemu operacyjnego, są dostępne dla jednej aplikacji. Na przykład system operacyjny MS-DOS alokuje pamięć w ten sposób. System wbudowany działa również w pojedynczej aplikacji.
Przydział partycjonowany
Dzieli pamięć podstawową na różne partycje pamięci, które w większości są przyległymi obszarami pamięci. Każda partycja przechowuje wszystkie informacje dotyczące określonego zadania lub zadania. Ta metoda polega na przydzielaniu partycji do zadania podczas jego uruchamiania i cofaniu przydziału po jego zakończeniu.
Zarządzanie pamięcią stronicowaną
Ta metoda polega na podzieleniu pamięci głównej komputera na jednostki o stałej wielkości, zwane ramkami stron. Ta sprzętowa jednostka zarządzająca pamięcią mapuje strony na ramki, które powinny być przydzielane na podstawie stron.
Zarządzanie pamięcią segmentową
Pamięć segmentowana jest jedyną metodą 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 fizyczny adres sekcji w pamięci, rozmiar i inne dane, takie jak bity ochrony dostępu i stan.
Co to jest zamiana?
Zamiana to metoda, w której proces powinien zostać tymczasowo przeniesiony z pamięci głównej do magazynu zapasowego. Zostanie on później przywrócony do pamięci w celu kontynuowania wykonywania.
Magazyn zapasowy to dysk twardy lub inne dodatkowe urządzenie magazynujące, które powinno być wystarczająco duże, aby pomieścić kopie wszystkich obrazów pamięci dla wszystkich użytkowników. Jest również zdolny do oferowania bezpośredniego dostępu do tych obrazów pamięci.
Korzyści z zamiany
Oto główne korzyści / zalety zamiany:
- Oferuje wyższy stopień multiprogramowania.
- Umożliwia dynamiczne przenoszenie. Na przykład, jeśli używane jest powiązanie adresu w czasie wykonywania, procesy można zamienić w różnych lokalizacjach. W przeciwnym razie w przypadku powiązań czasu kompilacji i ładowania procesy należy przenieść do tej samej lokalizacji.
- Pomaga lepiej wykorzystać pamięć.
- Minimalne marnotrawstwo czasu procesora po zakończeniu, dzięki czemu można go łatwo zastosować do metody planowania opartej na priorytetach, aby poprawić jej wydajność.
Co to jest alokacja pamięci?
Alokacja pamięci to proces, w którym programom komputerowym przypisuje się pamięć lub przestrzeń.
Tutaj pamięć główna jest podzielona na dwa typy partycji
- Mało pamięci - system operacyjny znajduje się w tego typu pamięci.
- Wysoka pamięć - procesy użytkownika są przechowywane w dużej pamięci.
Przydział partycji
Pamięć jest podzielona na różne bloki lub partycje. Każdy proces jest przydzielany zgodnie z wymaganiami. Alokacja partycji jest idealną metodą uniknięcia wewnętrznej fragmentacji.
Poniżej znajdują się różne schematy alokacji partycji:
- First Fit : W tym typie 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ą spośród wolnych partycji.
- Najgorsze dopasowanie: przydziela proces do partycji, która jest największą wystarczająco wolną partycją dostępną w pamięci głównej.
- Następne dopasowanie: jest w większości podobne do pierwszego dopasowania, ale to dopasowanie wyszukuje pierwszą wystarczającą partycję od ostatniego punktu alokacji.
Co to jest stronicowanie?
Paging 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 podzielona na małe bloki pamięci fizycznej o stałej wielkości, które nazywane są ramkami. Rozmiar ramki powinien być taki sam jak rozmiar strony, aby maksymalnie wykorzystać pamięć główną i uniknąć fragmentacji zewnętrznej. Paging 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 wolne miejsce w pamięci, które jest zbyt małe, aby mogły być wykorzystane przez inne procesy.
Czasami procesy, których nie można przydzielić do bloków pamięci, ponieważ ich mały rozmiar i bloki pamięci zawsze pozostają nieużywane, nazywa się fragmentacją. Ten typ problemu występuje podczas dynamicznego systemu alokacji pamięci, gdy wolne bloki są dość małe, więc nie jest w stanie spełnić żadnego żądania.
Istnieją dwa rodzaje metod fragmentacji:
- Fragmentacja zewnętrzna
- Fragmentacja wewnętrzna
- Fragmentację zewnętrzną można zmniejszyć, przestawiając zawartość pamięci w celu umieszczenia całej wolnej pamięci 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 itp. System operacyjny utrzymuje tablicę mapy segmentów dla wszystkich procesów. Zawiera również listę wolnych bloków pamięci wraz z jej rozmiarem, numerami segmentów i lokalizacjami w pamięci głównej lub pamięci wirtualnej.
Co to jest ładowanie dynamiczne?
Ładowanie dynamiczne to procedura programu, która nie jest ładowana, dopóki program go nie wywoła. Wszystkie procedury powinny znajdować się na dysku w formacie relokowalnego ładowania. Program główny zostanie załadowany do pamięci i zostanie wykonany. Dynamiczne ładowanie zapewnia również lepsze wykorzystanie miejsca w pamięci.
Co to jest linkowanie dynamiczne?
Łączenie to metoda, która pomaga systemowi operacyjnemu gromadzić i scalać 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 | Dynamiczne ładowanie |
Ładowanie statyczne jest używane, gdy chcesz załadować program statycznie. Następnie w czasie kompilacji cały program zostanie połączony i skompilowany bez konieczności stosowania zewnętrznego modułu lub zależności od programu. | W programie ładowanym dynamicznie zostaną dostarczone odniesienia, a ładowanie zostanie wykonane w czasie wykonywania. |
W momencie ładowania cały program jest ładowany do pamięci i rozpoczyna jego wykonywanie. | Procedury biblioteki są ładowane 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 a dynamicznym:
Łączenie statyczne | Dynamiczne łączenie |
Łączenie statyczne służy do łączenia wszystkich innych modułów wymaganych przez program w jeden kod wykonywalny. Pomaga to systemowi operacyjnemu zapobiegać jakiejkolwiek zależności od środowiska wykonawczego. | Gdy 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 w czasie kompilacji i linkowania. |
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 trzeba przydzielić procesom, które decydują o tym, który procesor powinien otrzymać pamięć w jakim czasie.
- W przypadku pojedynczej ciągłej alokacji wszystkie typy pamięci komputera z wyjątkiem niewielkiej części, która jest zarezerwowana dla systemu operacyjnego, są dostępne dla jednej aplikacji
- Metoda alokacji partycjonowanej dzieli pamięć podstawową na różne partycje pamięci, które są w większości ciągłymi obszarami pamięci
- Metoda zarządzania pamięcią stronicowaną polega na podzieleniu pamięci głównej komputera na jednostki o stałej wielkości, zwane ramkami stron
- Pamięć segmentowana jest jedyną metodą zarządzania pamięcią, która nie zapewnia programowi użytkownika liniowej i ciągłej przestrzeni adresowej.
- Zamiana to metoda, w której proces powinien zostać tymczasowo przeniesiony z pamięci głównej do magazynu zapasowego. Zostanie on później przywrócony do pamięci w celu kontynuowania wykonywania.
- Alokacja pamięci to proces, w którym programom komputerowym przypisuje się pamięć lub przestrzeń.
- Paging 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, na którym pliki są podzielone na fragmenty rozrzucone po 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 go nie wywoła.
- Łączenie to metoda, która pomaga systemowi operacyjnemu gromadzić i scalać różne moduły kodu i danych w jeden plik wykonywalny.