1 Управление реальной памятью



Pdf просмотр
Дата12.02.2017
Размер1.56 Mb.
Просмотров356
Скачиваний1

1
Управление реальной памятью
Управление реальной памятью

Оглавление
1.
Введение .............................................................................................................................................. 3 2.
История вопроса и наши подходы ..................................................................................................... 3 2.1.
Первые режимы организации памяти ...................................................................................... 3 2.2.
Дальнейшее развитие методов организации ........................................................................... 3 2.3.
Классификация методов управления памятью ........................................................................ 4 2.4.
Режимы и загрузка процессора ................................................................................................ 5 3.
Основные понятия ............................................................................................................................... 5 3.1.
Идеи, реализованные в менеджере памяти............................................................................. 5 3.1.1.
Сегментация ......................................................................................................................... 5 3.1.2.
Разделение на физическую и логическую память ............................................................ 6 3.1.3.
Локальность ......................................................................................................................... 6 4.
Физическая организация памяти компьютера ................................................................................. 7 4.1.
Классификация памяти ............................................................................................................... 7 4.2.
Иерархия памяти ......................................................................................................................... 8 4.3.
Описание уровней иерархии ...................................................................................................... 8 5.
Логическая память ............................................................................................................................. 11 5.1.
Понятие сегмента ...................................................................................................................... 11 5.2.
Адресация сегмента в реальной памяти (режиме) ................................................................ 12 6.
Режимы работы процессора ............................................................................................................ 12 6.1.
Режимы работы процессора .................................................................................................... 12 6.2.
Преимущества защищенного режима ..................................................................................... 13 6.3.
Задача организации защиты памяти ....................................................................................... 13 7.
История организации памяти ........................................................................................................... 13 8.
Адресация памяти ............................................................................................................................. 15 8.1.
Проблема передачи физического адреса ............................................................................... 15 8.2.
Двукомпонентный логический адрес ...................................................................................... 16 8.3.
Недостатки схемы адресации памяти реального режима .................................................... 19 9.
Связывание адресов .......................................................................................................................... 19 9.1.
Принцип трансляции адресов .................................................................................................. 19

2
Управление реальной памятью
9.2.
Этапы выполнения программы и привязка адресов ............................................................. 20 10.
ОС и схемы управления реальной памятью ............................................................................... 21 10.1.
Функции ОС по управлению памятью ................................................................................. 21 10.2.
Схемы управления памятью ................................................................................................. 21 11.
Простейшие схемы управления реальной памятью .................................................................. 21 11.1.
Основные понятия ................................................................................................................. 21 11.2.
Смежное размещение процессов ........................................................................................ 22 11.2.1. Однопрограммный и оверлейный режимы ................................................................... 23 11.3.
Схема с фиксированными разделами ................................................................................. 25 11.3.1. Один процесс в памяти и оверлейные структуры .......................................................... 27 11.4.
Динамическое распределение. Свопинг ............................................................................. 27 11.5.
Схема с переменными разделами ....................................................................................... 28 12.
Стратегии размещения информации в памяти........................................................................... 29 12.1.
Стратегия наиболее подходящего (First fit). ....................................................................... 29 12.2.
Стратегия первого подходящего (Best fit). .......................................................................... 30 12.3.
Стратегия наименее подходящего (Worst fit). .................................................................... 30 13.
Фрагментация ................................................................................................................................ 30 13.1.
Понятие фрагментации ......................................................................................................... 30 13.2.
Причины фрагментации ........................................................................................................ 30 13.3.
Защита от фрагментации ...................................................................................................... 31
Выводы ....................................................................................................................................................... 31


3
Управление реальной памятью
1.

Введение
Главная задача компьютерной системы – выполнять программы. Программы вместе с данными, к которым они имеют доступ, в процессе выполнения должны (по крайней мере частично) находиться в оперативной памяти. Операционной системе приходится решать задачу распределения памяти между пользовательскими процессами и компонентами ОС.
Эта деятельность называется управлением памятью. Таким образом, память (storage, memory) является важнейшим ресурсом, требующим тщательного управления. В недавнем прошлом память была самым дорогим ресурсом.
Одновременно скажу, что вопросы, связанные с организацией памяти, являются
СЛОЖНЕЙШИМИ во всей теории операционных систем.
2.

История вопроса и наши подходы
2.1.

