- •2. Теоретические основы построения операционных систем
- •Процессы и ресурсы
- •2.1.1. Определение процесса
- •Операционная система
- •П роцесс 1 Процесс 2 . . . Процесс n
- •2.1.2. Понятие ресурса
- •2.1.4. Планирование процессов
- •Центральный процессор
- •Центральный процессор
- •2.1.5. Классификация процессов
- •2.1.6. Классификация ресурсов
- •2.1.7. Структуры данных для управления процессами и ресурсами
- •2.1.8. Ядро операционной системы и реализация базовых функций ос
- •2.2. Проблема синхронизации и взаимное исключение
- •2.2.1. Определение и свойства критической секции
- •2.2.2. Программные методы реализации взаимного исключения
- •2.2.3. Синхронизация процессов с помощью семафоров
- •2.2.4. Реализация примитивов взаимоисключения
- •2.2.5. Параллельное программирование и мониторы
- •2.2.6. Рандеву как модель организации взаимодействия процессов
- •2.2.7. Система прохождения сообщений
- •2.2.8. Многозадачность и языки программирования
- •Взаимодействие процессов и синхронизация задач в os/2
- •2.2.10. Организация взаимодействия процессов и потоков в Win32
- •2.3. Проблема тупика
- •2.3.1. Определение тупика
- •Необходимые условия возникновения тупика и решение задачи предотвращения тупика
- •2.3.3. Модель системы для исследования проблемы тупика
- •2.3.4. Методы распознавания тупика
- •2.3.5. Выход из тупика и восстановление работоспособности системы
- •2.3.6. Методы обхода тупиков
2.1.4. Планирование процессов
Все изменения состояния процессов в системе (кроме задержки и возобновления) непосредственно связаны с распределением ресурсов ВС. Процессы могут выполнять конкретные действия только в том случае, когда они имеют необходимые для этого ресурсы. Следовательно, для организации выполнения процессов необходимо реализовать схему определения порядка распределения ресурсов между существующими в ВС процессами, то есть спланировать доступ процессов к запрашиваемым ими ресурсам.
Планировщик - это программа в составе операционной системы, определяющая порядок предоставления общих ресурсов ВС процессам, запрашивающим эти ресурсы.
При построении системы управления процессами в большинстве операционных систем принята многоуровневая схема. Это означает, что в ОС различают несколько типов планировщиков, которые выполняют планирование на соответствующих уровнях. Эти планировщики носят различные названия в разных ОС, а в совокупности они и составляют систему управления процессами.
Наличие нескольких уровней управления процессами обусловлено частотным принципом построения ОС, а также существованием в системе процессов различных уровней. В общем случае выделяют три уровня планирования:
планирование верхнего уровня (или долгосрочное планирование),
планирование среднего уровня (среднесрочное планирование),
планирование на нижнем уровне (краткосрочное планирование, иногда называемое диспетчеризацией).
Средства планировщиков верхнего уровня определяют, каким программам будет разрешено активно конкурировать за захват ресурсов системы. Этот вид планирования называют еще планированием допуска в систему, так как на этом уровне определяется, какие программы будут допущены в систему (вошедшие в систему программы становятся процессами). Этот тип планирования выполняется для каждого процесса лишь один раз - при вводе в систему, поэтому этот уровень планирования и называют долгосрочным.
Планирование промежуточного уровня позволяет определить, какие из процессов в системе могут конкурировать за выделение им времени центрального процессора. Центральный процессор могут получить в свое распоряжение только те процессы, которые обладают всеми остальными ресурсами, необходимыми им для продолжения работы. Планировщик промежуточного уровня является буфером между множеством процессов, допущенных в систему и получивших ее ресурсы, и средствами предоставления центрального процессора. Он помогает достичь равномерной загрузки системы, оперативно реагируя на текущие колебания системной нагрузки, кратковременно приостанавливая и вновь возобновляя задержанные процессы.
Планировщики нижнего уровня определяют, какому из готовых к выполнению процессов будет предоставлен освободившийся центральный процессор. Этот планировщик выполняет функцию краткосрочного планирования или диспетчерскую функцию. Диспетчер процессов работает с большой частотой, поэтому он всегда располагается в оперативной памяти, входя в состав ядра ОС.
Во многих системах промежуточный уровень планирования не используется. Большинство систем планирования являются двухуровневыми. Связь между уровнями планирования и операциями, выполняемыми над процессами, а также состояниями процессов в двухуровневой системе, показана на рис.2.4.
Программы, ожидающие
ввода в систему
Ввод программ
Процессы, ожидающие
запуска
Порождение процесса Долгосрочное планирование
Процессы, ожидающие
активизации
Прерывание процесса Активизация процесса Краткосрочное планирование
Активные процессы,
выполняемые процессорами
Завершение
Завершенные процессы
Рис.2.4. Уровни планирования
При разработке планировщиков ставятся определенные цели. Цель планирования называется его стратегией (например, повышение производительности системы, минимизация времени ожидания). Одни и те же задачи, однако, могут быть решены различными способами. Способ достижения поставленной цели - это дисциплина планирования. При выборе и реализации дисциплины планирования учитываются следующие критерии:
являются ли процессы пакетными или диалоговыми или процессами реального времени;
приоритетность процессов (для процессов более высокого приоритета должны создаваться лучшие условия);
какие ресурсы требуются для выполнения процессов и их количество;
насколько часто при выполнении процессов происходят прерывания для обращения к системным функциям.
Планировщики различных уровней могут использовать при работе одни и те же алгоритмы, реализовывать общие методы планирования. Далее рассматривается организация планировщиков, ответственных за распределение времени центрального процессора в мультипроцессорной ОС.
Существуют дисциплины планирования без переключения и с переключением центрального процессора. Если после предоставления центрального процессора в распоряжение какого-либо процесса этот ресурс не может быть отобран и перераспределен, то говорят о дисциплине планирования без переключения. Если же распределенный процессу центральный процессор можно перераспределить до окончания его использования активным процессом, передав управление другому процессу, то говорят о дисциплине планирования с переключением. Планирование с переключением необходимо в системах, в которых процессы с высокими приоритетами требуют немедленного предоставления им центрального процессора, в системах реального времени и интерактивных системах.
Самая простая дисциплина планирования - планирование по принципу “первый пришедший обслуживается первым” (FIFO - First In First Out). В данном случае центральный процессор предоставляется в распоряжение процессов в порядке их поступления в очередь процессов, находящихся в состоянии готовности (рис.2.5).
Очередь процессов Завершение или блокирование
в состоянии
готовности
процесса и освобождение ЦП
