Файл: Отчет По практическому занятию 1 Дисциплина мдк 01. 01 Системное программирование Выполнил студент 3.docx
Добавлен: 29.10.2023
Просмотров: 77
Скачиваний: 1
Практическое занятие 1. Формирование физического адреса памяти в реальном и защищенном режимах процессора
Формирование физического адреса в реальном режиме
Ниже перечислены характеристики механизма адресации физической памяти в реальном режиме.-
Диапазон изменения физического адреса — от 0 до 1 Мбайт. Эта величина определяется тем, что шина адреса i8086 имела 20 линий. -
Максимальный размер сегмента — 64 Кбайт. Причина ограничения в 16-разрядной архитектуре i8086. Нетрудно подсчитать, что максимальное значение, которое могут содержать 16-разрядные регистры, составляет 216 – 1, что применительно к памяти и определяет величину 64 Кбайт. -
Для обращения к конкретному физическому адресу оперативной памяти необходимо определить адрес начала сегмента (сегментную составляющую) и смещение внутри сегмента.
физического адреса некоторого объекта в памяти, то он представляет собой 16-разрядное значение. Это значение может содержаться явно в команде либо косвенно в одном из регистров общего назначения. Процессор самостоятельно складывает обе составляющие, в результате получается физический адрес памяти размерностью 20 бит. Данный механизм образования физического адреса позволяет сделать программное обеспечение перемещаемым, то есть независящим от конкретных адресов загрузки его в оперативной памяти (рис. 1.4).
Рис. 1.4. Механизм формирования физического адреса в реальном режиме
На рисунке хорошо видно, как формируется некоторый целевой физический адрес: сегментная часть извлекается из одного из сегментных регистров, сдвигается на четыре разряда влево и суммируется со смещением. В свою очередь, видно, что значение смещения можно получить минимум из одного и максимум из трех источников: из значения смещения в самой машинной команде и/или из содержимого одного базового и/или одного индексного регистра. Количество источников, участвующих в формировании смещения, определяется кодированием конкретной машинной команды, и если таких источников несколько, то значения в них складываются. В заключение заметим, что не стоит волноваться из-за несоответствия размеров шины адреса процессора i486 или Pentium (32 бита) и 20-разрядного значения физического адреса реального режима. Пока процессор находится в реальном режиме, старшие 12 линий шины адреса попросту недоступны, хотя при определенных условиях и существует возможность работы с первыми 64 Кбайт оперативной памяти, лежащими сразу после первого мегабайта.
Недостатки такой организации памяти:
-
сегменты бесконтрольно размещаются с любого адреса, кратного 16 (так как содержимое сегментного регистра аппаратно смещается на 4 разряда), и, как следствие, программа может обращаться по любым адресам, в том числе и реально не существующим; -
сегменты имеют максимальный размер 64 Кбайт; -
сегменты могут перекрываться с другими сегментами.
Желанием ввести в архитектуру средства, позволяющие избавиться от указанных недостатков, и обусловлено, в частности, появление защищенного режима, в котором работают все современные операционные системы, в том числе Windows и Linux.Например, пусть у нас есть логический адрес 1234h:0123h. Сегментная компонента равна 1234h, компонента смещения - 0123h. Вычислим физический адрес, соответствующий нашему логическому адресу:
-
расширяем до 20 бит сегментную компоненту, дописывая справа 4 нулевых бита, получаем число 12340h; -
расширяем до 20 бит компоненту смещения, дописывая слева 4 нулевых бита, получаем число 00123h; -
для получения физического адреса складываем полученные числа: 12340h + 00123h = 12463h.
| Для своего варианта (номер по журналу) вычислите физические адреса для указанных трех логических адресов. | |||
| Вариант | Физический адрес | Физический адрес | Физический адрес |
| 2 | 2F3EH | 5EF3H | c3F3H |
| | 2+17+3+16H | 5+16+17+3H | 14+3+17+3H |
| | 19+19H | 21+20H | 17+20H |
| | 38H | 41H | 37H |
| | | 38H+41H | 37H+79H |
| | | 79H | 116H |
| ИТОГО | 116H | ||
1F34H:012BH. Вычислите физический адрес, соответствующий этому логическому адресу.
| Для своего варианта (номер по журналу) вычислите физические адреса для указанных трех логических адресов. | |||
| Вариант | Логический адрес | Логический адрес | Логический адрес |
| 1 | 2F3EH:01ABH | 5EF3H:5DB1H | c3F3H:5DB1H |
| | 2+17+3+16H 1+12+13H | 5+16+17+3H 5+15+13+1H | 14+3+17+3H 5+15+13+1H |
| | 19+19H 13+13H | 21+20H 20+14H | 17+20H 20+14H |
| | 38H 26H | 41H 34H | 37H 34H |
| | 1.4H | 1.2H | 1.08H |
Формирование физического адреса в защищенном режиме
Основная идея защищенного режима — оградить исполняемые процессором программы от взаимного влияния. В защищенном режиме процессор реализует различные механизмы безопасности. В контексте нашего изложения интерес представляет защита по доступу к памяти. Для введения любого охранного механизма нужно иметь как можно больше информации об охраняемых объектах. Для процессора такими объектами являются исполняемые им программы. Организуя защиту программ по доступу к памяти, фирма Intel не стала нарушать принцип сегментации, свойственный ее процессорам. Так как каждая программа занимает один или несколько сегментов в памяти, то логично иметь больше информации об этих сегментах, как об объектах, реально существующих в данный момент в вычислительной системе. Если каждому из сегментов присвоить определенные атрибуты, то часть функций по контролю за доступом к ним можно переложить на процессор. Что и было сделано. Любой сегмент памяти в защищенном режиме имеет следующие основные атрибуты:-
расположение сегмента в памяти; -
размер; -
уровень привилегий (определяет права данного сегмента относительно других сегментов); -
тип доступа (определяет назначение сегмента).
-
LIMIT_1 и LIMIT_2 — 20-разрядное поле, определяющее размер сегмента; -
BASE_1 И BASE_2 — 32-разрядное поле, содержит значение линейного адреса начала сегмента в памяти; -
AR — байт, поля которого определяют права доступа к сегменту; -
D — бит разрядности операндов и адресов; -
G — бит гранулярности.