Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОС_ответы.doc
Скачиваний:
35
Добавлен:
27.10.2018
Размер:
21.59 Mб
Скачать

21. Формування фізичної адреси з логічної у реальному режимі.

В реальном режиме 32-х битный указатель называется реальным адресом (16 бит – сегмент, 16 бит – смещение). Формирование физического адреса можно представить в виде следующей структуры.

Селектор умножается на 16, определяя 20-битный базовый адрес, путем дополнения справа нулей (4 бита). После этого к базовому адресу прибавляется 16-битное смещение (с дополнением слева нулей, так же 4 бита). В результате получается 20-битный физический адрес. 16-битный селектор и смещение допускают 216х216 бит, однако реальное адресное пространство составляет 220 бит.

Если же используются процессоры i80286, i80386 или i80486, физическая шина адреса шире 20 бит. Для процессора i80286 шина адреса имеет ширину 24 бита, а для процессоров i80386 и i80486 – 32 бита. При работе в реальном режиме используются младшие 20 адресных линий – от A0 до A19, остальные адресные линии аппаратура компьютера блокирует.

Однако есть возможность снять блокировку с адресной линии A20. При этом в реальном режиме появляется ещё один "льготный" сегмент памяти, лежащий выше границы первого мегабайта. Этот сегмент называется областью старшей памяти (High Memory Area). Ему соответствует диапазон логических адресов от FFFFh:0010h до FFFFh:FFFFh. Размер области старшей памяти составляет 64 килобайта без 16 байт.

Выделим два основных недостатка схемы адресации памяти реального режима:

  • ограниченное адресное пространство (до 1 мегабайта плюс примерно 64 килобайта старшей области памяти для процессоров i80286, i80386 и i80486);

  • свободный доступ для любых программ к любым областям данных, что представляет потенциальную опасность для целостности операционной системы.

Этих недостатков полностью лишена схема адресации памяти, которая используется в защищённом режиме.

22. Формування фізичної адреси з логічної у 386 захищеному режимі.

Процессор i80386 в защищённом режиме использует трёхступенчатую схему преобразования адреса.

Программы используют логический адрес, состоящий из селектора и смещения (аналогично процессору i80286). Селектор полностью аналогичен используемому в процессоре i80286. Компонента смещения является 32-разрядной, т.к. допустимый размер сегмента значительно превышает 64 килобайта.

Уровень логического адреса - это первая ступень в схеме преобразования адресов.

Вторая ступень - получение из логического адреса 32-разрядного линейного адреса. Линейный адрес берётся из глобальной или локальной таблицы дескрипторов (GDT или LDT) в зависимости от соответствующего бита селектора (бит 2). Механизм получения линейного адреса напоминает механизм получения 24-разрядного физического адреса в процессоре i80286. Однако линейный адрес не отображается непосредственно на адресную шину памяти, то есть он не является физическим адресом.

Для получения из линейного адреса физического адреса используется третья ступень - механизм страничной адресации. С помощью этого механизма 20 старших бит линейного адреса используются для выбора блока памяти размером 4 килобайта. Такой блок называется страницей физической памяти. Оставшиеся 12 бит линейного адреса представляют собой смещение внутри страницы.

Процесс преобразования логического адреса в линейный иллюстрируется рис. 17.

Рис. 17. Преобразование логического адреса в линейный.

Значение из поля индекса селектора используется в качестве индекса в таблице LDT или GDT для выборки 32-разрядного базового адреса. Этот базовый адрес складывается со второй компонентой логического адреса - смещением. В результате получается 32-разрядный линейный адрес.

Преобразование линейного адреса в физический иллюстрируется рис. 18.

Рис. 18. Преобразование линейного адреса в физический.

Процесс вычисления адреса страницы часто называют трансляцией страниц. Старшие 10 бит линейного адреса используются как индекс в таблице, называемой каталогом таблиц страниц. Расположение каталога таблиц страниц в физической памяти определяется содержимым системного регистра процессора CR3.

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

Следующие 10 бит линейного адреса предназначены для индексации таблицы страниц, выбранной с помощью старших 10 бит адреса. Таблица страниц содержит 1024 дескриптора, определяющих физические адреса страниц памяти. Размер одной страницы составляет 4 килобайта, т.е. 4096 байт.

Младшие 12 бит линейного адреса указывают смещение к адресуемому байту внутри страницы.

На рис. 19 представлен формат дескриптора таблицы страниц.

Рис. 19. Дескриптор таблицы страниц.

Для представления старших 20 битов физического адреса таблицы страниц в дескрипторе используются биты 12-31. Младшие 12 битов адреса таблицы всегда равны нулю, таким образом, таблица страниц должна быть выровнена в памяти на границу 4096 байт (на границу страницы).

Формат дескриптора страницы представлен на рис. 20.

Рис. 20. Дескриптор страницы.

Биты 12-31 в дескрипторе страниц указывают старшие 20 бит физического адреса страницы. Младшие 12 бит адреса страницы всегда равны нулю.

Назначение бит 0-11 одинаково и для дескриптора таблицы страниц, и для дескриптора страницы.

Форматы дескрипторов, располагающихся в таблицах GDT, LDT и IDT претерпели изменения по сравнению с используемыми в процессоре i80286. Например, вместо 24-битового физического адреса в дескрипторах должен находиться 32-битовый линейный адрес.