Первые режимы организации памяти
Все вопросы, освещенные в этой лекции (по истории вопроса), носят ознакомительный характер, и преследуют одну цель: добиться понимания общей картинки на поле
«битвы», которая называется «организация памяти компьютера». Каждое из понятий в последующем будет рассмотрено более детально!!!
Итак, Логика развития ситуации с организацией памяти хронологическом порядке:
Вначале появилась задача ограничить ОС, размещенную в оперативной памяти, от внешних посягательств исполняемых программ, те.е обеспечить ее защиту.
Появились два режима организации работы с памятью:

Реальный

Защищенный
2.2.

Дальнейшее развитие методов организации
Далее развивалась непростая ситуация с размером памяти, необходимой для выполнения программ (поэтапно):
1.
Реальный режим – сколько есть оперативной памяти для программы, столько она и может использовать. Не больше. Введена адресация сегмента <сегмент, смещение>.
2.
В защищенном режиме попробовали расширить возможности организации памяти: использовали возможность размещения части программы в памяти внешнего устройства.
3.
Метод этот назвали сегментным методом. Введена адресация сегмента <селектор, смещение> и понятия дескриптора и таблицы дескрипторов.
4.
Потом разработали страничный метод организации памяти, который также использовался в защищенном режиме.
5.
Развитие техники привело к увеличению размера прикладных программ, и, следовательно, к необходимости предоставления им больших ресурсов памяти.
6.
Но!!!: адресное пространство памяти, к которому можно обратиться, ограничено разрядностью Шины Адреса (и разрядностью регистров памяти, они могут не совпадать).

4
Управление реальной памятью
7.
Физически мы уже не можем увеличить разрядность ША, но программно-аппаратными способами можем обойти это ограничение.
8.
Здесь за основу взяли сегментную и страничную модели организации памяти, но с некоторыми модификациями.
9.
Эти модификации привели к появлению принципиально нового режима (модели) организации памяти - Метод виртуализации памяти (или виртуальный режим).
Дополнительно этот метод позволил существенно улучшить защиту ОС от внешнего вмешательства.
10.
Для уровней защищенного и виртуального режимов введено понятие линейного адреса.
Сегментная организация в чистом виде практически умерла.
По сути своей защищенный режим и виртуальный (на уровне нашего рассмотрения и знания предмета) очень близки, поэтому и в учебной литературе идет смешение терминов виртуальный или логический адрес, виртуальный или защищенный режим. К этому надо быть готовыми.
Для программиста-ассемблериста – это принципиально разные режимы. И это тоже надо понимать.
2.3.

Классификация методов управления памятью
По степени использования внешней памяти (классическая модель)
Современные системы распределения памяти делятся на:

Динамические (выделение некоторой части из полного объема требуемой памяти и обеспечение работы с этой частью; остальная память выделяется по мере необходимости)

Виртуальные (работа с виртуальной памятью, емкость которой равна всему физическому адресному пространству)
С учетом всего вышесказанного, мы будем рассматривать просто отдельные методы
организации памяти: сегментный, страничный и сегментно-страничный. Без уточнения в каком режиме находится процесс: защищенном, виртуальном.
Главное – понимание самих принципов организации памяти.

5
Управление реальной памятью
В нашей программе мы сначала изучаем методы организации реальной (физической) памяти (аля реальный режим и методы, которые в нем используются). Тем не менее учебной программой сюда отнесены методы, апеллирующие к использованию внешней памяти (свопинг). Что не совсем соответствует классической модели классификации методов.
Потом рассматриваем организацию виртуальной памяти (аля защищенный или виртуальный режимы).
Главное – не запутаться, а понять основополагающие понятия.
2.4.

Режимы и загрузка процессора

При включении компьютера он всегда загружается в реальном режиме.

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

Далее возможны загрузка и использование виртуального режима (определяется
ОС или прикладными программами).
3.

Основные понятия
3.1.

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

Идея сегментации

Идея разделения памяти на физическую и логическую

Идея локальности
3.1.1.

Сегментация
Во-первых, это идея сегментации.
По-видимому, вначале сегменты памяти появились в связи с необходимостью обобществления процессами фрагментов программного кода (текстовый редактор, тригонометрические библиотеки и т.д.), без чего каждый процесс должен был хранить в своем адресном пространстве дублирующую информацию.
Эти отдельные участки памяти, хранящие информацию, которую система отображает в память нескольких процессов, получили название сегментов. Память, таким образом, стала двумерной.
Адрес состоит из двух компонентов: <номер сегмента, смещение внутри сегмента>.
Далее оказалось удобным размещать в разных сегментах данные разных типов (код программы, данные, стек и т. д.). Попутно выяснилось, что можно контролировать характер работы с конкретным сегментом, приписав ему атрибуты, например, права доступа или типы операций, разрешенные с данными, хранящимися в сегменте.

