Сегментація пам'яті

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Сегмента́ція па́м'яті — схема логічної адресації пам'яті комп'ютера в архітектурі x86.[1]

Лінійна адреса конкретного елементу пам'яті, який в деяких режимах роботи процесора буде збігатися з фізичною адресою, ділиться на дві частини: сегмент і зсув. Сегментом називається умовно виділена область адресного простору певного розміру, а зміщенням — адреса комірки пам'яті щодо початку сегмента. Базою сегмента називається лінійна адреса (адреса щодо всього обсягу пам'яті), який вказує на початок сегмента в адресному просторі.

В результаті виходить сегментний (логічний) адреса, який відповідає лінійному адресою база сегмента + зміщення і який виставляється процесором на шину адреси.

Про технологію[ред.ред. код]

Технологія сегментації дозволяє поділити адресний простір процесу на кілька сегментів. Довільна адреса програми містить ідентифікатор сегмента (segment ID) і зсув від його початку. Кожен сегмент може мати власні налаштування захисту. Сегменти завантажуються в оперативну пам'ять цілком, кожний з них описується за допомогою дескриптора, що містить фізичну адресу, за яким завантажений сегмент (базова адреса), розмір і інформація про захист. Апаратна частина перевіряє границі сегмента при кожній операції доступу, що виключає факти ушкодження процесом сусіднього сегмента. Завантаження і вивантаження (свопінг) можуть бути проведені на рівні окремих сегментів, а не всієї програми.

Сегментація в інших випадках використовується разом з розбиттям на сторінки, що в результаті дає гнучкий гібридний механізм керування пам'яттю. У таких системах сегменти не обов'язково повинні розташовуватися у пам'яті неперервно.

Сегментна адресація в реальному режимі[ред.ред. код]

У реальному режимі процесора весь адресний простір ділиться на однакові сегменти розміром від 16 байт до 65536 байт. Початок кожного наступного сегменту (так звана «база сегмента») зміщена щодо бази попереднього на мінімальний розмір сегмента, тобто на 16 байт (т.н. «параграф»). Таким чином, сегменти можуть частково перекривати один одного.

Селектор 16-розрядний і задає номер сегмента. З огляду на, що сегменти слідують один за одним з постійним інтервалом в 24 = 16 байт, дуже легко з'ясувати лінійний адресу сегмента, множачи його на 16.

Примітки[ред.ред. код]

  1. Intel® 64 and IA-32 Architectures Software Developer Manuals. Intel. Процитовано 2016-07-10. 


Інформаційні технології Це незавершена стаття про інформаційні технології.
Ви можете допомогти проекту, виправивши або дописавши її.