Память.ppt
- Количество слайдов: 20
Управление памятью Одной из основных функций операционной системы является эффективное управление памятью. Многозадачная ОС должна обеспечивать: 1 Выполнение задач, размер которых превышает размер оперативной памяти. 2 Выполнение частично загруженных в память задач для минимизации времени их запуска. 3 Размещение нескольких задач в памяти одновременно для повышения эффективности использования процессора. 4 Размещение задачи в произвольном месте оперативной памяти. 5 Размещение задачи в нескольких различных частях оперативной памяти. 6 Совместное использование несколькими задачами одних и тех же областей памяти. Например, несколько процессов, выполняющих одну и ту же программу, могут совместно использовать сегмент кода.
Управление памятью Оперативная память может быть представлена в виде последовательности байтов, каждый из которых имеет свой уникальный адрес, называемый физическим адресом. Недостатки подхода, при котором процесс напрямую работает с физическим адресом (напрямую отображается в ОП) 1 Защита памяти одного процесса от другого 2 Распределение адресного пространства (каждый процесс должен занимать непрерывную и непересекающуюся последовательность адресов) 3 Ограничивает число процессов, работающих в системе (если исчерпается весь объем ОП, больше процессов запустить будет нельзя)
Управление памятью Все перечисленные проблемы преодолимы с помощью виртуальной памяти. При этом адреса, используемые приложениями и самим ядром, не обязаны соответствовать физическим адресам Смысл виртуальной памяти заключается в том, что каждый процесс выполняется в собственном виртуальном адресном пространстве.
Управление памятью
Управление памятью Требования к системе виртуальной памяти: 1 управление адресным пространством 2 преобразование адресов 3 управление физической памятью 4 защита памяти 5 разделение памяти 6 отслеживание загрузки системы Недостатки системы виртуальной памяти 1 таблицы трансляции адресов и другие структуры данных, создаваемые для управления памятью, занимают память 2 ко времени выполнения каждой инструкции прибавляются затраты на преобразование адресов
Управление памятью Свопинг (swapping)
Управление памятью Страничное замещение Страницы и страничные фреймы
Управление памятью Преимущества загрузки страниц по запросу 1 Размер программы ограничивается только максимальным объемом виртуальной памяти, который на 32 -разрядных машинах равен 4 гигабайтам; 2 Начальная загрузка программы происходит быстро, поскольку для начала работы программы не требуется полностью помещать ее в память; 3 Одновременно в системе может быть загружено сразу несколько программ, так как в определенный момент времени лишь некоторая часть страниц каждой из них должна находиться в памяти; 4 Перемещение отдельных страниц памяти намного проще для системы, чем свопинг процессов или сегментов целиком.
Управление памятью Возможное местонахождение страниц процесса
Управление памятью В любой момент времени конкретная страница памяти процесса может находиться в одном из следующих состояний резидентная (resident). Страница загружена в основную память. Элемент таблицы страниц содержит номер странчного фрейма; заполненная по необходимости (fill-on-demand). Процесс пока не произвел ссылку на такую страницу. Она будет помещена в память при первом обращении к ней. Существует два типа страниц, заполняемых при необходимости: заполненная текстом (fill-from-text). При первом обращении в страницу считываются коды и данные из исполняемого файла; заполненная нулями (zero-fill). Страница используется для хранения неинициализированных данных, и заполняется нулями при необходимости; выгруженная (outswapped). Страница, которая была считана в память, а затем выгружена в область свопинга для того, чтобы освободить память для размещения другой страницы. Такие страницы могут быть восстановлены из области свопинга
Управление памятью Связь между структурами
Управление памятью Для контроля нахождения страниц в системе имеется специальная структура as, указатель на которую находится в структуре proc. Структура as содержит: 1 указатель на список описателей сегментов 2 общий текущий размер физической памяти 3 указатель на некоторую аппаратно-зависимую структуру, данные которой используются при отображении виртуальных адресов в физические. Описатель каждого сегмента содержит индивидуальные характеристики сегмента: 1 виртуальный адрес начала сегмента 2 размер сегмента в байтах 3 список операций, выполняемых над данными сегмента 4 статус сегмента (напр, в каком режиме к нему возможен доступ, допускается ли совместное использование) 5 указатель на таблицу описателей страниц сегмента 6 прямые и обратные ссылки по списку описателей 7 ссылка на общий описатель виртуальной памяти as
Управление памятью Схема перемещения страниц
Управление памятью Страничная система может использовать четыре различных типа карт трансляции адресов для поддержки виртуальной памяти Карта внешней памяти Аппаратное преобразование адресов. Карта адресного пространства Карта физической памяти
Управление памятью Страничная подкачка реализуется частично ядром, частично страничным демоном Периодически для каждого процесса страничным демоном производятся следующие действия: 1 просматриваются таблицы отображения всех сегментов ВП этого процесса 2 если элемент таблицы отображения содержит ссылку на описатель физической страницы, то анализируется признак обращения 3 если признак установлен, то страница считается входящей в рабочий набор данного процесса, и сбрасывается в нуль счетчик старения данной таблицы 4 если признак не установлен, то к счетчику старения добавляется единица, а страница приобретает статус кандидата на выход из рабочего набора процесса 5 если при этом значение счетчика достигает некоторого критического значения, страница считается вышедшей из набора процесса, и ее описатель заносится в список страниц, которые можно откачать во внешнюю память
Управление памятью Стратегия замещения страниц Управлении памятью UNIX делится на аппаратно-зависимую и аппаратно-независимую части. Аппаратная часть интерпретирует адрес памяти, вырабатываемый командой, аппаратурой не как реальный физический адрес, а как некоторая структура, разные поля которой обрабатываются разным образом. Аппаратно-независимая часть описывается структурой as и связывается с конкретной аппаратной реализацией с помощью аппаратно-зависимой части. При замещении страниц ядро может выбрать правило либо локального, либо глобального замещения страниц. Обычно для замещения страниц применяется правило наименее частого использования (LRU).
Управление памятью Страничное замещение в BSD Вся ОП делится на три части. Первые две фиксированы в ОП (не выгружаются) – ядро и карта памяти. Остальная часть поделена на страничные блоки, каждый из которых может быть занят текстом, данными, стеком или быть свободным В системе поддерживается количество страниц не меньшее некоторого заданного параметра lotsfree(как правило ¼ памяти). Если становится меньше, начинается откачка страниц из памяти на диск. Страничный демон использует модификацию алгоритма часов
Управление памятью Страничное замещение в System V Страничная подкачка в System V во многом похожа на BSD. Но есть некоторые отличия. 1. Используется оригинальный алгоритм с одной стрелкой. Страница помещается в список свободных, если не использовалась в течении нескольких проходов. 2. Вместо переменной lotsfree, используются две переменные min и мах. Страничный демон начинает освобождать страницы, когда их количество становится меньше min, пока число свободных страниц не не сравняется с мах.
Управление памятью в Linux Виртуальное адресное пространство процесса делится на однородные непрерывные области, состоящие из соседних страниц с одинаковым режимом защиты и свойствами подкачки Каждый процесс имеет список областей, где каждая область представлена структурой vm_area_struct. 1 Режим защиты (чтение, чт/запись) 2 Является ли данная область фиксированной или выгружаемой 3 Направление роста области 4 Является ли область приватной или совместно используемой 5 Есть ли у области место хранения на диске и где оно расположено (текстовые сегменты имеют в качестве места резервного копирования двоичные файлы, отображаемые на память – соответствующие им файлы, напр, библиотеки. )
Управление памятью в Linux В Linux используется трехуровневая система страничной подкачки. Каждый виртуальный адрес разбит на четыре поля: Глобальный каталог Средний каталог страниц Каталог страница Таблица страниц середина смещение страница