6
Управление реальной памятью
Большинство современных ОС поддерживают (наряду с прочими) сегментную организацию памяти. В некоторых архитектурах (Intel, например) сегментация поддерживается оборудованием.
Стек
— это специальным образом организованный участок памяти, используемый для временного хранения переменных, для передачи параметров вызываемым подпрограммам и для сохранения адреса возврата при вызове процедур и прерываний.
Легче всего представить стек в виде стопки листов бумаги (это одно из значений слова «stack» в английском языке) — вы можете класть и забирать листы бумаги только с вершины стопки.
Таким образом, если записать в стек числа 1, 2, 3, то при чтении они будут получаться в обратном порядке — 3, 2, 1.
3.1.2.

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

Локальность
И, наконец, идея локальности (похожести, близости).
Свойство локальности присуще природе.

7
Управление реальной памятью

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

Временная локальность - если в 15:00 была хорошая погода, то, вероятно, что и в
14:30 и в 15:30 также наблюдалась хорошая погода.
Свойство локальности присуще и работе ОС. Фактически свойство локальности объяснимо, если учесть, как пишутся программы и организованы данные, то есть обычно в течение какого-то отрезка времени ограниченный фрагмент кода работает с ограниченным набором данных.
Понимание данной особенности позволяет организовать иерархию памяти, используя быструю дорогостоящую память для хранения минимума необходимой информации, размещая оставшуюся часть данных на устройствах с более медленным доступом и подкачивая их в быструю память по мере необходимости.
Типичный пример иерархии: регистры процессора, кэш процессора, главная (основная) память, внешняя память на магнитных дисках (вторичная память).
4.

Физическая организация памяти компьютера
4.1.

Классификация памяти
Запоминающие устройства компьютера разделяют, как минимум, на два уровня:

основную (главную, оперативную, физическую, реальную) память

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

В отличие от оперативной памяти, она является энергонезависимой

Имеет существенно большую емкость (это требование ко вторичной памяти)

Используется в качестве расширения основной памяти.

8
Управление реальной памятью
4.2.

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

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

Если процессор не обнаруживает нужную информацию на i-м уровне, он начинает искать ее на следующих уровнях.

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

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

9
Управление реальной памятью

Достаточно большой

Чрезвычайно быстрой

Очень дешёвой
Проанализируем уровни иерархии памяти:

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

КЭШ - Контролируемая оборудованием память, ограниченная в размерах =>
Высокая стоимость.
3)

ОЗУ - десятки-сотни мегабайт. Все запросы ЦП, которые не могут быть выполнимы
КЭШ памятью, поступают для обработки в основную память. Оперативное запоминающее устройство предназначено для хранения информации (программ и данных), непосредственно участвующей в вычислительном процессе на текущем этапе функционирования ПК.
ОЗУ - энергозависимая память: при отключении напряжения питания информация, хранящаяся в ней, теряется.
Основу ОЗУ составляют большие интегральные схемы, содержащие матрицы полупроводниковых запоминающих элементов (триггеров). Запоминающие элементы расположены на пересечении вертикальных и горизонтальных шин матрицы; запись и считывание информации осуществляются подачей электрических импульсов по тем шинам матрицы, которые соединены с элементами, принадлежащими выбранной ячейке памяти.
Конструктивно элементы оперативной памяти выполняются в виде отдельных микросхем типа DIP (Dual In-line Package - двухрядное расположение выводов) или в виде модулей памяти типа SIP (Single In-line Package - однорядное расположение выводов), или, что чаще, SIMM (Single In line Memory Module - модуль памяти с одноразрядным расположением выводов, контакты для разных сторон едины). На материнскую плату можно установить несколько (четыре и более) модулей SIMM.
DIMM (Dual In-Line Memory Module) - наиболее современная разновидность форм- фактора модулей памяти. Отличается от SIMM тем, что контакты с двух сторон модуля независимы (dual), что позволяет увеличить соотношение ширины шины к геометрическим размерам модуля. Наиболее распространены 168-контактные
DIMM (ширина шины 64 бит), устанавливаемые в разъем вертикально и

10
Управление реальной памятью фиксируемые защелками. В портативных устройствах широко применяются SO
DIMM.
4)

