СИСТЕМНОЕ И ПРИКЛАДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Лекция 3. ОС: Управление памятью. Управление памятью • Физическое пространство ОП • доступно процессору • упорядочено, адресует банки памяти • Виртуальное адресное пространство • отображение пространства имён на подмножество реального пространства • две стратегии отображения - компиляция абсолютной двоичной программы, точное соответствие виртуальных адресов физическим - отображение осуществляется ОС 2 Организация памяти 3 Виртуальная память Суть концепции • адреса, с которыми работает программа, отличаются от реально существующих в памяти • виртуальный адрес транслируется в реальный • не обязательно сохраняя смежность адресов • группировка в виртуальные блоки • одинаковый размер блоков – страничная модель • разные размеры блоков – сегментная модель • адресация: номер блока и смещение 4 Организация и распределение памяти Менеджер памяти отвечает за: • выбор момента помещения программы в ОП • выбор места в ОП для размещения программы • выбор программы на удаление в случае исчерпания памяти 5 Организация и распределение памяти • Простое непрерывное распределение памяти – самая простая модель (пример – MS-DOS): • область ОС • область размещения исполняемой задачи • свободная область • Оверлейные структуры • программа разбивается на сегменты • в памяти – только главная часть и один или несколько неперекрывающихся сегментов • при завершении исполнения сегмента: - сегмент обращается к ОС для перехода на следующий - сегмент возвращает управление главному сегменту 6 Организация и распределение памяти • Разбиение памяти на разделы • статическое (фиксированные границы) - при генерации ОС или административно • динамическое (подвижные границы разделов) - диспетчер памяти выделяет раздел нужного размера - при освобождении раздела диспетчер пытается объединить смежные участки памяти (дефрагментировать) - недостаток – потеря времени на реогранизацию 7 Организация и распределение памяти • Сегментный способ организации памяти (пример – OS/2) • программа загружается по частям • программные модули могут быть разделяемыми (являются отдельными сегментами) • недостатки: - замедляется доступ к памяти - затраты на поддержку таблиц дескрипторов сегментов - фрагментация памяти 8 Организация и распределение памяти • Страничный способ организации • блоки фиксированной длины (например, 4-8 Кбайт) • отображение номера виртуальной страницы в номер реальной • адресация – номер страницы и смещение 9 Организация и распределение памяти • Основное достоинство страничной организации – минимальная фрагментация • Недостатки • затраты на хранение и обработку дескрипторных таблиц • разбивка на страницы случайна, межстраничные переходы чаще межсегментных 10 Организация и распределение памяти • Странично-сегментный способ организации памяти • программа разбивается на логические сегменты • виртуальный адрес - номер сегмента - вирутальная страница и индекс - т.е. сегменты разбиты на страницы, все страницы сегмента загружаются в память • ниже фрагментация, более чёткое логическое разделение памяти • более затратно по времени доступа к памяти 11 Стратегии управления ОС реализует подкачку с диска (из своп-файла), применяя один из алгоритмов выборки: • Идеальный алгоритм (нереализуем) • заменить ненужную в будущем страницу • Выталкивание случайной страницы • просто, неэффективно • FIFO – выталкивается самая старая страница • может быть удалена активно используемая • LRU (Least Recenly Used) – выталкивается та, к которой дольше всего не обращались • требуется аппаратная поддержка (очередь страниц) • LFU (Least Frequently Used) – выталкивается реже всего используемая страница • может быть вытолкнута только что загруженная страница • NUR (Not Used Recently) – выталкивается не использовавшаяся в последнее время страница • биты-признаки: обращения и модификации 12 Стратегии управления • В большинстве современных ОС используется дисциплина LRU как наиболее эффективная. • Примеры: OS/2, Linux • FIFO – Windows NT • для устранения недостатков FIFO применяют «буферизацию» предназначенных к выборке страниц - если происходит обращение, страница удаляется из кандидатов на выгрузку 13 Защита на уровне страниц Механизм защиты: • Процессор определяет допустимость операции • сравнивает текущий режим процессора и вид обращения к памяти с атрибутами страницы • Страничное нарушение: • при попытке записи в страницу с атрибутом "только чтение" • при попытке обращения к странице ядра из режима пользователя • при попытке чтения или записи страницы с атрибутом "только выполнение" • при любом обращении к отсутствующей странице • Вызывается обработчик страничного нарушения, который является частью ОС 14 Модель памяти приложения Время жизни объектов Три режима выделения памяти: • Статический • память выделяется и инициализируется при запуске программы • Стековый • память выделяется на стеке - размер стека ограничен - время жизни объектов соответствует вложенности создающих их подпрограмм • Динамический • память выделяется в динамической памяти (куче) • время жизни регулируется программистом (или сборщиком мусора) • возможны утечки памяти 16 Время жизни объектов 17 Автоматическое управление памятью • Динамическая память контролируется с помощью специальных объектов или структур • «умный указатель» • счётчик ссылок 18 Сборка мусора • Сборщик мусора производит поиск и утилизацию недостижимых объектов • Требования к сборщику мусора • Качественность (обязательно) - каждый собираемый объект должен быть недостижимым (нет ссылок) • Полнота (желательно) - каждый недостижимый объект должен быть собран 19 Сборка мусора Этапы сборки мусора • пометка • обход всех ссылрок рекурсивно, пометка достижимых объектов • чистка • удаление недостижимых объектов 20 Сборка мусора Стратегии: • «всё или ничего» • при нехватке памяти запускается полный цикл сборки • недостаток – остановка процесса выполнения программы на время сборки • продвинутый подход • наличие API для программного запуска сборки мусора • сборка мусора поколений - принцип «старые объекты не трогать» • параллельная сборка мусора (на лету) • отдельный поток сборки мусора 21 Сборка мусора Связь между поколениями объектов 22