- •Проектирование Операционных Систем
- •Определение ос
- •Промышленная эксплуатация
- •Принцип модульности
- •Принцип функциональной избирательности
- •Принцип перемещаемости
- •Принцип защиты
- •Состояние процессов
- •Переходы между состояниями
- •Классификация процессов
- •Характеристики процессов
- •Определение
- •Классификация ресурсов
- •Интерфейс пользователя
- •Командный интерфейс
- •Примеры командных файлов из операционных систем
- •Эльбрус
- •3. Vm, os/2: rexx (пример аналога команды unix Grep)
- •Графический интерфейс
- •Основные понятия gui
- •Обработка прерываний
- •Подсистемы ос
- •Подсистема управления процессами
- •Долгосрочное планирование
- •Краткосрочное планирование
- •Дескрипторы процессов
- •Искусственное снижение уровня мультипрограммирования
- •Подсистема распределения ресурсов
- •Подсистема управления памятью
- •Два уровня распределения оперативной памяти
- •Задачи распределения памяти
- •Выделение
- •Подсистема управления вводом/выводом
- •Требования к подсистеме управления ввода/вывода:
- •Буферизация ввода вывода
- •Пример реализации ввода/вывода в системе unix
- •Пример реализации ввода/вывода в ос vm
- •Организация виртуальной памяти
- •Структуризация адресных пространств
- •Схемы страничной структуризации.
- •Схемы сегментной структуризации.
- •Сегментно-страничная структуризация
- •Требования к вп
- •Задачи управления виртуальной памятью
- •Задача размещения
- •Задача перемещения
- •Задача взаимного исключения
- •Задача «производитель-потребитель»
- •Модификации данной задачи
- •Задача «читатели-писатели»
- •Задача «обедающие философы»
- •Механизмы синхронизации Критерии оценки механизмов синхронизации
- •Архитектура механизмов синхронизации
- •Синхронизация с помощью прерываний
- •Синхронизация при помощи переменной состояния
- •Семафоры
- •Простые семафоры
- •Множественные семафоры
Подсистема управления памятью
Любая ОС в своем составе имеет подсистему управления памяти. Так как сама ОС требует эту подсистема.
-
Алгоритмы распределения памяти существенно зависит от класса вычислительных машин.
-
Для персональных компьютеров на первое место вышло удобство предоставления доступа.
-
Для больших и очень больших вычислительных машин основным требованием является эффективное использование памяти.
-
Некоторые операционные системы стремятся предоставить пользователю память с улучшенными свойствами (например с помощью виртуальной памяти)
-
Оперативная память является особым ресурсом. Предоставление оперативной памяти без предоставления центрального процессора – бессмысленно – следовательно распределение памяти должно быть согласованно с распределением процессора.
Два уровня распределения оперативной памяти
На этапе долгосрочного планирование, статически работа получает зону. В зависимости от конкретной операционной системы зона может представлять собой часть реальной памяти или виртуальное адресное пространство.
Причем во втором случае возможны варианты: предоставляется пространство целиком или на одном адресном пространстве может существовать больше одной работы.
Краткосрочное планирование: Распределение памяти внутри зоны. Внутри зоны память распределяется динамически при краткосрочном планировании.
Задачи распределения памяти
В любой момент времени зона представляет собой последовательность чередующихся случайным образом распределенных и свободных фрагментов памяти. Фрагменты могут быть разного размера.
Задача распределения памяти состоит из:
-
Учет.
-
Выделение.
-
Возврат.
-
Дефрагментация.
Учет
Учету могут подвергаться или только свободные фрагменты, или и свободные, и распределенные. Результат учета – цепочки фрагментов памяти. Каждому фрагменту соответствует его дескриптор.
Обычно дескриптор содержит следующую информацию:
-
Адрес фрагмента (необязательно).
-
Размер фрагмента.
-
Адрес следующего фрагмента в цепочке.
Цепочек фрагментов, как свободных, так и распределенных, может быть несколько.
Фрагменты включаются в ту или иную цепочку, в соответствии со своим размером, тем самым повышается быстродействие системы и снижается фрагментация.
Цепочки могут быть упорядоченными, а могут быть и не упорядоченными.
Выделение
Выделение памяти происходит по явному запросу программы. Запрос удовлетворяется за счет свободных фрагментов памяти. Цепочка свободных фрагментов выбирается в соответствии с размером запрашиваемой области.
Алгоритм выделения:
-
Выбор цепочки содержащий свободные фрагменты минимально достаточного размера.
-
Поиск подходящего фрагмента.
-
Если фрагмент не найден, перейти к пункту 7.
-
Если выбранный фрагмент по размеру превосходит запрошенный, разбить выбранный фрагмент на две части.
-
Первая часть, размер которой соответствует запросу будет предоставлена программе.
-
Вторая часть должна быть включена цепочку свободных фрагментов соответствующего размера.
-
Включить предоставленный программе фрагмент в цепочку выделенных блоков.
-
Вернуть управление программе.
-
Выбрать цепочку свободных фрагментов большего размера и перейти к пункту 2.
-
Если цепочки исчерпаны, отказать программе в удовлетворении запроса.
Возможно, что при удовлетворении запроса, ОС должны выполнить дефрагментацию.
Некоторые ОС допускают перенос занятых фрагментов в новое место. В этом случае, для удовлетворения запроса, возможно понадобится перемещение распределенных фрагментов с целью получения в результате последующей дефрагментации свободного фрагмента требуемого размера.
Возврат
Возврат памяти выполняется при освобождении ранее заданных участков. Запрос на возврат может быть выдан явно, а так же возможно неявное выполнение возврата при завершение работы программы.
При выполнении возврата, так же возможно выполнение дефрагментации.
Дефрагментация
Дефрагментация памяти выполняется с целью снижения количества фрагментов памяти. Дефрагментация состоит в объединении смежных свободных участков. В случае ОС допускающей перенос занятых фрагментов, при дефрагментации может быть выполнен их перенос, с целью получения свободного фрагмента большего размера.
Критерии оценки качества решения задачи распределения памяти
-
Затраты времени ОС на решение этой задачи.
-
Потери памяти.
Примеры реализации задачи (OS IBM)
Режим MFT
Вся память делится на фиксированное количество зон. Размер каждой зоны определяется при генерации системы. Работа получает свободную зону, если размер зоны не меньше требуемого объема памяти. Кроме того, не должно быть более приоритетных работ, претендующих на эту зону.
Режим MDT
Количество и размер зон заранее не определены. Зоны создаются динамически, в соответствии с характеристиками выполняемых работ. Каждая зона имеет свой дескриптор, хранящийся в дескрипторе работы. Память зоны защищена от вмешательства других программ.
Ни в режиме MFT, ни в режиме MDT работа не может выйти за границу своей зоны. Таким образом, если программист не верно оценил объем требуемой памяти, программа выполнится не может.