 |
соответственно глобальной таблицей дескрипторов (GDT) и ло-
кальной таблицей дескрипторов (LTD). (В селекторе имеется
бит, связывающий его с той или иной таблицей). Эти таблицы
дескрипторов могут содержать максимум 8192 дескриптора и сов-
местно они определяют логическое адресное пространство зада-
чи. Это означает, что для того, чтобы новый сегмент мог адре-
соваться задачей, операционная система должна внести новый
дескриптор этого сегмента либо в GDT, либо в LDT задачи. В
системах с защитой GDT и LDT могут быть сделаны привилегиро-
ванными структурами так, что изменения в них сможет произво-
дить толцко операционная система.
Операционная система из ее названия, глобальная таблица
дескрипторов доступна всем задачам, обычно операционные сис-
темы заносят дескрипторы системных сегментов в GDT. Кодовый
сегмент (или сегменты) операционной системы является хорошим
примером сегмента, который должен быть доступным всем зада-
чам, и дескриптор которого обычно находится в GDT. В противо-
положность этому каждая задача может иметь свою локальную
таблицу дескрипторов. Процессор поддерживает адрес LDT теку-
щей задачи в своем регистре локальной таблицы дескрипторов
(LDTR), однако он перезагружает этот регистр (так же, как он
перезагружает свои общие и сегментный регистры) новым значе-
нием TSS при смене задач.
Задачи могут делить одни сегменты в следующух случаях
(см.Рис.3-5):
1. Сегмент, дескриптор которого находится в GDT, являет-
ся общим для всех задач.
2. Задачи, имеющие общую LDT, имеют и общие сегменты,
описываемые этой LDT, такой подход допустим в случае
тесно взаимодействующих задач.
3. Дескрипторы в различных LDT могут указывать на один о
тот же сегмент, такие дескрипторы называются псевдои-
менами. Использование псевдоимени позволяет задачам
иметь общим только один сегмент, а не все сегменты,
определенные таблицей дескрипторов.
3.3.3. Страницы
Независимо от того, содержит ли логическое адресное
пространство задачи один или много сегментов, операционная
система может разделить линейное адресное пространство на
страницы. С точки зрения операционной системы страницы явля-
ются удобными элементами для распределения и перераспределе-
ния памяти, поскольку они все имеют одинаковый размер. Стра-
ницы также являются средством защиты частей больших сегментов
и, что особенно важно, обеспечивают удобный способ организа-
ции виртуальной памяти. Указанные применения страничной орга-
низации памяти обсуждаются ниже.
Страница в 80386 имеет длину 4к байт. Этот размер нахо-
дится в согласии с промышленной тенденцией к увеличению длины
страниц и ведет к увеличению производительности по двум нап-
равлениям.
Во-первых, он обеспечивает хорошее отношение показаний
страниц в кэш при данном объеме кэш-памяти, которая может
быть в настоящее время реально размещена на кристалле, исходя
из достигнутого уровня технологии. (Кэш-память 80386, распо-
ложенная на кристалле, описывается кратко). Во-вторых, 4к
байтов являются эффективным размером блока для дисковых пере-
дач. Большинство операционных систем, работающих на машинах с
меньшей длиной страницы, должны группировать страницы в
"кластеры", чтобы сократить количество дисковых передач.
Операционная система 80386 включает страничный механизм,
устанавливая бит PG в управляющем регистре 0 при помощи при-
вилегированной команды. Когда страничный механизм включен,
процессор транслирует линейный адрес в физический адрес, ис-
пользуя страничные таблицы. Страничные таблицы являются
частью таблиц дескрипторов сегментов. Так же как таблицы дес-
крипторов сегментов задачи определяют ее логическое адресное
пространство, страничные таблицы задачи определяют ее линей-
ное адресное пространство. Аналогично супер-мини-эвм и боль-
шим эвм страничные таблицы 80386 организованы по принципу
двухуровневой иерархии, как показано на рис.3-6. Каждая заад-
ча может иметь справочник системных таблиц. Системный регистр
CR3 процессора 80386 (база справочника системных таблиц) ука-
зывает на справочник страничных таблиц работающей задачи.
Процессор обновляет регистр CR3 при каждом переключении зада-
чи, получая новый адрес задачи из TSS новой задачи. Справоч-
ник страничных таблиц имеет длину, равную одной странице и
содержит элементы страничной таблицы описывают 1024 страницы.
Таким образом, кацдая страничная таблица описывает 4м байта,
а оглавление может описать до 4г байт - максимальное адресное
пространство.
На рис.3-6 в функциональных обозначениях показано как 80
786 транслирует линейный адрес в физический адрес, если стра-
ничная адресация включена. Процессор использует старшие 10
бит линейного адреса как индекс в оглавлении. Выбранный эле-
мент оглавления содержит адрес страничной таблицы. Процессор
добавляет средние 10 бит линейного адреса к адресу страничной
таблицы, чтобы найти элемент страничной таблицы, который опи-
сывает необходимую страницу. Добавляя младшие 12 бит линейно-
го адреса к адресу начала страницы, процессор получает
32-битный физический адрес.
Для того, чтобы сократить накладные расходы, возникшие
от поиска в страничных таблицах, 80386 помещает справочную
информацию о 32-х последних страницах, использовавшихся им, в
специальную быструю память (кэш), находящуюся внутри самого
микропроцессора. Эта память называется перекодированным буфе-
ром просмотра исключений (TLB). Только в том случае, если
процессор не находит справочной информации для страницы в
TLB, он обращается к справочникам и страничным таблицам, на-
ходящимся в памяти. Как правило, 98-99% адресных ссылок попа-
дают в TLB, не требуя обращений к основной памяти для транс-
ляции. Когда необходимой информации в TLB не оказывается,
процессор заменяет наиболее старый элемент TLB новым элемен-
том. Принцип локальности ссылок предполагает, что новый эле-
мент скорее всего будет использоваться в будещем.
Поскольку включение старничного механизма не увеличивает
времени трансляции адреса, оно мало влияет на время исполне-
ния команды только при непопаданиях в TLB.
На рис.3-7 показаны основные поля элемента страничной
таблицы (PTE). Элементы справочника страничных таблиц иден-
тичны показанному за тем исключением, что поле адреса расс-
матривается как физический адрес страничной таблицы, а не ад-
рес страницы.
атрибуты
присутствие ННННННННННННННННННННННННННННННННННННН»
права ННННННННННННННННННННННННННННННННННННННН» є
привилегии НННННННННННННННННННННННННННННН» є є
было обращение НННННННННННННННННННННН» є є є
была запись ННННННННННННННННННННН» є є є є
определяется пользователем НН» є є є є є
V V V V V V
ЙННННННННННННННННННННННННННННННННННННЛНННЛНННЛНННЛНННЛНННЛНН»
є адрес страницы є є є є є є є
ИННННННННННННННННННННННННННННННННННННКНННКНННКНННКНННКНННКННј
Задачи могут совместно пользоваться отдельными страница-
ми или целыми страничными таблицами. Элементы 1 различных
страничных таблиц, указывающие на одну и ту же страницу , яв-
ляются синонимами один для другого, также как дескрипторы с
теми же самыми адресами являются синонимами друг для друга.
В двух уровневой структуре страничных таблиц процессора
80786 легче разделять страницы между задачами путем разделе-
ния целой страничной таблицы. Поскольку адрес разделяемой
страницы в этом случае находится в одной страничной таблице,
операционной системы необходимо изменить только один элемент
страничной таблицы, когда она перемещает эту страницу.
3.3.4. Виртуальная память
Виртуальная память позволяет очень большим программам
или группам работать в значительно меньшем объеме физической
памяти без использования техники оверлеев. Системы с вирту-
альной могут основываться или на сегментах, или на страницах.
В обоих случаях основная идея виртуальной памяти состоит в
том, чтобы использовать значительно более дешевую дисковую
память вместо полупроводниковой памяти. Операционная система
в случае с виртуальной памятью запоминает все сегменты или
страницы в большой области дисковой памяти, называемой часто
"областью обмена". Значительно меньшая физическая (реальная)
память содержит только наиболее часто используемые сегменты
или страницы. До тех пор, пока сегменты или страницы запом-
ненные на диске, используются нечасто, система с виртуальной
памятью будет вести себя также хорошо, как и система со зна-
чительно большей оперативной памятью, но за значительно мень-
шую цену. Ключевые архитектурные свойства, необходимые для
эффектовного использования виртуальной памяти, перечисляются
ниже:
- бит для каждого сегмента или старницы, который говорит
процессору (или устройству управления памятью), имеется ли
данный сегмент или страница в памяти, или необходимо загру-
зить его (ее) с диска;
- механизм ловушки или особого прерывания, при помощи
которого процессор может указать операционной системе о необ-
ходимости загрузки в память отсутствующего сегмента или стра-
ницы;
- перезапускаемые команды, которые позволяют процесору
выбирать заново команду после того,как операционная система
загрузила только что неприсутствующую страницу в память и по-
метила ее присутствующей.
Процессор 80786 имеет все эти необходимые свойства, а
также другие, которые улучшают эффективность механизма управ-
ления виртуальной памятью. Как дескрипторы, так и элементы
старничных таблиц имеют бит присутствия и поэтому могут быть
использованы как основа для построения виртуальной памятью.
Обмен сегментами между памятью и диском являются разумным
подходом, когда сегменты относительно малы, как это было в
16-битных архитектурах. Когда сегменты могут быть очень вели-
ки, как это возможно в 80786, обмен страницами обычно являет-
ся более эффективным приемом благодаря фиксированному размеру
страниц. В страничных системах операционная система распреде-
ляет и освобождает память элементами размером со страницу,
называемыеми старничными кадрами; старница , загружаемая с
диска, будет подходить любому имеющемуся кадру. Поскольку
большинство из 32-битных систем с виртуальной памятью основы-
вается на механизме страниц, оставшаяся часть этого раздела
описывает страничный виртуальный механизм 80786.
В общем случае операционная система со страничной вирту-
альной памятью пересылает отсутствующие страницы с диска в
старничные кадры по запросам, т.е. когда она будет оповещена
процессором, что команда обращается к отсутствующей странице.
Когда количество свободных кадров становится маленьким, опе-
рационная система также передает страницы из страничных кад-
ров на диск, пытаясь изъять те страницы, которые вряд ли бу-
дут использованы в ближайшем будущем. Путем такого "прозрач-
ного" обмена старницами между страничными кадрами и диском
операционная система создает у прикладного программного обес-
|