Жесткий диск - дисковая память на два порядка дешевле и по сравнению с ОЗУ на два порядка больше по емкость. Но у диска есть только одна проблема: случайный доступ к данным на нём занимает примерно на три порядка больше времени.
Причиной низкой скорости жесткого диска является тот факт, что диск представляет собой сложную механическую конструкцию и состоит из одной или нескольких металлических пластин, вращающихся со скоростью 5400,7200 или 10 800 оборотов в минуту.
Перемещение головки от одного цилиндра к другому занимает около 1мс., а перемещение к произвольному цилиндру требует от 5 до 10 мс, в зависимости от диска. Когда головка располагается над правильной дорожкой, нужно ждать, пока двигатель повернет диск так, чтобы под головкой встал требуемый сектор.
5)
ПЗУ - Программируется при производстве, его нельзя изменить.
DIP
SIP
SIMM

11
Управление реальной памятью
DIMM
5.

Логическая память
Аппаратная организация памяти в виде линейного набора ячеек не соответствует представлениям программиста о том, как организовано хранение программ и данных.
Большинство программ представляет собой набор модулей, созданных независимо друг от друга. Иногда все модули, входящие в состав процесса, располагаются в памяти один за другим, образуя линейное пространство адресов. Однако чаще модули помещаются в
разные области памяти и используются по-разному.
5.1.

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

12
Управление реальной памятью
Рис. 8.2. Пример расположение сегментов процессов в памяти компьютера
Некоторые сегменты, описывающие адресное пространство процесса, показаны на рис.
8.2
5.2.

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

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

Режимы работы процессора
Главным недостатком работы процессора в реальном режиме (он устанавливается с момента запуска процессора, и в нем работает ДОС) является то, что любое приложение может нарушить работу системы. Каким образом: занять адресное пространство, отведенное в ОЗУ для ОС (см. наши рисунки).
Чтобы избежать этого был разработан защищенный режим (начиная с i80386).

13
Управление реальной памятью
Переключение из реального режима в защищённый происходит программно и относительно просто, однако для обратного перехода необходим аппаратный сброс процессора.
Принципиальные отличия режимов заключаются в:

способе преобразования процессором логических адресов в физические

количестве одновременно выполняемых программ (реальный режим – одна)

способе реализации многозадачности (защищенный режим – аппаратный способ, реальный – эмуляция).
6.2.

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

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

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

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

эффективная работа нескольких программ, составленных для MS-DOS, основанная на использовании виртуального режима работы процессора.
6.3.

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

История организации памяти
1.
Подавляющее большинство владельцев персональных компьютеров, совместимых с IBM PC, используют операционную систему Microsoft MS-DOS или аналогичную
(IBM PC DOS или Digital Research DR DOS). Все эти операционные системы изначально разрабатывались для микропроцессора фирмы Intel i8086 или его более дешёвого аналога i8088. Именно такие микропроцессоры были установлены в первых персональных компьютерах фирмы IBM - IBM PC и IBM XT.
Процессоры i8086 и i8088 относятся к 16-разрядным процессорам. Максимальный объём адресуемой ими оперативной памяти составляет 1 мегабайт, что определяется использованием 20-разрядной адресации памяти.
2.
Вы знаете, что разработчики фирмы IBM из всего мегабайтного адресного пространства отвели для оперативной памяти 640 килобайт, зарезервировав остальное для BIOS и аппаратуры.

14
Управление реальной памятью
Именно на такую конфигурацию адресного пространства и рассчитана операционная система MS-DOS (и её аналоги). Поэтому максимальный размер оперативной памяти, доступной программам, работающим под управлением MS-
DOS, обычно составляет 500-620 килобайт, в зависимости от версии операционной системы и её настройки, от типа компьютера, от конфигурации драйверов и резидентных программ.
3.
По мере внедрения персональных компьютеров в различные сферы деятельности человека быстро возрастала сложность программного обеспечения и требования к аппаратуре персонального компьютера. Скоро стало ясно, что для успешного решения многих задач объёма памяти в 640 килобайт явно недостаточно.
4.
Следующая удачная модель процессора фирмы Intel - 16-разрядный процессор i80286 - принципиально отличается от i8086. Этот процессор может работать в двух режимах - реальном и защищённом.
5.
В реальном режиме процессор i80286 является практически полным аналогом i8086, но имеет большее быстродействие. В реальный режим процессор переключается после аппаратного сброса или после включения питания компьютера.
Реальный режим обеспечивает полную совместимость процессора i80286 с программным обеспечением, подготовленным для i8086. Поэтому компьютер
IBM AT (и его аналоги), в котором установлен процессор i80286, способен без труда работать с операционной системой MS-DOS и программами, разработанным ранее для процессора i8086.
Однако полностью возможности i80286 реализуются в так называемом
защищённом режиме, в который процессор может переключиться специальной командой из реального режима.
6.
В защищённом режиме процессор i80286 полностью преображается. Используя
совершенно иной метод адресации памяти, процессор i80286 расширяет
адресное пространство до 16 мегабайт. Процессор i80286 в защищённом режиме имеет встроенную поддержку мультизадачных операционных систем, значительно ускоряющую и упрощающую процесс переключения задач. Эта поддержка активно используется всеми мультизадачными операционными системами и оболочками, разработанными для компьютера IBM PC/AT.
7.
Кроме расширения адресного пространства, новый метод адресации памяти позволяет изолировать адресные пространства отдельных задач друг от друга. При этом прикладная программа, работающая в среде операционной системы, использующей защищённый режим, не может случайно или намеренно разрушить целостность самой операционной системы.
8.
В следующих моделях процессоров фирмы Intel - i80386 и i80486 - помимо расширения адресного пространства до умопомрачительной величины в 4 гигабайта реализована концепция страничной виртуальной памяти. Всё это возможно только в защищённом режиме.
Механизм страничной виртуальной памяти позволяет разместить часть оперативной памяти на диске. Это и дешевле (сравните стоимости плат памяти на рынке и внешнего диска).
Конечно, виртуальная память работает медленнее, чем физическая, но, во- первых, 100 мегабайт виртуальной памяти обойдутся вам неизмеримо дешевле,

