36
Операционные Системы 7. Управление памятью Брагин Алексей Владимирович [email protected] ИУ9, МГТУ им. Н.Э. Баумана

Операционные системы 2015, лекция № 7

Embed Size (px)

Citation preview

Page 1: Операционные системы 2015, лекция № 7

Операционные Системы

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

Брагин Алексей Владимирович[email protected]

ИУ9, МГТУ им. Н.Э. Баумана

Page 2: Операционные системы 2015, лекция № 7

Задачи управления памятью

• Распределение ресурса «память» между различными, конкурирующими за неё процессами

• Максимизировать использование памяти

• Изолировать процессы

• Абстрагировать доступ к памяти для программистов

© 2013 Брагин А.В. 2

Page 3: Операционные системы 2015, лекция № 7

Инструменты управления памятью

• Регистры база-предел

• Своп

• Страницы (а также таблицы страниц)

• Сегменты (и таблицы сегментов)

• Страничное прерывание (page fault) и виртуальная память

© 2013 Брагин А.В. 3

Page 4: Операционные системы 2015, лекция № 7

Что в современных ОС?

• Основная абстракция - виртуальная память (virtual memory)– Эффективное использование реальной памяти

• VM позволяет программам работать без необходимости загружать всё их адресное пространство в физическую память

• Большинству программ не нужны сразу все их данные и код

– Гибкость программ• Сама программа «не знает» сколько физической памяти, а

сколько - свопа

– Защита• Виртуальная память изолирует адресные пространства

процессов друг от друга

© 2013 Брагин А.В. 4

Page 5: Операционные системы 2015, лекция № 7

Аппаратная поддержка для VM

• Виртуальная память требует аппаратной поддержки

– MMU

– TLB

– таблицы страниц

– Обработка страничных прерываний

• Обычно есть поддержка своппинга

• И ограниченной сегментации

© 2013 Брагин А.В. 5

Page 6: Операционные системы 2015, лекция № 7

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

• Это неэффективное использование памяти

• Снижается объём доступной памяти

• Два типа

– Внутренняя фрагментация

• Иногда, выделяется больше памяти, чем запрашивалось. Избыток выделенной памяти не используется.

– Внешняя фрагментация

• Свободная память в процессе выделения/освбождения разделяется на мелкие блоки.

© 2013 Брагин А.В. 6

Page 7: Операционные системы 2015, лекция № 7

Эволюция управления памятью

• Зачем?– Современные аспекты сформировались исторически

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

• Самое начало– Программы напрямую пользовались физической

памятью

– ОС загружала задание, оно выполнялось, ОС его выгружала

• Встраиваемые системы – обычно только одна программа

© 2013 Брагин А.В. 7

Page 8: Операционные системы 2015, лекция № 7

Своппинг

• Своппинг

– Сохранение полного состояния программы на диск

– Позволяет запустить другую программу

– А потом загрузить обратно предыдущую и продолжить её выполнение

© 2013 Брагин А.В. 8

Page 9: Операционные системы 2015, лекция № 7

Мультипрограммирование

• Одновременно несколько процессов/заданий

• Требования к менеджеру памяти

– Защита: ограничить адресное пространство, используемое процессами

– Быстрая трансляция адресов: Эта защита не должна «тормозить» процесс трансляции

– Быстрое переключение контекста

© 2013 Брагин А.В. 9

Page 10: Операционные системы 2015, лекция № 7

Виртуальные адреса для мультипрограммирования

• Упрощения управления памятью нескольких процессов: использование виртуальных адресов.

• Виртуальные адреса – независимость от физического расположения данных в памяти

• Процессорные инструкции используют виртуальные адреса

• ЦП преобразует их в физические (при помощи некоторой исходной информации от ОС)

© 2013 Брагин А.В. 10

Page 11: Операционные системы 2015, лекция № 7

Виртуальные адреса для мультипрограммирования 2

• Адресное пространство - множество виртуальных адресов, которые может использовать процесс

• Это самое начало того, что сейчас называется «виртуальной памятью»!

• Но в данном случае, гораздо примитивнее

• Просто преобразование (трансляция) виртуального адреса в физический

© 2013 Брагин А.В. 11

Page 12: Операционные системы 2015, лекция № 7

Фиксированные разделы

• Физическая память разбита на фиксированные разделы– Фиксированные – значит заранее

определенные, изменить в процессе работы нельзя

– Аппаратная поддержка: регистры база-предел• Физический адрес = виртуальный адрес + база

• Базовый регистр загружается ОС при переключении процесса

– Простая защита: Если адрес > база + предел…

© 2013 Брагин А.В. 12

Page 13: Операционные системы 2015, лекция № 7

Фиксированные разделы 2

• Преимущество – простой метод

• Недостатки

– Внутренняя фрагментация

• Доступный раздел больше, чем требуется

– Внешняя фрагментация

