Zarządzanie pamięcią (systemy operacyjne) - Memory management (operating systems)

W systemach operacyjnych , zarządzanie pamięcią jest funkcja odpowiedzialna za zarządzanie komputera pamięć podstawową .

Funkcja zarządzania pamięcią śledzi stan każdej lokalizacji pamięci, przydzielonej lub wolnej . Określa, w jaki sposób pamięć jest przydzielana między konkurującymi procesami, decydując, która pamięć otrzyma, kiedy ją otrzymają i ile jest im dozwolone. Kiedy pamięć zostanie przydzielona, ​​określa, które lokalizacje pamięci zostaną przydzielone. Śledzi, kiedy pamięć jest zwolniona lub nieprzydzielona i aktualizuje status.

Różni się to od zarządzania pamięcią aplikacji , czyli sposobu, w jaki proces zarządza pamięcią przypisaną mu przez system operacyjny.

Techniki zarządzania pamięcią

Pojedyncza ciągła alokacja

Pojedyncza alokacja to najprostsza technika zarządzania pamięcią. Cała pamięć komputera, zwykle z wyjątkiem małej części zarezerwowanej dla systemu operacyjnego, jest dostępna dla pojedynczej aplikacji. MS-DOS jest przykładem systemu, który w ten sposób alokuje pamięć. System osadzony, na którym działa pojedyncza aplikacja, może również wykorzystywać tę technikę.

System za pomocą pojedynczego ciągły przydział może nadal wielu zadań przez zamianę zawartości pamięci, aby przełączać się między użytkownikami. Wczesne wersje systemu operacyjnego MUSIC wykorzystywały tę technikę.

Przydział partycjonowany

Alokacja partycjonowana dzieli pamięć podstawową na wiele partycji pamięci , zwykle sąsiednich obszarów pamięci. Każda partycja może zawierać wszystkie informacje dotyczące określonego zadania lub zadania . Zarządzanie pamięcią polega na przydzieleniu partycji do zadania w momencie jego rozpoczęcia i anulowaniu jej po zakończeniu zadania.

Alokacja partycjonowana zwykle wymaga wsparcia sprzętowego, aby zadania nie kolidowały ze sobą lub z systemem operacyjnym. IBM System / 360 używane do blokowania i klucz technikę. Inne systemy używały rejestrów bazowych i granicznych, które zawierały granice partycji i oflagowały nieprawidłowe dostępy. UNIVAC 1108 Storage Limits Rejestracja miał oddzielne base / wiązane zestawy dla instrukcji i danych. System wykorzystał przeplatanie pamięci, aby umieścić tak zwane banki i i d w oddzielnych modułach pamięci.

Partycje mogą być statyczne , które są zdefiniowane podczas ładowania programu początkowego (IPL) lub podczas uruchamiania lub przez operatora komputera , albo dynamiczne , czyli tworzone automatycznie dla określonego zadania. System operacyjny IBM System/360 Wieloprogramowanie ze stałą liczbą zadań (MFT) jest przykładem partycjonowania statycznego, a wieloprogramowanie ze zmienną liczbą zadań (MVT) jest przykładem dynamicznego. MVT i następcy używają terminu region, aby odróżnić partycje dynamiczne od statycznych w innych systemach.

Partycje mogą być relokowane przy użyciu pamięci sprzętowej , takiej jak Burroughs Corporation B5500 , lub rejestrów bazowych i granicznych , takich jak PDP-10 lub GE-635 . Partycje relokowalne można skompaktować, aby zapewnić większe fragmenty ciągłej pamięci fizycznej. Zagęszczanie przesuwa "używane" obszary pamięci, aby wyeliminować "dziury" lub nieużywane obszary pamięci spowodowane zakończeniem procesu w celu utworzenia większych, ciągłych wolnych obszarów.

Niektóre systemy pozwalają partycje mają być zamieniane do przechowywania wtórnym do bezpłatnej dodatkowej pamięci. Wczesne wersje opcji IBM Time Sharing Option (TSO) umożliwiały zamianę użytkowników na partycje współdzielenia czasu i poza nimi .

Zarządzanie pamięcią stronicowaną

Alokacja stronicowana dzieli podstawową pamięć komputera na jednostki o stałym rozmiarze zwane ramkami stron , a wirtualną przestrzeń adresową programu na strony o tym samym rozmiarze. Sprzętowa jednostka zarządzania pamięcią mapuje strony do ramek. Pamięć fizyczna może być przydzielana na podstawie strony, podczas gdy przestrzeń adresowa wydaje się być ciągła.

Zwykle przy zarządzaniu pamięcią stronicowaną każde zadanie działa we własnej przestrzeni adresowej. Istnieją jednak systemy operacyjne z pojedynczą przestrzenią adresową, które uruchamiają wszystkie procesy w jednej przestrzeni adresowej, takie jak IBM i , który uruchamia wszystkie procesy w dużej przestrzeni adresowej, oraz IBM OS/VS2 (SVS) , który uruchamia wszystkie zadania w pojedyncza wirtualna przestrzeń adresowa 16MiB.

