Segmentacja pamięci
Segmentacja pamięci to metoda ochrony pamięci stosowana w systemach wielozadaniowych, która polega na podziale pamięci fizycznej na fragmenty zwane segmentami. Każdy proces otrzymuje własny obszar pamięci, co jest realizowane przez rejestry segmentowe.
Opis segmentacji
W procesie segmentacji pamięć dzielona jest na fragmenty o określonym początku, rozmiarze, atrybutach i identyfikatorze. System operacyjny tworzy segmenty na żądanie aplikacji, przydzielając jej jedynie identyfikatory, które nie pozwalają na bezpośredni dostęp do parametrów segmentów. Programy mogą odwoływać się do pamięci tylko wewnątrz swoich segmentów, co uniemożliwia im dostęp do segmentów innych procesów.
Zalety segmentacji
Segmentacja ma swoje zalety, z których najważniejsze to:
- Prostota relokacji kodu i danych – programy mogą odwoływać się do pamięci w ramach segmentu, nie martwiąc się o jego fizyczną lokalizację.
- Sprzętowe zarządzanie adresami przez układ zarządzający pamięcią.
Wady segmentacji
Mimo zalet, segmentacja ma również istotne wady:
- Ograniczenia w rozmiarze segmentów, co zmuszało programistów do nienaturalnego dzielenia kodu i danych.
- Trudności w tworzeniu dużych struktur danych oraz skomplikowana logika podziału programu na części.
- Alternatywne metody, takie jak stronicowanie, okazują się prostsze w implementacji i efektywniejsze w wielu przypadkach.
Aktualne podejścia
Obecnie segmentacja jest rzadko stosowana w praktyce. W mikroprocesorach zgodnych z architekturą Intel 80386 i późniejszych segmentacja jest integralnym elementem systemu, jednak w celu uproszczenia jej zastosowania, Linux wykorzystuje jeden segment o adresie bazowym 0x0 i rozmiarze 4 GB. W ochronie pamięci preferowane jest stosowanie mechanizmu stronicowania, który działa niezależnie od segmentacji.