15
Управление реальной памятью чем 100 мегабайт физической памяти, а во-вторых, процессоры i80386 и i80486 используют специальные аппаратные средства, ускоряющие работу подсистемы виртуальной памяти.
Кроме того, реально только механизм страничной виртуальной памяти может обеспечить прикладные программы относительно быстрой оперативной памятью, размер которой больше размера физической памяти, установленной в компьютере.
9.
Помимо страничной виртуальной памяти в процессорах i80386 и i80486 реализован так называемый режим виртуального процессора i8086 или просто виртуальный режим, реализуемый в рамках защищённого режима (процессор может переключиться в виртуальный режим только из защищённого режима).

8.

Адресация памяти
8.1.

Проблема передачи физического адреса
Вы знаете, что для работы с памятью используются две шины - шина адреса и шина
данных.
Физически память устроена таким образом, что возможна адресация как 16-битовых слов, так и отдельных байтов памяти. Кроме того, процессоры i80386 и i80486 могут адресовать 32-битовые слова памяти.
В любом случае так называемый физический адрес передаётся из процессора в память
по шине адреса.
Ширина шины адреса определяет максимальный объём физической памяти, непосредственно адресуемой процессором.
На рис. 1 показана схема взаимодействия процессора и памяти через шины адреса и данных.
Рис. 1. Шина адреса и шина данных

16
Управление реальной памятью
Например, компьютер IBM XT оснащён 20-разрядной шиной адреса и 16-разрядной шиной данных.
Так как адреса принято записывать в шестнадцатеричной форме, то мы можем записать диапазон физических адресов для 20-разрядной шины адреса следующим образом:
00000h <= *диапазон физического адреса+ <= FFFFFh

Таким образом, для представления физического адреса в компьютерах IBM PC и IBM XT используется двадцать двоичных или пять шестнадцатеричных разрядов.
Однако все регистры процессора i8086 являются 16-разрядными. Возникает проблема представления 20-разрядного физического адреса памяти при помощи содержимого 16- разрядных регистров.
8.2.

Двукомпонентный логический адрес
Для разрешения этой проблемы используется двухкомпонентный логический адрес.
Логический адрес состоит из 16-разрядных компонент: компоненты сегмента памяти и компоненты смещения внутри сегмента.
Для получения 20-разрядного физического адреса к сегментной компоненте приписывается справа четыре нулевых бита (для расширения до 20 разрядов), затем полученное число складывается с компонентой смещения. Перед сложением к компоненте смещения слева дописывается четыре нулевых бита (также для расширения до 20 разрядов). Эту процедуру иллюстрирует рис. 2.

17
Управление реальной памятью
Рис. 2. Адресация памяти в реальном режиме.
Логический адрес принято записывать в форме <сегмент:смещение>.
Например, пусть у нас есть логический адрес 1234h:0123h. Сегментная компонента равна
1234h, компонента смещения - 0123h. Вычислим физический адрес, соответствующий нашему логическому адресу:

расширяем до 20 бит сегментную компоненту, дописывая справа 4 нулевых бита, получаем число 12340h;

расширяем до 20 бит компоненту смещения, дописывая слева 4 нулевых бита, получаем число 00123h;