Pamięć stronicowana może być stronicowana na żądanie, gdy system może w razie potrzeby przenosić strony między pamięcią podstawową i dodatkową.

Segmentowane zarządzanie pamięcią

Pamięć segmentowa jest jedyną techniką zarządzania pamięcią, która nie zapewnia programowi użytkownika „liniowej i ciągłej przestrzeni adresowej”. Segmenty to obszary pamięci, które zwykle odpowiadają logicznemu grupowaniu informacji, takim jak procedura kodu lub tablica danych. Segmenty wymagają obsługi sprzętowej w postaci tablicy segmentów, która zazwyczaj zawiera fizyczny adres segmentu w pamięci, jego rozmiar oraz inne dane, takie jak bity ochrony dostępu i status (zamienione, zamienione itp.)

Segmentacja umożliwia lepszą ochronę dostępu niż inne schematy, ponieważ odwołania do pamięci odnoszą się do określonego segmentu, a sprzęt nie pozwoli aplikacji na odwoływanie się do pamięci niezdefiniowanej dla tego segmentu.

Możliwe jest wdrożenie segmentacji ze stronicowaniem lub bez. Bez obsługi stronicowania segment jest jednostką fizyczną wymienianą w pamięci i poza nią, jeśli jest to wymagane. Dzięki obsłudze stronicowania strony są zwykle jednostką wymiany, a segmentacja tylko dodaje dodatkowy poziom bezpieczeństwa.

Adresy w systemie segmentowym zwykle składają się z identyfikatora segmentu i przesunięcia względem adresu bazowego segmentu, zdefiniowanego jako przesunięcie zerowe.

Architektura Intel IA-32 (x86) pozwala procesowi mieć do 16 383 segmenty do 4GiB każdy. Segmenty IA-32 to podpodziały liniowej przestrzeni adresowej komputera , wirtualnej przestrzeni adresowej zapewnianej przez sprzęt przywoławczy.

System operacyjny Multics jest prawdopodobnie najbardziej znanym systemem implementującym pamięć segmentową. Segmenty Multics to podpodziały pamięci fizycznej komputera do 256 stron, przy czym każda strona ma rozmiar 1K 36-bitowych słów, co daje maksymalny rozmiar segmentu 1MiB (z 9-bitowymi bajtami, jak w Multics). Proces może mieć do 4046 segmentów.

Wdrażanie/wdrażanie

Rollout / Rollin (RO / RI) jest techniką zarządzania pamięcią systemu operacyjnego komputera, gdzie cała nie- współdzielony kod i dane z uruchomionego programu jest zamieniane do pamięci pomocniczej (dysku lub bębna) do wolnej pamięci głównej do innego zadania. Programy mogą być wdrażane „na żądanie lub… w oczekiwaniu na długie wydarzenie”. Rollout/rollin był powszechnie używany w systemach z podziałem czasu , w których „czas namysłu” użytkownika był stosunkowo długi w porównaniu z czasem na dokonanie wymiany.

W przeciwieństwie do pamięci wirtualnej — stronicowania lub segmentacji, wdrażanie/wprowadzanie nie wymaga żadnego specjalnego sprzętu do zarządzania pamięcią; jednak, jeśli system nie ma sprzętu relokacyjnego, takiego jak mapa pamięci lub rejestry bazowe i graniczne , program musi zostać przywrócony do oryginalnych lokalizacji w pamięci. Rollout/rollin został w dużej mierze zastąpiony przez pamięć wirtualną.

Wdrażanie/wprowadzanie było opcjonalną funkcją wieloprogramowania OS/360 ze zmienną liczbą zadań (MVT)

Wdrażanie/wprowadzanie umożliwia tymczasowe, dynamiczne rozszerzenie określonego zadania poza jego pierwotnie określony region. Gdy zadanie wymaga więcej miejsca, wdrażanie/wprowadzanie próbuje uzyskać nieprzypisaną pamięć do wykorzystania zadania. Jeśli nie ma takiej nieprzypisanej pamięci, inne zadanie jest rozwijane — tj. przenoszone do pamięci dyskowej — tak, aby jego region mógł być używany przez pierwsze zadanie. Po zwolnieniu przez pierwsze zadanie ta dodatkowa pamięć jest ponownie dostępna, albo (1) jako pamięć nieprzypisana, jeśli to było jej źródło, albo (2), aby odebrać zadanie, które ma zostać przeniesione z powrotem do pamięci głównej (wprowadzone).

W systemie OS/360 wycofywanie/wycofywanie było używane tylko dla zadań wsadowych, a wycofywanie nie występuje, dopóki etap zadania wypożyczający region nie zostanie zakończony.

Zobacz też

Uwagi

Bibliografia