Как типы сегментов отличаются друг от друга? - PullRequest
0 голосов
/ 04 сентября 2018

Как разные типы сегментов идентифицируются как разные? Википедия гласит:

Сегменты могут быть определены как код, данные или системные сегменты

Также говорится:

Дескрипторы с очищенным битом 12 являются «системными дескрипторами» и используются для специализированных целей.

Итак, я понял, что этот "системный бит" используется для идентификации системного сегмента, но как насчет кода и сегментов данных? Кроме того, поскольку эти идентификаторы хранятся отдельно, а не как одно 2-битное значение, можете ли вы получить комбинации типов, такие как системный код и сегменты системных данных?

1 Ответ

0 голосов
/ 05 сентября 2018

Поле Type дескриптора сегмента не один бит, а четыре.

Format of a segment descriptor with 1 bit for the system/non-system type and 4 bit of sub type

Поле S определяет, является ли дескриптор системным дескриптором (бит свободен) или нет.
Интерпретация поля Тип зависит от значения S .

Не системные дескрипторы

Non system descriptors

Системные дескрипторы

System descriptors


Чтобы лучше понять, как работает защищенная / длинная сегментация, я советую вам отказаться от Википедии в пользу руководств Intel.

...