Сегментного способа организации виртуальной памяти

Поддержка сегментного способа организации виртуальной памяти

Как мы уже знаем, для организации эффективной и надежной работы вычис­лительной системы в мультипрограммном режиме необходимо иметь соответ­ствующие аппаратные механизмы, поддерживающие независимость адресных пространств каждой задачи и в то же время позволяющие организовать обмен данными и разделение кода. Для этого желательно выполнить следующие два требования:

106_______________ Глава 4. Особенности архитектуры микропроцессоров i80x86

— чтобы у каждого вычислительного процесса было собственное (личное, локаль­ное) адресное пространство, никак не пересекающееся с адресными простран­ствами других процессов;

— чтобы существовало общее (разделяемое) адресное пространство.

Для удовлетворения этих требований в микропроцессорах i80x86 реализован сегмен­тный способ распределения памяти. Помимо того в этих микропроцессорах может быть задействована и страничная трансляция. Поскольку для каждого сегмента ну­жен дескриптор, устройство управления памятью поддерживает соответствующую информационную структуру. Формат дескриптора сегмента приведен на рис. 4.3.

Первое (младшее) двойное слово дескриптора Рис. 4.3. Дескриптор сегмента

Поля дескриптора (базовый адрес, поле предела) размещены в дескрипторе не не­прерывно, а в разбивку, потому что, во-первых, разработчики постарались мини­мизировать количество перекрестных соединений в полупроводниковой структуре микропроцессора, а во-вторых, чтобы обеспечить полную совместимость 1 микро­процессоров (предыдущий микропроцессор i80286 работал с 16-разрядным кодом и тоже поддерживал сегментный механизм реализации виртуальной памяти). Не­обходимо заметить, что формат дескриптора сегмента, изображенный на рис. 4.3, справедлив только для случая нахождения соответствующего сегмента в опера­тивной памяти. Если же бит присутствия в поле прав доступа равен нулю (сегмент отсутствует в памяти), то все биты, за исключением поля прав доступа, считаются неопределенными и могут использоваться системными программистами (для ука­зания адреса сегмента во внешней памяти) произвольным образом.

Локальное адресное пространство задачи определяется через таблицу LDT (Local Descriptor Table). У каждой задачи может быть свое локальное адресное простран­ство. Общее, или глобальное, адресное пространство определяется через таблицу GDT (Global Descriptor Table). Само собой, что работу с этими таблицами (их заполнение и последующую модификацию) должна осуществлять операционная система. Дос­туп к таблицам LDT и GDT со стороны прикладных задач должен быть исключен.

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

1 Естественно, совместимость обеспечена только «снизу вверх», то есть программы, разработанные для предыдущих версий микропроцессора, должны выполняться на последующих без какой-либо переделки.

Адресация в 32-разрядных микропроцессорах j80x86_________________________ 107

операндов. Прежде всего, содержимое сегментных регистров начинает интерпрети­роваться иначе: считается, что там содержится не адрес начала, а номер соответству­ющего сегмента. Для того чтобы подчеркнуть этот факт, сегментные регистры CS, SS, DS, ES, FS, GS начинают даже называть иначе — селекторами сегментов. При этом каждый селекторный регистр разбивается на три поля (рис. 4.4).

— Поле индекса (Index) — старшие 13 битов (3-15) определяет собственно номер
сегмента (его индекс в соответствующей таблице дескрипторов).

— Поле индикатора таблицы сегментов (Table Index, TI) — бит с номером 2 опре­деляет часть виртуального адресного пространства (общее или принадлежащее только данной задаче). Если TI=0, то поле индекса указывает на элемент в глобальной таблице дескрипторов (GDT), то есть идет обращение к общей па­мяти. Если TI = 1, то идет обращение к локальной области памяти текущей за­дачи; это пространство описывается локальной таблицей дескрипторов (LDT).

— Поле уровня привилегий идентифицирует запрашиваемый уровень привилегий
(Requested Privilege Level, RPL).

Рис. 4.4. Селектор сегмента

Операционная система в процессе своего запуска инициализирует многие регист­ры, и прежде всего GDTR. Этот регистр содержит начальный адрес глобальной таблицы дескрипторов (GDT) и ее размер. Как мы уже знаем, в GDT содержатся дескрипторы глобальных сегментов и системные дескрипторы.

Читайте также:  Способы защиты прав граждан юридические гарантии прав граждан

Для манипулирования задачами операционные системы поддерживают информаци­онную структуру, которую мы уже раньше называли как дескриптор задачи (см. гла­ву 1). Микропроцессоры с архитектурой IA32 поддерживают работу с наиболее важной частью дескриптора задачи, которая меньше всего зависит от операционной системы. Эта инвариантная часть дескриптора, с которой и работает микропроцессор, названа сегментом состояния задачи (Task State Segment, TSS). Перечень полей TSS показан на рис. 4.5. Видно, что этот сегмент содержит в основном контекст задачи. Процессор получает доступ к этой структуре с помощью регистра задачи (Task Register, TR).

