ponieważ nie jest ważne gdzie w pamięci fizycznej zakotwiczony jest segment, program może odwoływać się do kolejnych słów pamięci w ramach segmentu, zawsze licząc od zera do końca segmentu. Konieczne dodawanie adresów realizuje sprzętowo układ zarządzający pamięcią.

Okazuje się jednak, że wady segmentacji przeważyły nad zaletami. Pierwsze implementacje segmentowanej pamięci wirtualnej narzucały dość poważne ograniczenia na rozmiary segmentów, zmuszając programistów do dzielenia kodu programów oraz bloków danych w sposób nienaturalny i utrudniając tworzenie naprawdę dużych struktur danych. Nawet po zniesieniu tego ograniczenia okazało się, że dzielenie programu na logiczne części jest skomplikowane, a normalną pracę systemu i programu można osiągnąć znacznie prostszymi środkami.

Segmentacja jest rozwiązaniem bardzo eleganckim, lecz na tyle kłopotliwym, że obecnie praktycznie się jej nie stosuje. W mikroprocesorach zgodnych z architekturą Intel 80386 (i późniejszych) nie można wyłączyć mechanizmu segmentacji. Aby segmentację uczynić niewidoczną, Linux wykorzystuje jeden segment o adresie bazowym 0x0 i rozmiarze 4GB. W celu ochrony pamięci, zamiast segmentacji stosuje się mechanizm stronicowania, który jest niezależny od segmentacji.

Zobacz też stronicowanie pamięci jednostka zarządzania pamięcią

Kategoria:Zarządzanie pamięcią