Критерии планирования и требования к алгоритмам

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

К числу таких целей можно отнести следующие:

¾ справедливость (не должно быть ситуации, когда один процесс постоянно занимает процессор)

¾ эффективность (идеально процессор должен быть занят на 100%, реально – 40-90%)

¾ сокращение полного времени выполнения

¾ сокращение времени ожидания в состоянии готовность

¾ сокращение времени отклика (в интерактивных системах)

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

· были предсказуемыми (одно и то же задание должно выполняться приблизительно за одно и то же время)

· были связаны с минимальными накладными расходами (например, при переключении контекста)

· равномерно загружали ресурсы в ВС (предпочтение тем процессам, которые буду занимать малоиспользуемые ресурсы)

· обладали масштабируемостью (при увеличении «нагрузки» не должны резко терять работоспособность)

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