Różnica między stronicowaniem a segmentacją

Różnica między stronicowaniem a segmentacją

Zarządzanie pamięcią jest jedną z podstawowych funkcji systemu operacyjnego. Nowoczesne systemy operacyjne pozwalają każdemu procesowi uzyskać więcej pamięci wirtualnej niż całkowity rozmiar faktycznej (fizycznej) pamięci w danym systemie komputerowym. Głównym celem zarządzania pamięcią jest to, że połączenie dużej, ale powolnej pamięci z małą, ale wysoką pamięcią, aby osiągnąć efekt większej pamięci o dużej prędkości.

Co stronicowanie?

Oddzielenie partycjonowania stałych i zmiennych jest nieskuteczne pod względem wykorzystania pamięci, ponieważ ustalone partycjonowanie powoduje wewnętrzne, a dynamiczne w fragmentacji zewnętrznej. Możliwym rozwiązaniem problemu fragmentacji jest umożliwienie procesu nie zapisywania ciągłego bloku pamięci. Program może być rozproszony arbitralnie w pamięci. W takim przypadku pamięć robocza jest podzielona na mniejsze bloki o stałym rozmiarze zwanym ramkami. Logiczna przestrzeń adresu programu jest również podzielona na bloki tego samego rozmiaru, zwane stronami. Po wprowadzeniu programu do pamięci strony są zapisywane w ramach o wolnych pamięci. Aby ułatwić przenoszenie programów z dysku na pamięć roboczą, dysk jest również podzielony na ramki o tym samym rozmiarze co ramki pamięci. Zatem jedna ramka z dysku jest zapisywana w jedną ramkę pamięci roboczej. System stronicowania działa w następujący sposób: Gdy program jest akceptowany do wykonania, jego rozmiar jest obliczany, który jest wyrażany z wymaganą liczbą stron. Jeśli wystarczająca liczba klatek jest bezpłatna, proces jest rejestrowany na stronie pamięci na stronę. Jednocześnie liczba klatek, w których zapisana jest każda strona, jest wprowadzana w tabeli ramki.

Co to jest segmentacja?

Program użytkowników i powiązane dane można podzielić na wiele segmentów. Segmenty wszystkich programów nie muszą mieć tego samego rozmiaru, chociaż ma maksymalną długość segmentu. Podobnie jak w przypadku stronicowania, adres logiczny, który korzysta z segmentacji, składa się z dwóch części, w tym przypadku liczba segmentów i zwichnięć w tym segmencie. Ze względu na zastosowanie segmentów o różnych rozmiarach segmentacja jest podobna do dynamicznego partycjonowania. W przypadku braku schematu nakładki lub użycia pamięci wirtualnej wymagane jest, aby wszystkie segmenty programów były ładowane do pamięci do wykonania. Różnica w porównaniu z partycjonowaniem dynamicznym polega na tym, że segmentacja może wymagać więcej niż jednej partycji, a partycja nie musi być sąsiadująca. Segmentacja rozwiązuje problem fragmentacji wewnętrznej, ale a także dynamiczne podział, problem fragmentacji zewnętrznej pozostaje. Ponieważ jednak proces jest podzielony na wiele mniejszych części, fragmentacja zewnętrzna jest zwykle mniejsza. W przeciwieństwie do stronicowania, które jest niewidoczne dla programisty, segmentacja jest zwykle widoczna i odpowiednia do organizowania programów i danych. W celu programowania modułowego program lub dane można dalej podzielić na kilka mniejszych segmentów. Minusem tej techniki jest to, że programista musi znać ograniczenia maksymalnego rozmiaru segmentu. Kolejną wygodą korzystania z segmentów o różnych rozmiarach jest to, że nie ma potencjalnego związku między adresami logicznymi i fizycznymi. Podobnie do stronicowania, prosta technika segmentacji wykorzystuje tabelę segmentów dla każdego procesu i listę dostępnych bloków w pamięci głównej.