• Требуется большой объём памяти, но осталось только два маленьких раздела

© 2013 Брагин А.В. 13

Page 14: Операционные системы 2015, лекция № 7

Фиксированные разделы 3

© 2013 Брагин А.В. 14

раздел 0

раздел 1

раздел 2

раздел 3

0

2K

6K

8K

12K

Физическая память

смещение +

Виртуальный адрес

P2’s base: 6K

Регистр базы

2K

<?

нет

Срабатывание

защиты доступа

Регистр предела

да

Page 15: Операционные системы 2015, лекция № 7

Переменные разделы

• Очевидное улучшение: разбивать физическую память на разделы динамически– Аппаратные требования: регистры база-предел– Физический адрес = виртуальный адрес + база– Защита – если физический адрес больше, чем

виртуальный + предел

• Преимущества– Нет внутренней фрагментации (выделяется столько,

сколько запрашивается)

• Недостатки– Внешняя фрагментация: загрузка/выгрузка задач

оставляет необъединяемые «дыры» в памяти

© 2013 Брагин А.В. 15

Page 16: Операционные системы 2015, лекция № 7

Переменные разделы 2

© 2013 Брагин А.В. 16

Физическая память

смещение +

Виртуальный адрес

База P2

Регистр базы

Размер P3

<?

нет

Срабатывание

защиты доступа

Регистр предела

да

раздел 0

раздел 1

раздел 2

раздел 3

раздел 4

Page 17: Операционные системы 2015, лекция № 7

Переменные разделы 3

• Как бороться с фрагментацией в этом случае?

– Выгрузить программу

– Загрузить по другому адресу

– Исправить регистр базы

© 2013 Брагин А.В. 17

раздел 0

раздел 1

раздел 2

раздел 3

раздел 4

раздел 0

раздел 1

раздел 2

раздел 3

раздел 4

Page 18: Операционные системы 2015, лекция № 7

Страничная память

• Современный подход к решению проблемы

– Внешней фрагментации: используются блоки фиксированного размера в виртуальной и физической памяти

– Внутренней фрагментации: блоки достаточно малого размера

© 2013 Брагин А.В. 18

Page 19: Операционные системы 2015, лекция № 7

Страничная память 2

• С точки зрения программиста

– Процессам (виртуальное) адресное пространство представляется непрерывным, от байта 0 до байта N

– Это N зависит от аппаратной поддержки

– В реальности, виртуальные страницы распределены по «страницам» физической памяти. Не обязательно непрерывны!

© 2013 Брагин А.В. 19

Page 20: Операционные системы 2015, лекция № 7

Страничная память 3

• С точки зрения менеджера памяти– Эффективное использование памяти из-за очень

низкой внутренней фрагментации

– Внешняя фрагментация полностью отсутствует, и не нужно дефрагментировать

• С точки зрения защиты– Процесс имеет доступ только к своему адресному

пространству

• Положим, что все страницы резидентны в памяти!

© 2013 Брагин А.В. 20

Page 21: Операционные системы 2015, лекция № 7

Трансляция адресов

• Трансляция виртуального адреса

– Виртуальный адрес состоит из двух частей: номера виртуальной страницы (VPN) и смещения

– Номер виртуальной страницы – это индекс в таблице страниц (pagetable)

– Запись в таблице страниц (PTE – page table entry) содержит номер фрейма (PFN – page frame number)

© 2013 Брагин А.В. 21

Page 22: Операционные системы 2015, лекция № 7

Трансляция адресов 2

• Таблицы страниц

– Одна запись в таблице страниц (PTE) на одну страницу виртуального адресного пространства (VPN)

– Отображает VPN на PFN

© 2013 Брагин А.В. 22

Page 23: Операционные системы 2015, лекция № 7

Трансляция адресов 3

© 2013 Брагин А.В. 23

фрейм 0

фрейм 1

фрейм 2

фрейм Y

фрейм 3

физическая память

смещение

физический адрес

№ фрейма№ фрейма

таблица страниц

смещение

виртуальный адрес

№ вирт. страницы

Page 24: Операционные системы 2015, лекция № 7

Страничная память наглядно

• Основано на иллюстрации Gribble, Lazowska, Levy, Zahorjan

© 2013 Брагин А.В. 24

page frame 0

физическая памятьвиртуальное адресное

пространство

page frame 1

page frame 2

page frame 3

page frame 4

page frame 5

page frame 6

page frame 7

0

1K

2K

3K

4K

5K

6K

7K

8K

страница 0

страница 1проц

есс

0

0

K

2K

таблица страниц

страница 0

страница 1

Проц

есс 1

0

K

2K

таблица страниц

страница 2

страница 33K

4K

page frame 89K

page frame 910K

виртуальное адресное

пространство

Page 25: Операционные системы 2015, лекция № 7

Пример трансляции адресов

• Допустим

– 32-битная разрядность адресов

– Размер страницы = 4096 байт

