- •История разработки микропроцессоров
- •3.Регистр флагов eflags/flags
- •Сегментная организация памяти
- •Сегментная организация памяти в защищенном режиме
- •Страничная организация памяти
- •Команды передачи данных
- •Двоично-десятичная арифметика
- •2.Команда add
- •Команда sar
- •Команда shr
- •Особые случаи
- •Округления
Сегментная организация памяти в защищенном режиме
В защищенном режиме для каждого сегмента имеется специальная структура данных, которая описывает этот сегмент и которая называется дескриптором. Размер дескриптора составляет 8 байт.
Структура дескриптора (упрощенная):
Базовый адрес Граница Тип Уровень привилегий
Дескриптор содержит базовый адрес сегмента, его размер, тип сегмента (определяющий его использование - запись, только чтение, исполнение) и дополнительную информацию (права этого сегмента). Размер дескриптора составляет 8 байт.
Уровни привилегий по убыванию старшинства:
0 ядро – операционная система;
1 системный сервис
2 заказные расширения
3 прикладные программы
Дескрипторы размещаются в памяти, которая называется дескрипторной таблицей. Основной таблицей дескрипторов является глобальная дескрипторная таблица (Global Descriptor Table – GDT). которая используется всеми программами. Адрес и размер этой таблицы содержится в регистре GDTR. Для определения требуемого каждой программе дескриптора используется сегментный регистр, например DS.
После определения дескриптора МП определяет базовый адрес сегмента и может осуществлять обращение к памяти. Если для какой-либо задачи количество дескрипторов является недостаточным, то она может организовать собственную таблицу дескрипторов, которая называется локальной таблицей дескрипторов (LDT – Local Descriptor Table). Адрес этой таблицы содержится в регистре LDTR.
Для того, чтобы определить базовый адрес сегмента, микропроцессор должен несколько раз обратиться к памяти. Очевидно, что при этом уменьшается производительность микропроцессора, причем в достаточно большой степени. Чтобы избежать этого, в микропроцессоре имеются ассоциированные регистры, предназначенные для хранения дескрипторов. Длина этих регистров равна 8 байтам и они называются теневыми, поскольку эти регистры являются недоступными для программистов. Эти 8-байтные регистры ассоциируются с сегментными регистрами и регистром LDTR.
При первом обращении к какому-либо сегменту микропроцессор ищет соответствующий дескриптор либо в глобальной, либо в локальной таблице дескрипторов, а после его нахождения переписывает его в теневой регистр. При последующем обращении к этому сегменту процессор не обращается к таблице дескрипторов, поскольку он уже имеет базовый адрес этого сегмента.
Кроме базового адреса сегмента и предела дескриптор содержит байт прав доступа (Access Right), в связи с чем этот байт называется байтом AR. Формат этого байта показан на рис.2.
Седьмой разряд P в этом байте называется битом присутствия и он обозначает (если этот разряд равен 1), что данный дескриптор находится в памяти. Разряды 6 и 5 называются разрядами DPL (Descriptor Privilege Level) и они указывают уровень привилегий данного сегмента.
Четвертый разряд показывает, относится ли данный дескриптор к сегменту, или же он характеризует системный объект (например, локальную таблицу дескрипторов): если этот разряд равен 1, то данный дескриптор относится к сегменту.