для получения физического адреса складываем полученные числа: 12340h +
00123h = 12453h.
Очевидно, что одному физическому адресу может соответствовать несколько логических.
Например, физическому адресу 12453h соответствует логический адрес 1245h:0003h.
Фактически в схеме адресации памяти реального режима вся память как бы разбивается
на сегменты. Физический адрес начала сегмента (базовый адрес сегмента) равен расширенной до 20 бит сегментной компоненте адреса (расширение выполняется дописыванием справа 4 нулевых бит).
Сегменты могут начинаться не с любого физического адреса, а только с такого, который кратен 16 байтам. Поэтому сегмент может начинаться только с границы параграфа (16- байтный адресный блок).
Компонента смещения при такой схеме адресации является смещением внутри сегмента памяти. А сам сегмент памяти задаётся сегментной компонентой.
Рис.3 иллюстрирует сказанное выше. На этом рисунке показано соответствие логического адреса 0002h:0028h физическому адресу 00048h.

18
Управление реальной памятью
Рис. 3. Соответствие логического и физического адресов.
Логический адрес должен находиться в следующих пределах:
0000h:0000h <= *логический адрес+ <= FFFFh:000Fh
Архитектура процессоров серии i80XXX, работающих в реальном режиме, предполагает хранение сегментной компоненты адреса в специальных сегментных регистрах:
CS - сегмент кода;
DS - сегмент данных;
ES - дополнительный сегмент данных;
SS - сегмент стека.
Компонента смещения может находиться в регистрах BX, BP, SI, DI, IP.
Задавая произвольные значения сегментной компоненты и компоненты смещения любая программа может адресоваться к любому участку памяти компьютера. В частности, любая программа может преднамеренно или из-за ошибки разрушить области данных, принадлежащие операционной системе.

19
Управление реальной памятью

8.3.

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

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

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

Связывание адресов
9.1.

Принцип трансляции адресов
Итак, логические и физические адресные пространства ни по организации, ни по размеру не соответствуют друг другу.
Максимальный размер логического адресного пространства обычно определяется
разрядностью процессора (например, 2 32
) и в современных системах значительно превышает размер физического адресного пространства.

20
Управление реальной памятью
Следовательно, процессор и ОС должны быть способны отобразить ссылки в коде программы в реальные физические адреса, соответствующие текущему расположению программы в основной памяти. Такое отображение адресов называют трансляцией
(привязкой) адреса или связыванием адресов (см. рис. 8.3
).
Рис. 8.3. Формирование логического адреса и связывание логического адреса с физическим
Связывание логического адреса, порожденного оператором программы, с физическим должно быть осуществлено до начала выполнения оператора или в момент его выполнения.
9.2.

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

Этап компиляции (Compile time). Когда на стадии компиляции известно точное место размещения процесса в памяти, тогда непосредственно генерируются физические адреса. При изменении стартового адреса программы необходимо перекомпилировать ее код. В качестве примера можно привести .com программы
MS-DOS, которые связывают ее с физическими адресами на стадии компиляции.

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

21
Управление реальной памятью

Этап выполнения (Execution time). Если процесс может быть перемещен во время выполнения из одной области памяти в другую, связывание откладывается до стадии выполнения.
Здесь желательно наличие специализированного оборудования, например регистров перемещения. Их значение прибавляется к каждому адресу, сгенерированному процессом. Большинство современных ОС осуществляет трансляцию адресов на этапе выполнения, используя для этого специальный аппаратный механизм.
Например, MS-DOS использует четыре таких
(сегментных) регистра.
10.

ОС и схемы управления реальной памятью
10.1.

Функции ОС по управлению памятью
Чтобы обеспечить эффективный контроль использования памяти, ОС должна выполнять следующие функции:

отображение адресного пространства процесса на конкретные области физической памяти;

распределение памяти между конкурирующими процессами;

контроль доступа к адресным пространствам процессов (защита адресных пространств);

выгрузка процессов (целиком или частично) во внешнюю память, когда в оперативной памяти недостаточно места;

учет свободной и занятой памяти.
10.2.

Схемы управления памятью
Существует несколько схем управления памятью. Выбор той или иной схемы зависит от многих факторов. Рассматривая ту или иную схему важно учитывать:

Механизм управления памятью или идеологию построения системы управления.

Архитектурные особенности используемой системы.

Структуры данных в ОС, используемые для управления памятью.

Алгоритмы, используемые для управления памятью.
В начале мы рассмотрим простейшие схемы управления памятью. Лидирующие – схемы управления виртуальной памятью - мы рассмотрим на следующих лекциях.
11.

Простейшие схемы управления реальной памятью
11.1.