– VPN длиной 20 бит, смещение 12 бит

• Преобразуем адрес 0x43456323

– VPN = 0x43456 и смещение = 0x323

– Допустим, что в ячейке таблицы страниц по индексу 0x43456 находится значение PFN 0x1002

– Физический адрес = 0x01002323

© 2013 Брагин А.В. 25

Page 26: Операционные системы 2015, лекция № 7

Возможности PTE

• Отображение на номер фрейма – не единственная возможность

• Если уже есть таблица, то можно

– Добавить защиту доступа

– Добавить доп вспомогательную информацию (напр., используется ли эта виртуальная страница или нет)

© 2013 Брагин А.В. 26

Page 27: Операционные системы 2015, лекция № 7

Запись PTE

• V – может ли использоваться данная запись PTE (valid or not)

• R – был ли доступ к этой странице

• M – была страница модифицирована

• P – какие операции разрешены

• PFN – номер фрейма

© 2013 Брагин А.В. 27

PFNPMRV

Page 28: Операционные системы 2015, лекция № 7

Преимущества страничной памяти

• Легко выделять физическую память– Списки свободных фреймов. Выделить фрейм –

просто удалить из списка свободных.

– Внешняя фрагментация не проблема, т.к. фреймы одного размера

• Естественный подход к виртуальной памяти– Всей программе не нужно быть резидентной – это

«побочный» продукт

– Все страницы одного размера

– Основа – устранение внешней фрагментации

© 2013 Брагин А.В. 28

Page 29: Операционные системы 2015, лекция № 7

Недостатки страничной памяти

• Внутренняя фрагментация

– Процессам могут быть нужны размеры не кратные размеру страницы

– Но по сравнению с размером адресного пространства, размер страницы очень мал

• Накладные расходы при обращении к памяти

– Вначале к таблице страниц, потом к памяти

– Решение: аппаратный кэш для обращений к таблице страниц (TLB – translation lookaside buffer)

© 2013 Брагин А.В. 29

Page 30: Операционные системы 2015, лекция № 7

Недостатки страничной памяти 2

• Большой объём памяти, требуемый для хранения таблиц страниц– 1 PTE на 1 страницу в виртуальном адресном

пространстве (АП)

– 32 битное АП с 4КБ страницами = 2^20 PTE = 1 048 576 PTE

– 4 байта на PTE = 4Мб на таблицу страниц• В ОС отдельные таблицы страниц для каждого процесса,

итого напр. 25 процессов * 4Мб = 100 Мб таблиц страниц

– Решение: Хранить таблицы страниц в страничной памяти!

© 2013 Брагин А.В. 30

Page 31: Операционные системы 2015, лекция № 7

Сегментация

• Страничная организация памяти– Решает разные проблемы типа фрагментации– Адресное пространство – линейный массив байтов– Разделённый на страницы одинакового размера

(напр., 4Кб)– Использует таблицу страниц для отображения

виртуальной страницы на физический фрейм

• Сегментация– Разделяет адресное пространство на логические

блоки (стэк, код, куча, и т.п.)– Виртуальный адрес в виде <сегмент, смещение>

© 2013 Брагин А.В. 31

Page 32: Операционные системы 2015, лекция № 7

Сегментация: Зачем?

• Позволяет разделить разные участки памяти в соответствии с их назначением

• Изменяемый размер

• Два варианта

– 1 сегмент на процесс – переменный раздел

– Много сегментов на процесс - сегментация

© 2013 Брагин А.В. 32

Page 33: Операционные системы 2015, лекция № 7

Сегментация: аппаратная поддержка

• Таблица сегментов

– Одна пара база/лимит на сегмент

– Сегменты идентифицируются номером, который индекс в таблице

– Виртуальный адрес пара <сегмент, смещение>

– Физический адрес = база сегмента + смещение

© 2013 Брагин А.В. 33

Page 34: Операционные системы 2015, лекция № 7

Сегментация: Недостатки

• Все недостатки, присущие организации памяти разделами переменной длины присущи сегментной организации

– Внешняя фрагментация и т.п.

© 2013 Брагин А.В. 34

Page 35: Операционные системы 2015, лекция № 7

Сегментно-страничная организация

• Объединяет страничную и сегментную адресацию– Архитектура x86 поддерживает и сегментную и

страничную

• Сегменты используются для управления логическими блоками. Обычно сегменты большие (множество страниц)

• Сегменты разбиваются на страницы– У каждого сегмента своя таблица страниц

© 2013 Брагин А.В. 35

Page 36: Операционные системы 2015, лекция № 7

Сегменты в современных ОС

• Лишь очень ограниченное применение

• Например сейчас в Linux

– 1 сегмент кода ядра, 1 сегмент данных ядра

– 1 сегмент кода пользователя, 1 сегмент данных пользователя

– Все сегменты странично организованы

© 2013 Брагин А.В. 36