Файл: Отчет По практическому занятию 1 Дисциплина мдк 01. 01 Системное программирование Выполнил студент 3.docx
Добавлен: 29.10.2023
Просмотров: 25
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Выведение информации о базовом адресе сегмента и его размере на уровень процессора позволяет аппаратно контролировать, как программы работают с памятью, и предотвращать обращения к адресам, находящимся вне сегмента.
Другой аспект защиты заключается в том, что сегменты неравноправны в правах доступа к ним. Информация об этом содержится в специальном байте AR, входящем в состав дескриптора. Тип сегмента определяют следующие элементы байта AR: поле DPL, биты R/W, C/ED и I. Поле DPL — часть механизма защиты по привилегиям. Суть его выражается тем, что конкретный сегмент может находиться на одном из четырех уровней привилегированности с номерами 0, 1, 2 и 3. Максимум поблажек предоставляется уровню 0. Существует ряд ограничений (опять-таки на аппаратном уровне) на взаимодействие сегментов кода, данных и стека с различными уровнями привилегий.
Таким образом, в защищенном режиме перед использованием любой области памяти должна быть проведена определенная работа по инициализации соответствующего дескриптора. Эту работу выполняет операционная система или программа, сегменты которой также описываются подобными дескрипторами. Все дескрипторы собираются вместе в одну из трех таблиц:
-
глобальная таблица дескрипторов (Global Descriptor Table, GDT), адрес которой хранится в регистре GDTR; -
локальная таблица дескрипторов (Local Descriptor Table, LDT), ее адрес находится в регистре LDTR; -
таблица дескрипторов векторов прерываний (Interrupt Descriptor Table, IDT), ее адрес хранится в регистре IDTR.
В какую именно таблицу должен быть помещен дескриптор, определяется его назначением. Адрес, по которому размещаются эти дескрипторные таблицы, может быть любым; он хранится в специально предназначенном для этого системном РЕГИСТРЕ. Схемы, показанные на рис. 1.3, б и в, иллюстрируют принцип формирования адреса в защищенном режиме. Важно отметить изменение роли сегментных регистров. В защищенном режиме они содержат не адрес, а селектор, то есть указатель на соответствующую ячейку одной из таблиц дескрипторов ( GDTили LDT).
Задание 3. Ответить письменно (в файле-отчете) на ниже следующие вопросы письменно.
-
Как в защищенном режиме программа может обратиться по любому линейному адресу памяти?
Недостатки такой организации памяти:
-
сегменты бесконтрольно размещаются с любого адреса, кратного 16 (так как содержимое сегментного регистра аппаратно смещается на 4 разряда), и, как следствие, программа может обращаться по любым адресам, в том числе и реально не существующим; -
сегменты имеют максимальный размер 64 Кбайт; -
сегменты могут перекрываться с другими сегментами.
-
В каких пределах расположение сегмента можно задать в защищенном режиме?
В защищенном режиме размер сегмента не фиксирован, его расположение можно задать в пределах 4 Гбайт.
-
Каким образом удается сделать так, что сегменты неравноправны в правах доступа к ним?
Другой аспект защиты заключается в том, что сегменты неравноправны в правах доступа к ним. Информация об этом содержится в специальном байте AR, входящем в состав дескриптора. Тип сегмента определяют следующие элементы байта AR: поле DPL, биты R/W, C/ED и I. Поле DPL — часть механизма защиты по привилегиям. Суть его выражается тем, что конкретный сегмент может находиться на одном из четырех уровней привилегированности с номерами 0, 1, 2 и 3. Максимум поблажек предоставляется уровню 0. Существует ряд ограничений (опять-таки на аппаратном уровне) на взаимодействие сегментов кода, данных и стека с различными уровнями привилегий.
Таким образом, в защищенном режиме перед использованием любой области памяти должна быть проведена определенная работа по инициализации соответствующего дескриптора.
-
Что хранится в регистрах: GDTR, LDTR, IDTR?
Все дескрипторы собираются вместе в одну из трех таблиц:
-
глобальная таблица дескрипторов (Global Descriptor Table, GDT), адрес которой хранится в регистре GDTR; -
локальная таблица дескрипторов (Local Descriptor Table, LDT), ее адрес находится в регистре LDTR; -
таблица дескрипторов векторов прерываний (Interrupt Descriptor Table, IDT), ее адрес хранится в регистре IDTR.
Вывод: Во время практической работы, я приобрела навыки формирование физического адреса памяти в реальном и защищенном режимах