Основные понятия
Первые ОС применяли очень простые методы управления памятью.
Вначале каждый процесс пользователя должен был полностью поместиться в основной памяти, занимать непрерывную область памяти, а система принимала к обслуживанию

22
Управление реальной памятью дополнительные пользовательские процессы до тех пор, пока все они одновременно помещались в основной памяти.
Затем возникло предложение делить все свободное пространство ОЗУ на разделы.
Затем появился "простой свопинг" (система по-прежнему размещает каждый процесс в
основной памяти целиком, но иногда на основании некоторого критерия целиком
сбрасывает образ некоторого процесса из основной памяти во внешнюю и заменяет его
в основной памяти образом другого процесса). Такого рода схемы имеют не только историческую ценность. В настоящее время они применяются в учебных и научно- исследовательских модельных ОС, а также в ОС для встроенных (embedded) компьютеров.
Для начала рассмотрим структуру памяти ОЗУ и процедуру стандартной загрузки программы.

Часть ОЗУ, начиная с адреса 00000h до (в нашем примере) 00F1A, занимает ОС.
Остальное место в ОЗУ условно признаем свободным (Free).

Программа, собирающаяся занять место в ОЗУ, размещается в ней, занимая адресное пространство (с номера 00F1A до некоего адресного значения).


11.2.

Смежное размещение процессов
Методы размещения процессов в основной памяти по отношению к расположению участков памяти, выделенных для одной и той же программы, делят на два класса.
Первый — метод смежного размещения, второй — метод несмежного размещения.

23
Управление реальной памятью
Смежное размещение является простейшим и предполагает, что в памяти, начиная с некоторого начального адреса, выделяется один непрерывный участок адресного
пространства.
При несмежном размещений программа разбивается на множество частей, которые располагаются в различных, необязательно смежных участках адресного пространства.
11.2.1.

Однопрограммный и оверлейный режимы
Это частные случаи смежного размещения.
Рис. 1.13 иллюстрирует смежное размещение одной программы в основной памяти.

24
Управление реальной памятью
При смежном размещении размер загружаемой программы ограничивается размером ОЗУ. Для того чтобы при смежном размещении загружать программы, размеры которых превышают размеры ОЗУ, используют метод оверлейных сегментов (overlay segments).
В программе, имеющей древовидную структуру (основной корневой сегмент программы и нескольков оверлейных сегментов). Модули второго уровня работают сугубо последовательно, поэтому в памяти может находиться только один из них. Далее они сменяют друг друга.

25
Управление реальной памятью
Оверлейную структуру программы и последовательность загрузки оверлейных сегментов планирует разработчик программы.
В процессе выполнения программы все ее адреса не должны быть меньше числа 00F1A
(последний адрес ОС, для нашего примера). В противном случае возможна запись какого-либо результата работы программы (поверх операционной системы) и уничтожение некоторых ее частей. Защиту операционной системы в случае смежного размещения при однопрограммном режиме можно осуществить с помощью регистра границы (рис. 1.15).
Во время работы прикладной программы все адреса, генерируемые CPU, сравниваются с содержимым регистра границы. Если генерируется адрес меньше числа 00F1A, работа программы прерывается.
11.3.

Схема с фиксированными разделами
Одним из простых способов управления оперативной памятью является ее предварительное разбиение на несколько разделов фиксированной величины (MFT —
Multiprogramming with a fixed number of tasks). Поступающие процессы помещаются в тот

26
Управление реальной памятью или иной раздел. При этом происходит условное разбиение физического адресного пространства. Связывание логических и физических адресов процесса происходит на этапе его загрузки в конкретный раздел, иногда – на этапе компиляции.
Каждый раздел может иметь свою очередь процессов, а может существовать и глобальная очередь для всех разделов.
Эта схема была реализована в IBM OS/360 (MFT), DEC RSX-11 и ряде других систем.
Подсистема управления памятью:

оценивает размер поступившего процесса

выбирает подходящий для него раздел

осуществляет загрузку процесса в этот раздел и настройку адресов.

27
Управление реальной памятью
Недостатки такой схемы:

число одновременно выполняемых процессов ограничено числом разделов.

предлагаемая схема сильно страдает от внутренней фрагментации – потери части памяти, выделенной процессу, но не используемой им. Фрагментация возникает потому, что процесс не полностью занимает выделенный ему раздел или потому, что некоторые разделы слишком малы для выполняемых пользовательских программ.
11.3.1.

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

