Операционные системы1 Тема 3. Управление памятью. Методы, алгоритмы и средства Методы, алгоритмы и средства Автор: доктор технических наук, профессор Назаров С.В. Кафедра информатики и программирования
Операционные системы2 Тема 3. Управление памятью. Методы, алгоритмы и средства 3.1. Организация памяти современного компьютера 3.2. Функции операционной системы по управлению памятью 3.3. Алгоритмы распределение памяти Классификация методов распределения памяти Классификация методов распределения памяти Распределение памяти фиксированными разделами Распределение памяти динамическими разделами Распределение памяти динамическими разделами Распределение памяти перемещаемыми разделами Распределение памяти перемещаемыми разделами 3.4. Виртуальная память Методы структуризации виртуального адресного пространства Страничная организация виртуальной памяти Страничная организация виртуальной памяти Оптимизация функционирования страничной виртуальной памяти Оптимизация функционирования страничной виртуальной памяти Сегментная организация виртуальной памяти Сегментная организация виртуальной памяти
Операционные системы Организация памяти современного компьютера Логическая организация памяти: Линейное (одномерное) адресное пространство, отражающее особенности аппаратного обеспечения, но не соответствующее современной технологии создания программного обеспечения. Для эффективной работы с пользовательскими программами необходимо чтобы: Модули могли быть созданы и скомпилированы независимо друг от друга, при этом все ссылки из одного модуля в другой разрешаются системой во время работы программы. Разные модули могли получать разные степени защиты (только чтение, только исполнение и т. п.) за счет весьма умеренных накладных расходов. Возможно применение механизма, обеспечивающего совместное использование модулей разными процессами (для случая сотрудничества разных процессов в работе над одной задачей).
Операционные системы Физическая организация памяти Центральный процессор Внутренние регистры (0,3-0,5 нс.) Внутренний кэш, 64 Кбайт, 0,3-0,5 нс. Кэш второго уровня 1Мбайт SRAM, 1-3 нс. Основная память 2048 Мбайт DDRAM, нс.. Кэш диска 8 Мбайт Жесткий диск 100 Гбайт, 10 мс. МЛ Сотни с.
Операционные системы5 20% 50% 80% Z =1 – P n, где n – число процессов 20 % 50 % 80 %
Операционные системы6 Виртуализация оперативной памяти осуществляется совокупностью аппаратных и программных (ОС) средств вычислительной системы автоматически без участия программиста и не сказывается на работе приложения. Достоинства свопинга : малые затраты времени на преобразование адресов в кодах программ. Недостатки :: избыточность перемещаемых данных, замедление работы системы, неэффективное использование памяти, невозможность загрузить процесс, адресное пространство которого превышает объем свободной оперативной памяти. Недостатки виртуальной памяти : необходимость преобразования виртуальных адресов в физические, сложность аппаратной и программной (ОС) поддержки Виртуальная память Методы виртуализации памяти: свопинг (swapping), виртуальная память (virtual memory).
Операционные системы Функции операционной системы по управлению памятью ОС в ОЗУ ОС в ПЗУ BIOS Скрытая память 1 Мбайт Программа пользователя 60 Кбайт 640 Кбайт Программа пользователя Распределение памяти в однопрограммных ОС
Операционные системы8 Функции операционной системы по управлению памятью в мультипрограммных системах отслеживание (учет) свободной и занятой памяти; первоначальное и динамическое распределение памяти процесса приложений и сомой ОС; освобождение памяти при завершении процессов; настройка адресов программы на конкретную область физической памяти; полное или частичное вытеснение кодов и данных процессов из ОП на диск, когда размеры ОП недостаточны для размещения всех процессов и возвращение их в ОП; защита памяти, выделенной процессу, от возможных вмешательств со стороны других процессов; дефрагментация памяти.
Операционные системы9 Типы адресов Символьные имена Виртуальные адреса Физические адреса Идентификаторы переменных в программе на алгоритмическом языке Транслятор Условные адреса, вырабатываемые транслятором Номера ячеек физической памяти 1. Перемещающий загрузчик (статическое преобразование) 2. Динамическое преобразование (аппаратные средства)
Операционные системы Алгоритмы распределение памяти Классификация методов распределения памяти Методы распределения памяти Без использования внешней памяти С использованием внешней памяти Фиксированными разделами Динамическими разделами Перемещаемыми разделами Страничное распределение Сегментное распределение Сегментно-страничное распределение
Операционные системы Распределение памяти фиксированными разделами (MFT в OS/360) Операционная система 8 М Программа 1, 4М Программа 2, 3М Программа 3, 7М 8М Разделы одинакового размера Операционная система 8 М Программа 1, 4М Программа 2, 3М Программа 3, 7М Разделы разного размера Неиспользованная память
Операционные системы12 1 М 2 М 4 М 8 М 12 М Новые процессы 1 М 2 М 4 М 8 М 12 М Новые процессы Очереди для каждого раздела Общая очередь для всех разделов
Операционные системы13 Распределение памяти фиксированными разделами 2. Разделы разного размера. Очередь к каждому разделу. Достоинство Достоинство: возможность распределения процессов между разделами с минимизацией внутренней фрагментации. Недостаток: возможно неэффективное использование памяти за счет «простоя» больших разделов при наличии только небольших процессов. 1. Разделы одинакового размера. Недостатки: необходимость разработки оверлеев при больших размерах программ; неэффективное использование памяти (внутренняя фрагментация) 3. Разделы разного размера. Общая очередь к разделам. Достоинство Достоинство: улучшается использование памяти. Достоинства: простота, минимальные требования к операционной системе. Недостатки: 1) количество разделов, определенных во время генерации ОС (режим MFT OS/360), ограничивает число активных процессов; 2) неэффективное использование памяти.
Операционные системы Распределение памяти динамическими разделами ОС P1 P2 P3 P4 P5 P1 P2 P3 P5 P1 P3 P5 P6 t0t0 t1t1 t2t2 t3t3 ОС tktk
Операционные системы15 Распределение памяти динамическими разделами Достоинства: большая гибкость по сравнению с фиксированными разделами. Недостаток: внешняя фрагментация Функции ОС для реализации метода MVT OS/360 (ЕС ЭВМ): ведение таблиц свободных и занятых областей ОП с указанием начального адреса и размера ; при создании нового раздела просмотр таблиц и выбор раздела, достаточного для размещения процесса (наименьший или наибольший достаточный из свободных); загрузка процесса в выделенный раздел и корректировка таблиц свободных и занятых областей основной памяти; после завершения процесса корректировка таблиц свободных и занятых областей.
Операционные системы Распределение памяти перемещаемыми разделами ОС a b c d e P1 P2 P3 P4 P3 P4 P5 P6 P5 P7 Процедура сжатия a+b+c+d+e
Операционные системы17 Распределение памяти перемещаемыми разделами 1.Перемещение всех занятых участков в сторону старших или младших адресов при каждом завершении процесса или для вновь создаваемого процесса в случае отсутствия раздела достаточного размера. 2.Коррекция таблиц свободных и занятых областей. 3.Изменение адресов команд и данных, к которым обращаются процессы при их перемещении в памяти за счет использования относительной адресации. 4.Аппаратная поддержка процесса динамического преобразования относительных адресов в абсолютные адреса основной памяти. 5.Защита памяти, выделяемой процессу, от взаимного влияния других процессов. Достоинства распределения памяти перемещаемыми разделами: эффективное использование оперативной памяти, исключение внутренней и внешней фрагментации. Недостаток: дополнительные накладные расходы ОС.
Операционные системы18 Базовый регистр ОС ОС Управляющий блок процесса Начальный адрес процесса Сумматор Относительный адрес Компаратор ОС Граничный регистр Программа Данные Прерывание ОС Стек Абсолютный адрес Аппаратная поддержка перемещения
Операционные системы Виртуальная память Методы структуризации виртуального адресного пространства 1962 г. – Kilburn T. и др. One –Level Storage System Методы реализации виртуальной памяти: 1.Страничная виртуальная память – организует перемещение данных между ОП и диском страницами – частями виртуального адресного пространства фиксированного и сравнительно небольшого размера. 2.Сегментная виртуальная память предусматривает перемещение данных сегментами – частями виртуального адресного пространства произвольного размера, полученными с учетом смыслового значения данных. 3.Сегментно-страничная виртуальная память использует двухуровневое деление: виртуальное адресное пространство делится на сегменты, а затем сегменты делятся на страницы. Единицей перемещения данных является страница. 4.Для временного хранения сегментов и страниц на диске отводится специальная область – страничный файл или файл подкачки (paging file).
Операционные системы Страничная организация виртуальной памяти Виртуальное адресное пространство процесса 1 Виртуальное адресное пространство процесса 2 Виртуальные страницы k n Таблица страниц процесса 1 N ф.с. PADW PA Таблица страниц процесса 2 N ф.с. DW Магнитный диск Физическая память ВП 9 2 Страничный обмен 1110 Стр. 4 процесса 1 Стр. 3 процесса Стр. 1 процесса 2 Стр. 0 процесса
Операционные системы21 Виртуальный адрес Номер виртуальной страницы Смещение в виртуальной странице P SVSV Начальный адрес таблицы страниц ОС + Таблица страниц Nф.с. PADW N1 N N2 SFSF Оперативная память N2 SFSF 0 AT
Операционные системы Оптимизация функционирования страничной виртуальной памяти Методы повышения эффективности функционирования страничной виртуальной памяти: 1. Структуризация виртуального адресного пространства, например, двухуровневая (типичная для 32-битовой адресации). 2. Хранение активной части записей таблицы страниц в высокоскоростном КЭШе или буфере быстрого преобразования адреса (translation lookaside buffer – TLB). 3. Выбор оптимального размера страниц. 4. Эффективное управление страничным обменом, использование оптимальных алгоритмов замены страниц.
Операционные системы23 Двухуровневая страничная организация Регистр процессора Указатель на корневую таблицу страниц 10 бит 12 бит Виртуальный адрес Смещение N физ. стр Кбайт 4 Кбайт (1024 записи) Корневая таблица страниц (1024 записи) Таблица страниц размером Страничное прерывание Оперативная память
Операционные системы24 Виртуальный адрес TLB Таблица страниц Внешняя память Номер страницыСмещение N физ. Стр Смещение Основная память Поиск в TLB успешен Поиск в TLB неуспешен Загрузка страницы Ошибка обращения к странице (страничное прерывание) Обновление таблицы страниц Буфер быстрого преобразования адреса
Операционные системы25 Ассоциативное отображение Номер страницыСмещение Номер страницы Управляющая информация Номер физической страницы 1234 Номер физической страницы 674 Смещение Реальный адрес TLB
Операционные системы26 Смещение TLB Оперативная память Таблица страниц N физ. стр. Кэш N вирт. стр.Смещение Виртуальный адрес Отсутствует Имеется Значение Отсутствует Взаимодействие кэша основной памяти и TLB
Операционные системы27 Оптимальный размер страниц 1.С уменьшением размера страницы уменьшается внутренняя фрагментация. 2.С уменьшением размера страницы увеличивается объем страничных таблиц и следовательно накладные расходы на работу виртуальной памяти. 3.С увеличением размера страниц повышается скорость работы диска. 4.Частота страничных прерываний нелинейно зависит от размера страниц Размер страницы PNW Количество выделенных физических страниц Частота возникновения прерываний из-за отсутствия страниц P – размер процесса в страницах N – общее количество страниц процесса W – размер рабочего множества
Операционные системы28 Управление страничным обменом Задачи управления страничным обменом: - когда передавать страницу в основную память; - где размещать страницу в физической памяти; - какую страницу основной памяти выбирать для замещения, если в основной памяти нет свободных страниц; - сколько страниц процесса следует загрузить в основную память; - когда измененная страница должна быть записана во вторичную память; - сколько процессов размещать в основной памяти.
Операционные системы29 НАИМЕНОВАНИЕ ВОЗМОЖНЫЕ АЛГОРИТМЫ Стратегия выборки (когда?) По требованию, предварительная выборка Стратегия размещения (где?) Первый подходящий раздел для сегментной виртуальной памяти. Любая страница физической памяти для сегментно-страничной и страничной организации памяти. Стратегия замещения (какие?) Оптимальный выбор, дольше всех не использовавшиеся, первым вошел – первым вышел (FIFO), часовой, буферизация страниц. Управление резидентным множеством (сколько?) Фиксированный размер, переменный размер, локальная и глобальная области видимости. Стратегия очистки (когда?) По требованию, предварительная очистка Управление загрузкой (сколько?) и приостановкой процессов Рабочее множество, критерии L = S (среднее время между прерываниями = среднему времени обработки прерывания) и 50%
Операционные системы30 Страница 9 use = 0 Страница 21 use = 1 Страница 1 use = 1 Страница 17 use = 1 Страница 19 use = 0 Страница 563 use = 0 Указатель буфера Страница 9 use = 0 Страница 21 use = 1 Страница 1 use = 0 Страница 17 use = 0 Страница 11 use = 1 Страница 563 use = 0 Указатель буфера N Часовая стратегия замещения Состояние буфера перед замещением страниц Состояние буфера после замещения страниц
Операционные системы Сегментная организация виртуальной памяти Таблица кодировки символов Таблица кодировки символов достигла таблицы с исходным текстом Исходный текст Таблица констант Свободно Дерево синтаксического анализа Стек вызовов Виртуальное адресное пространство При компиляции возможно создание следующих сегментов: 1.Исходный текст, сохраненный для печати листинга программы. 2.Символьная таблица, содержащая имена и атрибуты переменных. 3.Таблица констант. 4.Дерево грамматического разбора, содержащее синтаксический анализ программы. 5.Стек, используемый для процедурных вызовов внутри компилятора.
Операционные системы32 Сравнение страничной и сегментной организации памяти Вопрос Страничная Сегментация Нужно ли программисту знать о том, что используется эта техника? Сколько в системе линейных адресных пространств? Может ли суммарное адресное пространство превышать размеры физической памяти? Возможно ли разделение процедур и данных, а также раздельная защита для них? Легко ли размещаются таблицы с непостоянными размерами? Облегчен ли совместный доступ пользователей к процедурам? Зачем была придумана эта техника? НетДа 1Много Да Нет Да Чтобы получить большое линейное адресное пространство без затрат на физическую память Для разбиения программ и данных на независимые адресные пространства, облегчения защиты и совместного доступа
Операционные системы33 Виртуальный адрес Номер сегмента - NСмещение - S + Физический адрес Таблица сегментов Базовый адрес Размер Управляющая информация Управляющая информация: P – присутствие; M – модификация; U – использование; Sh – разделение; S – защита. Недостатки сегментной организации: 1. Увеличение времени преобразования виртуального адреса в физический. 2. Избыточность перемещаемых данных. 3. Внешняя фрагментация памяти.
Операционные системы34 Сегментно-страничная организация виртуальной памяти Виртуальный адрес Номер сегмента Номер страницы Смещение Указатель на таблицу сегментов ++ Программа Механизм сегментации Механизм страничной организации Основная память Начальный адрес таблицы сегментов Номер сегментаНачальный адрес таблицы страниц Таблица сегментов Таблица страниц Номер страницы Номер физ. страницы Смещение
Операционные системы35 36 ВП 1 ВП 2 ВП N Оперативная память ВП 1 ВП 2 ВП N Способы создания разделяемого сегмента памяти
Операционные системы36 Виртуальная память Windows обеспечивает каждому процессу: 1. 4 Гбайт виртуального адресного пространства (2 Гбайт – ОС, 2 Гбайт – пользовательская программа) К независимых сегментов (8к локальных и 8К глобальных). Процесс ОС и системные сегменты 21 Уровень привилегий RPL = GDT – 0, LDT - 1 Индекс – номер сегмента (13 разр.) СЕЛЕКТОР LDT - локальная таблица дескрипторов прикладного процесса GDT – глобальная таблица дескрипторов процессов ОС и системных сегментов GDTR LDTR Дескриптор сегмента Начальный адрес сегмента в физической памяти
Операционные системы37 Ядро Обработчик системных вызовов Система защиты использует переменные, характеризующие уровень привилегий: -DPL (Descriptor Privilege Level) – задается полем DPL в дескрипторе сег- мента; -RPL (Requested Privilege Level) – запрашиваемый уровень привилегий, задается полем RPL селектора сегмента; -CPL (Current Privilege Level) – текущий уровень привилегий выполняемого кода задается полем RPL селектора кодового сегмента (фиксируется в PSW); -EPR (Effective Privilege Level) – эффективный уровень привилегий запроса. Контроль доступа к сегменту данных осуществляется, если EPL