Регистр TR содержит индекс (селектор) элемента в GDT. Этот элемент представ­ляет собой дескриптор сегмента TSS. Дескриптор заносится в теневую часть реги­стра (см. рис. 4.2). К рассмотрению TSS мы еще вернемся, а сейчас заметим, что в одном из полей TSS содержится указатель (селектор) на локальную таблицу де­скрипторов данной задачи. При переходе процессора с одной задачи на другую содержимое поля LDTR заносится микропроцессором в одноименный регистр. Инициализировать регистр TR можно и явным образом.

Итак, регистр LDTR содержит селектор, указывающий на один из дескрипторов таблицы GDT. Этот дескриптор заносится микропроцессором в теневую часть ре­гистра LDTR и описывает таблицу LDT для текущей задачи. Теперь, когда у нас

108_______________ Глава 4. Особенности архитектуры микропроцессоров j80x86

определены как глобальная, так и локальная таблица дескрипторов, можно рас­смотреть процесс определения линейного адреса 1 . Для примера рассмотрим про­цесс получения адреса команды. Адреса операндов определяются по аналогии, но задействованы будут другие регистры.

Рис. 4.5. Сегмент состояния задачи

Микропроцессор анализирует бит TI селектора кода и, в зависимости от его значе­ния, извлекает из таблицы GDT или LDT дескриптор сегмента кода с номером (индексом), который равен полю индекса (биты 3-15 селектора на рис. 4.4). Этот дескриптор заносится в теневую (скрытую) часть регистра CS. Далее микропро­цессор сравнивает значение регистра EIP (Extended Instruction Pointer — расши­ренный указатель команды) с полем размера сегмента, содержащегося в извлечен­ном дескрипторе, и если смещение относительно начала сегмента не превышает размера предела, то значение EIP прибавляется к значению поля начала сегмента, и мы получаем искомый линейный адрес команды. Линейный адрес — это одна из форм виртуального адреса. Исходный двоичный виртуальный адрес, вычисляе-

1 В микропроцессорах i80x86 линейным называется адрес, полученный в результате преобразования виртуального адреса формата (S, d) в 32-разрядный адрес.

Адресация в 32-разрядных микропроцессорах i80x86_________________________ 109

мый в соответствии с используемой схемой адресации, преобразуется в линейный. В свою очередь, линейный адрес будет либо равен физическому (если страничное преобразование отключено), либо путем страничной трансляции преобразуется в физический адрес. Если же смещение из регистра EIP превышает размер сегмен­та кода, то эта аварийная ситуация вызывает прерывание, и управление должно передаваться супервизору операционной системы.

Рис. 4.6. Процесс получения линейного адреса команды

110_______________ Глава 4. Особенности архитектуры микропроцессоров j80x86

Рассмотренный нами процесс получения линейного адреса иллюстрирует рис. 4.6. Стоит отметить, что поскольку межсегментные переходы происходят нечасто, то, как правило, определение линейного адреса заключается только в сравнении значения EIP с полем предела сегмента и в прибавлении смещения к началу сег­мента. Все необходимые данные уже находятся в микропроцессоре, и операция получения линейного адреса происходит очень быстро.

Читайте также:  Способы лепки дымковских игрушек для

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

Дата добавления: 2016-09-20 ; просмотров: 990 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

Источник

Сегментного способа организации виртуальной памяти

Модуль 5. Управление основной памятью

Тема 10. Страничная организация. Сегментная организация. Странично-сегментная организация. Двухуровневая страничная организация

Динамическая страничная организация памяти — это страничная организация РОП с динамическим размещением страниц процессов по их запросам (Intel 386 – размер страницы 4 Кбайт)

  1. Допустимость максимального объема выполняющихся программ, простота их программирования.
  2. Значительное уменьшение временной фрагментации, максимальное использование РОП и максимальный уровень мультипрограммирования.
  1. Произвольное разбиение процесса на страницы плохо учитывает свойство локальности программ и не устраняет полностью временную фрагментацию, а также создает трудности совместного использования и защиты общих программ и данных.
  2. Сложность управления памятью, накладные расходы на хранение таблиц отображения страниц. При неоптимальных рабочих множествах страниц и размерах страниц возможна пробуксовка процессов («сплошной обмен»).

Для решения проблемы пробуксовки страниц важную роль играет не только стратегия выталкивания, но и размер страницы.

На выбор оптимального размера страницы влияют следующие факторы:

1.Малый размер приводит к увеличению таблицы отображения страниц, называемый табличной фрагментацией.

2.Большой размер страницы приводит к тому, что в ОП здесь помещены команды и данные, к которым не было обращений.

3.Ввод-вывод будет эффективен при больших размерах страниц.

4.Свойство локальности распространяется, как правило, на малые участки программ.

5.При малых размерах страниц потери на внутреннюю фрагментацию уменьшаются.

Вывод: необходимость небольших размеров страницы.