Динамическое распределение. Свопинг
Имея дело с пакетными системами, можно обходиться фиксированными разделами и не использовать ничего более сложного.
В системах с разделением времени возможна ситуация, когда память не в состоянии содержать все пользовательские процессы (мультипрограммный режим работы).
Приходится прибегать к свопингу (swapping) – перемещению процессов из основной памяти во внешнюю память и обратно целиком. Частичная выгрузка процессов на диск осуществляется в системах со страничной организацией (paging) и будет рассмотрена позже.
Замечание: при свопинге из основной памяти во внешнюю (и обратно) перемещается вся
программа, а не ее отдельная часть.
Выгруженный процесс может быть возвращен в то же самое адресное пространство или в другое. Это ограничение диктуется методом связывания. Для схемы связывания на этапе выполнения можно загрузить процесс в другое место памяти.

28
Управление реальной памятью
Свопинг иногда используют при приоритетном планировании CPU. В этом случае с целью освобождения памяти для высокоприоритетных процессов, низкоприоритетные процессы перемещаются во внешнюю память.
Очевидно, что свопинг увеличивает время переключения контекста. Время выгрузки может быть сокращено за счет организации специально отведенного пространства на
диске (раздел для свопинга). Обмен с диском при этом осуществляется блоками большего размера, то есть быстрее, чем через стандартную файловую систему. Во многих версиях Unix свопинг начинает работать только тогда, когда возникает необходимость в снижении загрузки системы.
11.5.

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

29
Управление реальной памятью
Рис. 8.6. Динамика распределения памяти между процессами (серым цветом показана неиспользуемая память)
12.

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

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

30
Управление реальной памятью пространство. Для многих людей выбор наиболее подходящего кажется интуитивно самой рациональной стратегией.
12.2.

Стратегия первого подходящего
(Best fit).

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

Стратегия наименее подходящего
(Worst fit).

На первый взгляд подобный подход кажется весьма странным. Однако более тщательное рассмотрение показывает, что выбор наименее подходящего по размеру также имеет сильные интуитивные аргументы в свою пользу.
Этот принцип говорит о том, что при помещении программы в основную память нужно
занимать свободный участок, имеющий наиболее далекий размер, т. е. максимальный
возможный свободный участок.
Интуитивный аргумент в пользу такого подхода достаточно прост: после помещения программы в большой свободный участок остающийся свободный участок зачастую также оказывается большим и, таким образом, в нем можно разместить относительно большую новую программу.
13.

Фрагментация
13.1.

Понятие фрагментации
Фрагментация – наличие большого числа участков неиспользуемой памяти, не выделенной ни одному процессу.
Метод «Стратегии наименее подходящего» более гибок по сравнению с методом фиксированных разделов, однако ему присуща фрагментация.
Выбор стратегии размещения процесса между первым подходящим и наиболее подходящим слабо влияет на величину фрагментации. Любопытно, что метод наиболее подходящего может оказаться наихудшим, так как он оставляет множество мелких незанятых блоков.
Уменьшить фрагментацию памяти при мультипрограммировании с фиксированными разделами можно, если загрузочные модули создаются в перемещаемых адресах. Такой модуль может быть загружен в любой свободный раздел после соответствующей настройки.

13.2.

Причины фрагментации
При мультипрограммировании с трансляцией в перемещаемых адресах имеются две причины фрагментации.

31
Управление реальной памятью

Первая — размер загруженного процесса меньше размера, занимаемого разделом
(внутренняя фрагментация),

Вторая — размер процесса в очереди больше размера свободного раздела, и этот раздел остается свободным (внешняя фрагментация).
13.3.

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

Первый — регистр верхней границы (наименьший адрес)

Второй — регистр нижней границы (наибольший адрес).
Статистический анализ показывает, что пропадает в среднем 1/3 памяти! Это известное правило 50% (два соседних свободных участка в отличие от двух соседних процессов могут быть объединены).
Одно из решений проблемы внешней фрагментации – организовать сжатие, то есть перемещение всех занятых (свободных) участков в сторону возрастания (убывания) адресов, так, чтобы вся свободная память образовала непрерывную область. Этот метод иногда называют схемой с перемещаемыми разделами. В идеале фрагментация после сжатия должна отсутствовать. Сжатие, однако, является дорогостоящей процедурой, алгоритм выбора оптимальной стратегии сжатия очень труден и, как правило, сжатие осуществляется в комбинации с выгрузкой и загрузкой по другим адресам.
Выводы
В настоящей лекции описаны простейшие способы управления памятью в ОС.
Физическая память компьютера имеет иерархическую структуру.
Программа представляет собой набор сегментов в логическом адресном пространстве.
ОС осуществляет связывание логических и физических адресных пространств.
Существует реальный и защищенный режимы работы памяти.



Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©nethash.ru 2017
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал