Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Istoria_vozniknovenia_i_razvitia_OS.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
208.65 Кб
Скачать

9.Способы доступа к памяти в защищенном режиме.

Процессор 80286 и более поздние процессоры поддерживают два

режима операций: защищенный режим и реальный режим. Реальный ре-

жим совместим с работой процессора 8086 и позволяет прикладной

программе адресоваться к памяти объемом до одного мегабайта. За-

щищенный режим расширяет диапазон адресации до 16 мегабайт. Ос-

новное отличие между реальным и защищенным режимом заключается в

способе преобразования процессором логических адресов в физичес-

кие. Логические адреса - это адреса, используемые в прикладной

программе. Как в реальном, также и в защищенном режиме логический

адрес - это 32-разрядное значение, состоящее из 16-битового се-

лектора (адреса сегмента) и 16-битового смещения. Физические ад-

реса - это адреса, которые процессор использует для обмена данны-

ми с компонентами системной памяти. В реальном режиме физический

адрес представляет собой 20-битовое значение, а в защищенном ре-

жиме - 24-битовое.

Когда процессор обращается к памяти (для выборки инструкции

или записи переменной), он генерирует из логического адреса физи-

ческий адрес. В реальном режиме генерация физического адреса сос-

тоит из сдвига селектора (адреса сегмента) на 4 бита влево (это

означает умножение на 16) и прибавления смещения. Полученный в

результате 20-разрядный адрес используется затем для доступа к

памяти.

Чтобы получить физический адрес в защищенном режиме, селек-

торная часть логического адреса используется в качестве индекса

таблицы дескрипторов. Запись в таблице дескрипторов содержит

24-битовый базовый адрес, к которому затем для образования физи-

ческого адреса прибавляется смещение логического адреса.

Каждая запись в таблице дескрипторов называется дескриптором

и определяет сегмент в памяти. Запись таблицы дескрипторов зани-

мает 8 байт, а записанная в дескрипторе информация включает в се-

бя базовый адрес, предельное значение и флаги полномочий доступа

к сегменту.

Записи предельного значения сегмента и полномочий доступа в

дескрипторе определяют размер и тип сегмента. Сегменты могут

иметь размер от 1 до 65536 байт и могут быть сегментами кода или

сегментами данных. Сегменты кода могут содержать выполняемые ма-

шинные инструкции и доступные только по чтению данные. Сегменты

данных могут содержать данные, доступные по чтению и записи. За-

писывать данные в сегменты кода или выполнять инструкции в сег-

ментах данных невозможно. Любая попытка сделать это или попытка

доступа к данным вне границ сегмента вызывает общий сбой по на-

рушению защиты (сокращенно сбой GP). Поэтому режим и называется

защищенным.

По данному адресу в реальном режиме прикладная программа мо-

жет определить физический адрес. В защищенном режиме это обычно

не так, поскольку селекторная часть логического адреса является

индексом в таблице дескрипторов, и сам селектор не имеет прямого

отношения к вычислению физического адреса. Это дает то преимущество, что управление виртуальной памятью можно реализовать, не

влияя на прикладную программу. Например, путем простогообновле-

ния поля базового адреса дескриптора сегмента, операционная сис-

тема может перемещать сегмент в физической памяти без влияния на

использующую сегмент прикладную программу. Прикладная программа

ссылается только на селектор сегмента, и на селектор не влияют

изменения в дескрипторе.

Прикладная программа редко имеет дело с дескрипторами. При

необходимости дескрипторы создаются и уничтожаются операционной

системой и администратором памяти, а прикладная программа знает о

соответствующих селекторах. Селекторы аналогичны описателям фай-

лов - с точки зрения прикладной программы это то, что обслужива-

ется операционной системой, но в операционной системе они работа-

ют как индексы содержащих дополнительную информацию таблиц.

Доступ к памяти вне границ сегмента

В реальном режиме каждый сегмент имеет размер 64К. В защи щенном режиме дескриптор сегмента содержит поле, специфицирующеепредельный размер сегмента, и если вы пытаетесь обратиться к данным вне границ сегмента, по получите сбой GP. При загрузке при ладной программы администратор этапа выполнения устанавливает со ответствующие предельные значения для сегментов кода, данных и

стека. Кроме того, блок памяти, распределяемый с помощью функции

GlobalAlloc модуля WinAPI, имеет предельное значение сегмента,

соответствующее размеру блока памяти.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]