Różnica między stronicowaniem a segmentacją

1. Koncepcja stronicowania i segmentacji

Przesłuchanie zapewnia wirtualną i fizyczną przestrzeń adresową oraz wtórną przestrzeń pamięci na blokach (stronach) o równych długościach. Umożliwia to przydzielanie ciągłej przestrzeni wirtualnej adresu do procesu dyspersji (niekoniecznie stale rozmieszczania się) w rzeczywistej przestrzeni adresowej i pamięci wtórnej. Nawet strona, jako termin, odnosi się raczej do pamięci, a nie obiektów logicznych, które są widoczne na poziomie programu. Segmentacja zapewnia wirtualne miejsce adresowe na blokach (segmenty), które bezpośrednio odpowiadają obiektom na poziomie programu. Z tego powodu segment nie ma ustalonej długości, więc nawet rozmiar segmentu można zmienić podczas wykonywania programu. Ochrona i podział są zatem możliwe na poziomie obiektu i istnieją widoczne procesy, w których wykonywana jest segmentacja.

2. Charakterystyka stronicowania i segmentacji

Deweloper aplikacji nie jest świadomy stronicowania. Pisze programy tak, jakby pamięć była liniowa, a system operacyjny i procesor są zaniepokojenia partycjonowania i konwersji na adresy wirtualne. Programator w systemach segmentacji wymienia jednak dwie części adresu, segmentu i strony w swoich programach. Wszystkie strony są tego samego rozmiaru, podczas gdy segmenty są różne. Segmentacja ma wiele liniowych przestrzeni adresowych i stronicowanie tylko jednej. Segmenty umożliwiają logiczne partycjonowanie i ochrona komponentów aplikacji, a strony nie.

3. Zalety stronicowania i segmentacji

Stronicowanie, które jest przezroczyste dla programisty, eliminuje fragmentację zewnętrzną, a zatem zapewnia efektywne wykorzystanie pamięci głównej. Elementy, które poruszają się i wychodzą z pamięci głównej, są ustalone i tego samego rozmiaru, więc możliwe jest opracowanie wyrafinowanych algorytmów zarządzania pamięcią, które wykorzystują zachowanie programu. Segmentacja jest widoczna dla programisty i ma zdolność do zarządzania wzrostem struktury danych, modułowości i wsparcia wymiany i ochrony.

Stronicowanie vs. Segmentacja: wykres porównawczy

Stronicowanie

Segmentacja

Naprawiono rozmiar stron Segmenty nie są ustalone w rozmiarze
Niewidoczne dla programisty widoczne dla programisty
Jedna liniowa przestrzeń adresowa Wiele liniowych przestrzeni adresowych
nie pozwala na logiczne partycjonowanie i ochronę komponentów aplikacji pozwala

Podsumowanie stronicowania i segmentacji

  • Stronicowanie opiera się na rozkładowi całej przestrzeni adresowej na blokach o stałej długości, które są obsługiwane jako kwantyzowanie pamięci. Ponadto konieczne jest dostarczenie środków do oznaczania dostępnej pamięci, które można wykonać przez obecność „nagłówka” każdej strony wskazującej status strony (globalna lista połączona, w której każdy węzeł wskazuje na następną bezpłatną stronę) lub według strony) lub według strony Umieszczenie bezpłatnego adresu strony w tablicy globalnej, co jest zwykle najgorszym rozwiązaniem.
  • Segmentacja oznacza podzielenie przestrzeni adresowej na segmenty, które mają wyraźnie oznaczane prawa dostępu do procesora MMU. W tym segmencie procesy przydzielają dokładnie tyle pamięci, ile potrzebują, ale problem zarządzania pamięcią jest sposób zapewnienia takiej alokacji, w której może zachować wystarczająco dużą ciągłą pamięć blokową, która może wymagać trochę czasu.