SOP wyk nr 4-Slajd42
Z Studia Informatyczne
Segmentacja
Podstawą stronicowania jest stały podział pamięci. Segmentacja (ang. segmentation) oparta jest z kolei na podziale dynamicznym. Obraz procesu dzielony jest na logiczne części, odpowiadające poszczególnym sekcjom programu — sekcji kodu, danych, stosu itp. Dla każdej sekcji definiowany jest odpowiedni segment. Na potrzeby segmentu przydzielane są dynamiczne partycje w pamięci. Segmenty danego procesu mogą być dowolnie rozmieszczone w pamięci, ale każdy segment zajmuje ciągły obszar pamięci.
Segment, przeznaczony na określoną sekcję programu, może mieć zróżnicowany rozmiar i zawartość, a także dowolne położenie w pamięci fizycznej. Dlatego opis segmentu (deskryptor) obejmuje takie dane, jak:
- adres bazowy — fizyczny adres początku segmentu w pamięci,
- rozmiar — długość segmentu w ustalonych jednostkach (np. w bajtach, paragrafach),
- atrybuty określające rodzaj zawartości i dostępność (np. kod programu, dane tylko do odczytu, stos itp., pierścień ochrony) — na potrzeby weryfikacji poprawności odniesień,
- identyfikator (określany też jako nazwa lub numer) — wartość wskazująca na opis segmentu w tablicy segmentów (najczęściej indeks w tablicy segmentów). Jeśli identyfikatorem segmentu jest indeks, to jego wartość nie jest przechowywana w deskryptorze, ale wynika z lokalizacji deskryptora w tablicy.