Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
os4.doc
Скачиваний:
0
Добавлен:
20.06.2023
Размер:
403.46 Кб
Скачать

4.7. Планирование загрузки процессора в ядре

4.7.1. Классификация алгоритмов планирования

Каждому процессу необходимы вычислительные ресурсы и ресурсы данных для выполнения.

ОС должна так предоставлять эти ресурсы процессам, чтобы все процессы выполнились с учетом своих ограничений, например, по времени.

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

Проблема планирования чрезвычайно сложна и много тысяч научных статей написано о том, как планировать множество процессов в системе с ограниченным количеством ресурсов так, чтобы все процессы выполнили свои заданные временные требования.

Логически планирование загрузки процессора разделяется на три уровня.

  1. Самый верхний уровень, где определяется, какие вообще процессы будут допущены в систему для борьбы за ресурсы.

  2. Промежуточный уровень, где определяется, каким процессам будет разрешено бороться за центральный процессор. Этому уровню соответствует приведенная выше схема ядра.

  3. Нижний уровень планирования, где определяется, какой процесс из списка готовых процессов, будет допущен к выполнению в качестве активного процесса. Этот уровень планирования называется диспетчеризацией.

Выбор стратегий планирования является сложной задачей и зависит от физической сущности процессов.

В целом к стратегиям планирования, как правило, относят стратегии третьего нижнего уровня. Поэтому и мы рассмотрим их более подробно.

Классификацию алгоритмов планирования дает следующая диаграмма:

Алгоритмы планирования

Динамические Статические

Вытесняющие Невытесняющие Вытесняющие Невытесняющие

Планировщик называется динамическим (или он-лайн-планировщиком или оперативным планировщиком), если он принимает свои планирующие решения во время выполнения, выбирая одну задачу из очереди готовых задач.

Динамические планировщики гибкие и адаптируются к текущей окружающей ситуации выполняющихся задач.

При этом затраты ресурсов (времени) на принятие решений могут быть существенными.

Планировщик называется статическим, если он использует заранее подготовленные (до начала выполнения процессов) планирующие решения.

Неоперативно системой генерируется таблица диспетчеризации для диспетчера.

Таблица диспетчеризация содержит всю информацию, которая необходима диспетчеру во время выполнения, чтобы в каждый дискретный момент решить, какой процесс будет выполняться следующим.

Для этой цели необходимо априорное знание о характеристиках группы процессов, которые будут выполняться.

Например, максимальные времена выполнения, ограничения предшествования, ограничения взаимного исключения и предельные задержки.

Затраты времени на выполнение такого диспетчера малы по сравнению с динамическим планировщиком.

Планирование называется вытесняющим (или планирование с переключением задач), если текущая выполняющаяся задача может быть вытеснена (прервана), если более важная задача запрашивает сервис. Т. о. в системах с вытеснением процессор в любой момент времени может быть отобран у задачи.

Планирование называется «невытесняющим» (или планирование без переключения задач), если текущая выполняющаяся задача не будет прервана до тех пор, пока она сама не решит освободить выделенные ей ресурсы – обычно после завершения. Системы без вытеснения позволяют задаче выполняться до завершения или добровольного освобождения процессора.

Системы с вытеснением более справедливо регулируют использование системы. Но вытеснение требует определенных накладных расходов. И нельзя однозначно утверждать, что системы с вытеснением эффективнее систем без вытеснения. Просто разработчики должны учитывать особенности той или иной ОС.

Например, Linux и Windows относятся к классу систем с вытеснением, поэтому алгоритмы планирования в них сложны и включают в себя сложную логику и большое число инструкций.

Ранние версии Novell NetWare являются ОС без вытеснения и поэтому имеют значительно более быстрые алгоритмы планирования. Но для переключения задач сам разработчик должен включать в задачи вызов ThreadSwitch(), обеспечивающий явное переключение задач.

В рамках стратегии с вытеснением возможна установка постоянного или переменного интервала времени переключения задач. При этом переменный интервал времени можно реализовать одним из двух способов:

    1. После каждого прерывания перепрограммировать таймер на новый интервал времени до следующего прерывания;

    1. Делать переключение на другие задачи не после каждого прерывания.

Размер кванта времени имеет большое значение для производительности ядра и должен быть оптимизирован.

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

Если квант времени очень маленький, то растут потери времени на контекстные переключения.

Оптимальный размер кванта времени определяется, очевидно, и загрузкой и характером самих процессов.

С точки зрения временных соотношений, невытесняющее планирование целесообразно использовать в системе, где выполняется много задач, длительность которых мала по сравнению с временем переключения контекста.

Существуют еще аспекты, по которым проводится классификация алгоритмов планирования. Так, например, рассматривают централизованное и распределенное (децентрализованное) планирование. Такая классификация может относиться к распределенным вычислительным системам.

В распределенной системе можно принимать планирующие решения:

  1. Или в одном центральном узле;

  1. Или создавать какие-то совместные (распределенные) алгоритмы для решения проблемы планирования.

Централизованный планировщик в распределенной системе – это место, критичное с точки зрения сбоев.

Кроме того, такой планировщик требует своевременной информации о состояниях всех других узлов, что может сильно нагрузить коммуникационную среду распределенной системы.

Соседние файлы в предмете Операционные системы