adfun.ru
| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
Физическое адресное пространство большинства вычисли-
тельных машин организовано просто как массив байтов. С появ-
ления блоков управления памятью (БУП), архитектура машин ста-
ла различать физическое адресное пространство, реализуемое,
аппаратурой памяти и логическое адресное пространство, види-
мое программистом. Блок управления памятью транслирует логи-
ческие адреса программ в физические адреса, выдаваемые на
системную магистраль. В большинстве архитектур логическое ад-
ресное пространство задачи представляется как набор следующих
вариантов:
Байты логическое адресное простарнство состоит
из массива байтов, не имеющего определен-
ной структуры (такое адресное пространст-
во иногда называется "плоским" или "ли-
нейным"). Трансляция адреса в этом случае
не требуется, поскольку логический адрес
точно эквивалентен физическому.
Сегмент логическое адресное пространство состоит
из нескольких или большого числа сегмен-
тов, каждый из которых содержит перемен-
ное число байтов. Логический адрес разде-
лен на две части, номера сегмента и
сMещения внутри сегмента. Буп производит
трансляцию логического адреса в физичес-
кий.
Страницы логическое адресное пространство состоит
из большого числа страниц, каждая из ко-
торых включает в себя фиксированное число
байтов. Логический адрес состоит из номе-
ра страницы и смещения внутри страницы.
Буп производит трансляцию логического ад-
реса в физический.
Страничные логическое адресное пространство состоит
из сегментов,
сегменты которые в свою очередь, состоят из стра-
ниц. Логический адрес состоит из номера
сегмента и смещения внутри сегмента. Буп
производит трансляцию логического адреса
в номер страницы и смещение в ней, кото-
рые затем транслируются в физический ад-
рес.
Каждый из этих вариантов хорошо подходит для одних сис-
тем и мало пригоден для других. Например, линейное пространс-
тво вполне подходит для систем с простыми ветвлениями, в то
время как для систем, которые выполняют индивидуальное управ-
ление и защиту отдельных программных структур, больше подхо-
дит вариант с сегментацией памяти. В 80386 реализован вари-
ант, представляющий память как набор сегментов, которые по
желанию могут быть разделены на страницы. На практике архи-
тектура 80386 обеспечивает операционные сситемы любым из че-
тырех вариантов представления памяти.
3.3.1. Принцип трансляции адреса
Принцип трансляции логического адреса в физический в
процессоре 80386 иллюстрируется на рис.3-3. Последователь-
ность операций, показанная на рис.3-3, является центральной
как для адресации, так и для защиты. Здесь она рассматривает-
ся в схематичной форме с целью дать ясное общее представление
о ней прежде, чем перейти к рассмотрению таких свойств, как
виртуальная память и защита.
В последующих разделах будут подробно рассмотрены раз-
личные этапы трансляции адреса и будет показано, как они мо-
гут быть приспособлены под требования конкретной системы.
Как показано в предыдущей главе, способы адресации памя-
ти 80386 дают 32-битное смещение искомого операнда. Совместно
с селектором сегмента это смещение образует составной логи-
ческий адрес: селектор этого адреса идентифицируетискомый
сегмент, а смещение указывает на операнд в сегменте. В боль-
шинстве команд селектор задается неявно как содержимое сег-
ментного регистра.
ЙНННННННННННН»
є Таблицы є
єдескрипторовє
ИНННННЛННННННј
логический адрес є линейный адрес
ЙННННННННЛНННННННН» ЙННННННННКН» ЙНННННННН» ЙНН»
єселекторєсмещениеМН>єтрансляцияМННН>є МНН№ МННННЛН»
ИННННННННКННННННННј є сегмента є ИННННННННј ИННј є є
47 31 0 ИННННННННННј 31 0 запрет є є
страницє є
ЙНННННННННННННННННННННННННННННННННННННННННННј є
є ЙННННННННННННННј
є ЙННННННННННН» є 31 0
є є таблицы є є ЙННННННННННН»
є є страниц є >НН№ физ.адрес є
є ИНННННЛНННННј є ИНННННННННННј
є є ИНННННННННННННН»
31 є 0 є 31 0 є
ЙННННКНННННН» ЙННННННКННННН» ЙННННННННН» є
є МННН>є МННННННН>є МНј
ИНННННННННННј ИННННННННННННј ИНННННННННј
линейный адрес трансляция страницы физический адрес
Селектор представляет собой индекс в таблице дескрипто-
ров сегментов, т.е. это поле содержит номер сегмента. Каждый
элемент таблицы дескрипторов сегментов содержит базовый адрес
сегмента. Процессор добавляет к нему смещение и получает
32-битный линейный адрес. Если страницы не разрешены, процес-
сор считает, что линейный адрес является физическим, и выдает
его на адрсные выводы.
Если страницы разрешены, то 80386 транслирует линейный
адрес в физический. Это делается с помощью страничных таблиц.
Страничная таблица по своей организации аналогична таблице
дескрипторов, за исключением того, что каждый элемент стра-
ничной таблицы содержит физический базовый адрес страницы
4кбайт.
Поскольку способы адресации 80386 охватывают как тради-
ционные элементы структурного деления адресного пространства
(сегменты, и дополнительно, страницы) и поскольку сегменты
могут быть очень большими (до 4 гбайт), то эти способы адре-
сации оказываются очень гибкими. Таким образом, операционная
система может дать задаче одно линейное адресное пространст-
во, линейное адресное пространство из страниц, адресное прос-
транство из сегментов или сегментированное адресное простран-
ство со страничным делением.
По всей своей гибкости многоступенчатая трансляция адре-
са в 80386 выполняется достаточно быстро. Типичное время вы-
числения смещения и трансляции логического адреса в физичес-
кий состовляет 1,5 такта. Более того, время трансляции адреса
незаметно для программы, поскольку внутренний БУП 80386 тран-
слирует адрес параллельно с другими операциями процессора
(кроме случаев, когда команды перехода или вызова временно
прерывают совмещенное выполнение операций).
3.3.2. Сегменты
Сегмент является единицей логического пространства,
представляемого процессором задаче, т.е. логическое адресное
пространство задачи состоит из одного или нескольких сегмен-
тов. Операционные системы существенно отличаются друг от дру-
га по способу определения логического адресного пространства
задачи. Например, система реального времени с ветвлениями мо-
жет определить логическое адресное пространство как единое
целое, совместно используемое всеми задачами и самой операци-
онной системой, другими словами один сегмент коллективно ис-
пользуется всей системой. В другом крайнем случае система мо-
жет распределить каждую структуру данных и процедуру по своим
сегментам, вследствии чего логическое адресное пространство
задачи предстанет в виде десятков или сотен адресных прост-
ранств, каждое из которых будет соответствовать своей струк-
туре данных или процедуре. Между этими крайними случаями ока-
зывается универсальная система с разделением времени, в кото-
рой задачи выполняются в отдельных логических адресных прост-
ранствах, и в которых программы задач отделены от их данных,
а прикладные программы и данные отделены от программы и дан-
ных операционной системы. Свойство сегментации в процессоре
80386 достаточно гибкое, и может обеспечить каждый из этих
примеров, как и любые другие.
Как уже было показано в главе 2, команда 80386 ссылается
на операнд в памяти с помощью составного логоческого адреса,
состоящего из селектора сегмента и смещения внутри сегмента.
В принципе 80386 транслирует логический адрес в линейный с
помощью селектора, указывающего на дескриптор сегмента в таб-
лице дескрипторов. Дескриптор содержит базовый адрес сегмента
в линейном адресном пространстве, добавление смещения к базо-
вому адресу дает линейный адрес операнда. На практике транс-
ляция логического адреса в линейный оптимизирована с помощью
неявного указания на селекторы и хранения дескрипторов в ре-
гистрах. Поэтому обращение к таблице дескрипторов производит-
ся толькодля тех команд, которые загружают новые селекторы в
сегментные регистры (например, вызов процедуры из другого
сегмента приводит к замене селектора в регистре CS). Хотя на
практике это бывает редко, тем не менее удобнее представлять
трансляцию процессором логического адреса как обращение к
дескрипторам в таблицах дескрипторов сегментов, поскольку от-
сюда следует, что именно дескрипторы в таблицах дескрипторов
сегментов задачи определяют логическое адресное пространство
задачи. Без дескриптора задача не в состоянии сгенерировать
линейные адреса.
Таблица дескрипторов сегментов представляет собой массив
дескрипторов, на рис.3-4 дан логический формат дескриптора.
Поле базового адреса уже рассматривалось выше. Поле предель-
ного размера определяет длину сегмента, 80386 использует поле
предельного размера для проверки правильности величины смеще-
ния в логическом адресе, а именно, что оно попадает внутрь
сегмента. Аттрибуты сегмента, в основном, относятся к защите
и будут рассмотрены далее в этой главе.
атрибуты
признак последнего обращения ННННННННННННННННННННН»
права ННННННННННННННННННННННННННННННННННННННННН» є
тип НННННННННННННННННННННННННННННННННННННННН» є є
привилегия НННННННННННННННННННННННННННННН» є є є
признак присутствия НННННННННННННННННН» є є є є
є є є є є
ЙНКЛНКЛНКЛНКЛНК»
є є є є є є
ЙНННННННННННННННКННКННКННКННКНН№
є предельный размер є
МНННННННННННННННННННННННННННННН№
є базовый адрес є
ИННННННННННННННННННННННННННННННј
Каждая задача может иметь системное и индивидуальное ло-
гическое адресное пространство. Эти пространства описываются,
|
adfun.ru
|
|
|
|