Экспериментальные результаты поведения программы в ВС со страничной организацией ВП показывают:

1.Когда процесс начинается выполняться, он обращается к большему проценту своих страниц.

2.При постоянном объеме выделенной ОП с увеличением размера страницы растет число прерываний по отсутствию нужной страницы.

3.С увеличением количества выделенных процессу блоков (страничных кадров) уменьшается число страничных прерываний, однако, когда процессу выделено достаточное число блоков, уменьшение прерываний стабилизируется (эффект насыщения).

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

В системе с сегментной организацией памяти снимается ограничение на фиксированный размер блока и выполняется соответствующее произвольное разбиение АП процесса на сегменты.

Сегмент — это единица логического разбиения программ (процедура, модуль, область данных), имеющая переменный размер и имя. Напомним, что страница — это физическая единица памяти.

Сегментная организация обеспечивает простое и естественное разделение общих сегментов между несколькими пользователями и защиту сегментов посредством связывания с ним прав доступа, подразделяющихся на:

и их различных комбинаций.

Для сегментной организации в таблице отображения сегментов с каждым сегментом связан дескриптор, который содержит адрес размещения сегмента в ОП, его длину и права доступа (ERWA), признак обращения к сегменту за последний интервал времени, а также признак присутствия в РОП. Если виртуальные адресные пространства нескольких процессов включают один и тот же сегмент, то в таблицах сегментов этих процессов делаются ссылки на один и тот же участок оперативной памяти, в который данный сегмент загружается в единственном экземпляре.

В сегментной организации все сегменты различного размера и могут размещаться в несмежных участках РОП.

1.Уменьшение временной фрагментации, так как естественно учитывается свойство локальности программ.

2.Легко совмещается с использованием общих процессов, поскольку данные и программа целиком находятся в одном блоке.

3.Возможность обеспечить четкое управление доступом к сегменту со стороны общих процессов и их полную защиту.

1.Более сложное управление и защита ОП. Здесь уже не достаточно пары граничных регистров, а необходимы ключи защиты индивидуальных сегментов памяти.

2.Может возникнуть временная фрагментация для больших размеров процедур и данных.

Как видно из названия, данный метод представляет собой комбинацию страничного и сегментного распределения памяти и, вследствие этого, сочетает в себе достоинства обоих подходов. Виртуальное пространство процесса делится на сегменты, а каждый сегмент в свою очередь делится на виртуальные страницы, которые нумеруются в пределах сегмента. Оперативная память делится на физические страницы. Загрузка процесса выполняется операционной системой постранично, при этом часть страниц размещается в оперативной памяти, а часть на диске. Для каждого сегмента создается своя таблица страниц, структура которой полностью совпадает со структурой таблицы страниц, используемой при страничном распределении. Для каждого процесса создается таблица сегментов, в которой указываются адреса таблиц страниц для всех сегментов данного процесса. Адрес таблицы сегментов загружается в специальный регистр процессора, когда активизируется соответствующий процесс.

Рисунок.6.3 Преобразование адреса страницы при чисто ассоциативном отображении.

Трехуровневая адресация использует две таблицы отображения (таблица сегментов + таблица страниц сегментов).

S номер сегмента; P номер страницы; d — смещение.

Динамическое управление адресами здесь выполняется более сложно в два этапа, и поэтому в таких системах применяется высокоскоростная ассоциативная память, по типу кэш-памяти.

Обычная адресуемая память — это память, к которой обращаются по адресу и выбирают значение.

Ассоциативная память — это параллельная память, к которой осуществляется одновременный доступ по всем ячейкам памяти по значению и выбирается в результате либо адрес соответствующей ячейки, либо связанные с этой ячейкой другие значения.

Достоинства странично-сегментной организации:

  1. Комбинированная организация эффективна для больших программ (процедур), имеющих свою локальность.
  2. Делает более эффективным коллективное использование общих (разделяемых) сегментов, так как строки различных таблиц сегментов будут указывать на одну таблицу страниц коллективно используемого сегмента.

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

Виртуальный адрес состоит также из трех компонентов (гиперстраница, страница, смещение).

  1. Сокращение объема памяти под таблицы страниц путем размещения в ОП только активных частей таблиц страниц.
  2. Появляется возможность моделировать сегментную организацию, то есть обеспечить эффективное разделение общих процедур и защиту процессов посредством более простой схемы адресации.

Пример: ЕС ЭВМ ряд 2 и IBM PC

Страницы 2 — 4 кб; гиперстраница 64 — 1024 кб

В общем случае информация постоянно находится на более низком уровне иерархической структуры памяти, а механизм управления иерархией обеспечивает передачу на верхний уровень наиболее вероятную для обработки информацию. В этом случае верхний уровень работает как КЭШ по отношению к нижнему уровню. Вначале идея рассматривалась только к памяти между ЦП и ОП, затем распространилась в общем смысле к иерархии памяти.

Источник

Оцените статью
Разные способы