Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТСИС.doc
Скачиваний:
170
Добавлен:
11.05.2015
Размер:
1.18 Mб
Скачать

31. Режимы работы процессора Intel, rm, vm, pm, smm.

Режимы работы процессора Intel

Real address mode - режим реального адреса. Однозадачность, отсутствие защиты и страничной организации.

Protected mode - защищенный режим. Многозадачность. Механизм защиты на уровне сегментов. Поддержка подкачки страниц (paging).

SMM (System Management mode) – режим управления системой. Инициируется аппаратно. Используется для реализации системы управления энергосбережением.

«Виртуальный режим» (V86)

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

Сегментные регистры

CS – Code Segment Register

DS – Data Segment Register

SS – Stack Segment Register

ES – Extra Segment Register

FS – Data Segment Register

GS – Data Segment Register ES, FS, GS – extension data segment registers

32. Сегментная и страничная организация доступа к памяти.

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

Сегментная организация памяти

Первым из разрывных методов был предложен сегментный. При этом программа разбивается на части – сегменты, и уже каждой такой части выделяют физическую память. Обращение к элементам программы логически представляет собой указание сегмента и смещения относительно начала этого сегмента. А физически имя сегмента соответствует базовому адресу, а смещение – добавка к нему. Преобразование номера сегмента в его порядковый номер (виртуальный адрес) производит система программирования, а при размещении программы ОС получит его фактическое значение, как базовый адрес. Каждый размещаемый сегмент имеет дескриптор сегмента, на который указывает регистр в таблице сегментов и в котором отмечается текущее положение сегмента. Если он находится в оперативной памяти, то «бит присутствия» present устанавливается в логическую 1.

Диспетчер памяти записывает начальный адрес размещения сегмента в поле «адрес» дескриптора, а в поле «длина сегмента» указывает количество адресуемых ячеек сегмента. Эта информация используется для размещения сегментов без наложения, а также для контроля обращения кода задачи за пределы текущего сегмента (таким образом контролируется нарушение адресации). Если же сегмент находится во внешней памяти, то бит present устанавливается в логический 0, а поля адреса и длины используются для указания его координат во внешней памяти (начальной дорожки и количества секторов).

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

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

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

– FIFO (first in – first out) первым пришёл – первым выбывает;

– LRU (least recently used) последний, из недавно использованных или, другими словами, дольше всех не используемый;

– LFU (least frequently used) используемый реже всех;

– Random случайный выбор.

Первая и четвертая дисциплины наиболее просты, но они не учитывают нужность выгружаемого сегмента для программы (частоту использования).

Алгоритм FIFO производит выбор сегмента по времени, прошедшем с момента размещения сегмента в оперативной памяти, но не учитывает фактическое использование сегментов. Это может привести к ситуации, когда только выгруженный сегмент снова потребуется программе. Поэтому, более оптимальными являются дисциплины LRU и LFU.

Для реализации алгоритмов замещения LRU и LFU требуются дополнительные аппаратные средства, позволяющие учитывать интенсивность использования сегмента (например, бит активного состояния или бит обращения; периодически ОС анализирует эти данные и определяет активность сегментов). При данном виде распределения памяти (разрывном и сегментном) реализуется мультипрограммный режим работы, но появляется проблема защиты памяти. Чтобы приложения не испортили саму ОС и друг друга необходимо, чтобы модификация таблиц сегментов была доступна только ОС. Для этого код ОС должен выполняться в привилегированном режиме, позволяющем манипулировать с дескрипторами сегментов. А выход за пределы сегмента обычной программы должен вызывать прерывание по защите памяти.

Недостатками сегментного подхода организации памяти являются:

– длительность доступа к искомой ячейке: сначала нужно найти и прочитать дескриптор сегмента (эти данные используются для нахождения сегмента в физическом адресном пространстве, а затем ячейки в пределах сегмента). Для уменьшения этого времени применяется копирование дескрипторов в сверхоперативной памяти;

– фрагментация оперативной памяти.

Этот подход был использован в OS/2 первого поколения.

Страничная организация памяти

При страничном подходе программа разбивается на одинаковые фрагменты за исключением, возможно, последнего. Для размещения фрагментов программы создаются одинаковые единицы памяти – страницы. Программа разбивается на виртуальные страницы, а память – на физические. Часть виртуальных страниц размещается в ОП, часть – во внешней памяти. Последние составляют страничный файл или файл подкачки. Размер страницы обычно кратен степени двойки (4К = 212). При этом вместо одномерного пространства адресов можно говорить о двумерном – номер страницы p и номер ячейки внутри страницы i. Полный адрес определяется суммой адресов страницы и ячейки.

Для отображения виртуального адреса на физическую память для каждой задачи нужно иметь таблицу страниц. Описание страниц производится созданием дескриптора страницы. Он отличается от дескриптора сегмента отсутствием поля «длина» (причина понятна, т.к. все страницы нормированы, имеют одинаковую длину). Идентификатором виртуальной страницы является её номер в таблице дескрипторов. Местонахождение страницы в физическом адресном пространстве, как и ранее, определяется «битом присутствия». Механизм трансляции виртуального адресного пространства на физическую память иллюстрируется рис. 11.

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

При несовпадении фактического уровня доступа с разрешённым происходит прерывание программы по защите памяти.

При обращении к странице, расположенной во внешней памяти, возникает прерывание, управление передаётся диспетчеру памяти, который должен найти свободное место. При его отсутствии по одной из дисциплин замещение (FIFO, LRU, LFU, Random) определяется замещаемая страница, на место которой будет размещена вызываемая.

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

Наиболее эффективной дисциплиной замещения страниц считается LRU, т.е. удаление страницы, неиспользуемой дольше других по длительности (OS/2, Linux). В ОС Windows NT используется FIFO.

Основным достоинством страничного подхода распределения памяти является практическое отсутствие фрагментации: на каждую задачу может приходиться лишь по одной не полностью заполненной странице (последней): ~4К при объемах памяти в единицах Гигабайт.

Недостатками этого способа являются:

− существенные накладные расходы − таблицы страниц нужно также размещать в памяти и обрабатывать их;

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

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

Сегментно-страничная организация памяти

Суть данного подхода состоит в следующем. Программа разбивается на логически законченные части − сегменты, каждый из которых размещается на некотором (от 1 до n) количестве стандартных страниц памяти.

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

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

Недостаток − сложность и затраты ресурсов на реализацию.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]