670 likes | 942 Views
Операционные системы . Управление памятью Скрипов Сергей Александрович skripov@csu.ru 2009. Типы адресов. Символьные имена. Виртуальные адреса. Физические адреса. Алгоритмы распределения памяти. Распределение памяти фиксированными разделами.
E N D
Операционные системы Управление памятью Скрипов Сергей Александрович skripov@csu.ru 2009
Типы адресов • Символьные имена. • Виртуальные адреса. • Физические адреса.
Распределение памяти фиксированными разделами Память заранее разбивается на несколько областей фиксированной величины. Размер разделов может быть неодинаковым. Очередной процесс помещается в общую очередь, либо в очередь к разделу. Процесс полностью загружается в подходящий раздел
Распределение памяти фиксированными разделами
Распределение памяти фиксированными разделами • + Простота реализации • Ограничение на количество процессов в системе (процессов не может быть больше, чем разделов) • Ограничение на максимальное количество используемой памяти (процесс не может выполниться, если он не входит ни в один раздел) • Неоптимальное использование памяти (процесс в любом случае занимает весь раздел)
Распределение памяти динамическими разделами Сначала вся память свободна Каждому новому процессу выделяется столько памяти, сколько ему нужно После завершения процесса, выделенная ему память освобождается
Распределение памяти динамическими разделами • Функции ОС для управления динамической памятью • Ведение таблиц свободных и занятый участков (в которых указываются начальные адреса и размеры участков) • При создании нового процесса – выбор подходящего свободного участка памяти по определенным правилам (первый попавшийся раздел, наименьший достаточный, наибольший достаточный)
Распределение памяти динамическими разделами
Распределение памяти динамическими разделами • + Отсутствие ограничений способа с фиксированными разделами; возможность более гибкого управления памятью. • Накладные расходы на ведение таблиц свободных/занятых участков (хотя относительно небольшие) • Фрагментация памяти. Наличие свободных участков, в которые не помещается ни один процесс.
Распределение памяти перемещаемыми разделами Распределение памяти аналогично распределению с динамическими разделами, однако выделенная память может быть перемещена по другим адресам. При перемещении памяти необходимо преобразовать используемые внутри программы адреса, так, чтобы она смогла нормально продолжить свою работу Перемещение происходит либо периодически, либо когда для нового процесса нет раздела достаточного размера
Использование внешней памяти • Необходимо больше памяти, чем есть реально в системе Неиспользуемые в данный момент участки памяти могут быть временно перемещены на жесткий диск • Оверлеи • Свопинг • Виртуальная память (Виртуальным называется ресурс, который представляется обладающим свойствами, которыми он реально не обладает)
Использование внешней памяти Оверлеи Оверлеи представляют собой части программы, которые совместно используют общую область памяти. В один и тот же момент времени резидентно размещаться в памяти может та или иная часть программы, необходимая для выполнения заданной функции. В процессе выполнения эти части программы могут замещать друг друга.
Использование внешней памяти • Свопинг • Образы процессов выгружаются на диск и возвращаются в оперативную память целиком • + Относительно простой способ управления памятью • Процесс, требующий памяти больше, чем реально есть в системе загрузить нельзя • Полная загрузка/выгрузка процессов требует много времени
Использование внешней памяти Виртуальная память + Позволяет полностью или почти полностью скрыть от прикладной программы реальную организацию памяти – каждый процесс имеет «личное» адресное пространство, которое практически не ограничено в размерах. + Позволяет защитить процессы друг от друга
Использование внешней памяти • Виртуальная память • Большие накладные расходы на преобразование виртуального адреса в физический. (Проблема решается аппаратной поддержкой виртуальной памяти) • Непредсказуемо время доступа к памяти (Частично решается применением алгоритмов, предсказывающих обращения к памяти)
Использование внешней памяти • Виртуальная память • Страничное распределение памяти • Сегментное распределение памяти • Сегментно-страничное распределение
Страничное распределение Физическая память делится на части фиксированного размера – страницы Виртуальное адресное пространство также делится на страницы аналогичного размера Виртуальная страница может либо находиться в физической памяти, либо быть выгруженной на жесткий диск Для каждого процесса хранится таблица страниц
Страничное распределение • Запись таблицыстраниц включает следующую информацию: • номер физической страницы; • признак присутствия; • признак модификации страницы; • признак обращения к странице.
Преобразование виртуального адреса в физический
Преобразование виртуального адреса в физический
Страничное распределение • В случае, если виртуальная страница, к которой произошел запрос, находится во внешней памяти (на жестком диске), процессор генерирует прерывание, и управление передается ОС, которая должна загрузить в физическую память требуемую страницу
Преобразование виртуального адреса в физический
Страничное распределение • Стратегии управления страничной памятью • Стратегия замещения - какую страницу нужно выгрузить во внешнюю память, чтобы освободить место. • Стратегия выборки - в какой момент следует переписать страницу из внешней памяти в физическую.
Страничное распределение • Стратегия замещения • FIFO алгоритм. Выгрузка самой старой страницы. • + Просто в реализации • - Эта стратегия с достаточной вероятностью будет приводить к замещению активно используемых страниц
Страничное распределение • Стратегия замещения • Выгрузка дольше всего не использовавшейся страницы. LRU (The Least Recently Used) • + Считается хорошей стратегией • - Сложно в реализации • - Требуется аппаратная поддержка
Страничное распределение • Стратегия замещения • Выгрузка редко используемой страницы. NFU (Not Frequently Used) • + Считается хорошей стратегией (В некоторых случаях лучше, чем LRU) • - Сложно в реализации • Требуется аппаратная поддержка • Алгоритм «ничего не забывает»
Страничное распределение • Стратегия выборки • По запросу • Опережающее чтение - кроме страницы, вызвавшей исключительную ситуацию, в память также загружается несколько страниц, окружающих ее.
Сегментное распределение Виртуальное адресное пространство делится на части – сегменты, размер которых определяется с учетом смыслового значения содержащейся в них информации Для каждого процесса хранится таблица сегментов
Сегментное распределение • Запись таблицысегментов включает следующую информацию: • базовый физический адрес сегмента; • размер сегмента; • правила доступа к сегменту; • признаки модификации, присутствия и обращения.
Преобразование виртуального адреса в физический
Сегментно-страничное распределение • Используется страничный механизм, и «поверх» него сегментный • Используется сегментный механизм, каждый сегмент делится на страницы
Сегментно-страничное распределение
Преобразование виртуального адреса в физический
Сегментно-страничное распределение
Преобразование виртуального адреса в физический
Кэширование данных Память вычислительной машины представляет собой иерархию запоминающих устройств. При уменьшении времени доступа растет стоимость памяти, и, соответственно уменьшается ее объем
Кэширование данных Регистры процессора Являются неотъемлемой частью процессора, обеспечивают очень высокое быстродействие. Регистры собираются из элементов для хранения информации – триггеров.
Кэширование данных Триггер
Кэширование данных Статическая оперативная память с произвольным доступом (SRAM, static random access memory) Выполнена из триггеров. Время доступа обычно больше, чем у регистров, так как необходимо время для выбора информации по нужному адресу
Кэширование данных SRAM + Быстрый доступ. Доступ к любой ячейке памяти в любой момент занимает одно и то же время. + Простая схемотехника — SRAM не требуются сложные контроллеры.
Кэширование данных • SRAM • - Высокое энергопотребление. • - Невысокая плотность записи (шесть элементов на бит). • Вследствие чего — дороговизна килобайта памяти.
Кэширование данных DRAM (dynamic random access memory) DRAM-память представляет собой набор запоминающих ячеек, которые состоят из конденсаторов и транзисторов Конденсаторы заряжают в случае, когда в ячейку записывается 1, и разряжают в случае, когда в ячейку необходимо записать 0. Для поддержания необходимого напряжения на обкладках конденсаторов ячеек и сохранения их содержимого, их необходимо периодически подзаряжать
Кэширование данных DRAM (dynamic random access memory) + Высокая плотность записи + Небольшое энергопотребление - Относительно большое время доступа
Кэширование данных Внешняя память + Невысокая стоимость хранения байта информации - Большое время доступа
Кэширование данных Кэш-память (cache), — способ совместного функционирования двух типов запоминающих устройств, отличающихся временем доступа и стоимостью хранения данных