- •Тема 1. Операционные системы
- •Тема 2. История ос
- •0.Аналитическая машина Чарльза Бэббиджа
- •Тема 3. Архитектура ос
- •Тема 4. Процессы и потоки
- •Тема 5. Обработка прерываний
- •Тема 6. Управление процессами и потоками
- •Тема 10.Взаимоблокировки
- •Тема 11.Управление памятью
- •Тема 12.Виртуальная память
- •Тема 13. Стратегии замещения виртуальной памяти
- •Тема 13.Файловые системы
- •Тема 14. Реализация некоторых подсистем ос Windows
- •Ipc (обмен)
- •Ipc (синхронизация)
- •Тема 15. Реализация некоторых подсистем ос Linux
- •Тема 7. Межпроцессное взаимодействие (Inter-Process Communication, ipc)
- •6.2) Аппаратная поддержка (xchg)
- •Тема 8. Примитивы межпроцессного взаимодействия
- •1) Семафоры
- •2) Мьютексы (mutex)
- •3) Мониторы
- •4) Очереди сообщений
- •5) Барьеры
- •Тема 9. Классические проблемы межпроцессного взаимодействия
Тема 12.Виртуальная память
Идея: создать иллюзию наличия большого количества памяти
Первая реализация — ЭВМ Atlas, 1960
Новое адресное пространство — пространство виртуальных адресов, виртуальное адресное пространство
Устройство управления памятью (MemoryManagementUnit, MMU) преобразует адреса виртуального пространства в адреса физического пространства
Динамическая трансляция адресов
Искусственная непрерывность памяти
Требуется хранить карту трансляции адресов
Проблема: карта трансляции не входит в оперативную память
Блочное размещение
Решение: группировать адреса в блоки
Проблема: какой размер блока выбрать?
Проблема: должны ли все блоки быть одинакового размера?
Два подхода:
Страничная организация
Сегментная организация
Страничная организация
Вся виртуальная и физическая память разбиваются на блоки одинакового размера
Адрес данного -> [номер страницы p, смещение d]
p -> p'
p' * ps . d = r
Не требуется хранить в памяти все страницы, принадлежащие процессу
Усложнение механизма трансляции адресов
Генерация страничного прерывания (pagefault) при отсутствии страницы в памяти
Хранение таблицы размещения страниц, состоящая из записей страничной таблицы (PageTableEntry)
Запись таблицы страниц
Бит резидентности
Адрес во вторичной памяти
Базовый адрес физической страницы
Способы трансляции адресов
Прямое отображение
Ассоциативное отображение
Смешанное отображение
Многоуровневые (иерархические) таблицы
Обращённые таблицы
Прямое отображение
Адрес данного -> [номер блока b, смещение d]
Регистр адреса таблицы размещения a
a + b -> b'
b' . d -> r
Простота
Таблица получается большой
Ассоциативное отображение
Применение ассоциативной памяти
p -> p'
p' . d -> r
Скорость
Дороговизна
Прямое/ассоциативное отображение
Применение аппаратного ассоциативного буфера быстрой трансляции (TranslationLookasideBuffer, TLB) в качестве кэша PTE
Компромисс между скоростью работы и стоимость решения
Многоуровневые (иерархические) таблицы
Позволяют хранить в памяти только часть общей таблицы
Адрес данного -> [адрес в таблице верхнего уровня p, адрес в таблице нижнего уровня t, смещение d]
a + p -> b, b + t -> p', p' . d -> r
Уменьшение фрагментации таблиц
Возможно замедление работы
Обращённые таблицы
Хранение одного PTE для каждой физической страницы
Применение хэш-таблиц
Фиксированный размер таблицы трансляции
Необходимо отдельно хранить список нерезидентных страниц
Возможно снижение скорости
Возможно применение дополнительной якорной хеш-таблицы
Сегментная организация
Код и данные программы делятся на блоки нужного для них размера
Адрес данного -> [Номер сегмента s, смещение d]
Генерация сегментного исключения при отсутствии сегмента в памяти
Запись таблицы сегментов
Бит резидентности
Адрес во вторичной памяти
Длина сегмента
Биты защиты
Физический базовый адрес сегмента
Трансляция прямым отображением
Регистр начала сегментной таблицы b
b + s -> s'
s' + d -> r
Разделение памяти при страничной организации
Пометка каждой страницы как разделяемой или неразделяемой
Копирование при записи (Copy-on-Write)
Бит чтения/записи в PTE
Разделение и защита памяти при сегментной организации
Пометка каждого сегмента как разделяемого или неразделяемого
Присваивание каждому процессу ключа защиты
Хранение прав доступа в STE — RWEA
RWEA -> режимы доступа
Сегментно-страничная организация
Разбиение сегментов на страницы
Адрес данного -> [Номер сегмента s, номер страницы p, смещение d]
Сегмент можно не загружать в память целиком
Трансляция смешанным отображением
Поиск s,p в TLB -> p'
Иначе:
a + s -> s'
s' + p -> r'
r' + d -> r
Чем больше таблиц хранится в памяти, тем меньше степень мультипрограммирования и тем ниже быстродействие
Разделение и защита при смешанной организации
Разделение — как при страничной организации
Защита — как при сегментной организации
Управление виртуальной памятью
Стратегии загрузки
Загрузка по требованию
Предварительная загрузка
Стратегии замены
Случайная замена
FIFO
LRU
LFU
NRU
Загрузка по требованию (ondemand)
Сначала загружается страница с первой инструкцией процесса
Другие страницы загружаются по мере обращения к ним
Возможно повышение степени мультипрограммирования
Ожидание при загрузке каждой страницы
Пространственно-временной показатель
Предзагрузка (prefetch, anticipatory)
Предугадывание необходимых страниц
Возможно ускорение работы системы
Возможно замусоривание памяти ненужными страницами
Совмещение загрузки по требованию и предзагрузки