Дисциплины диспетчеризации и алгоритмы планирования процессов
Операционная система выполняет следующие основные функции, связанные с управлением задачами:
1) создание и удаление задач;
2) планирование процессов и диспетчирезация задач;
3) синхронизация задач, обеспечение их средствами коммуникации.
Система управления задачами обеспечивает прохождение их через компьютер. В зависимости от состояния процесса ему должен быть предоставлен тот или иной ресурс. Например, новый процесс необходимо разместить в основной памяти - следовательно, ему необходимо выделить часть адресного пространства. Новый порожденный поток текущего процесса необходимо включить в общий список задач, конкурирующих между собой за ресурсы центрального процессора.
Создание и удаление задач осуществляется по соответствующим запросам от пользователей или от самих задач. Задача может породить новую задачу. При этом между процессами появляются «родственные» отношения. Порождающая задача называется «предком», «родителем», а порожденная «потомком» «сыном» или «дочерней задачей». «Предок» может приостановить или удалить свою дочернюю задачу, тогда как «потомок» не может управлять «предком».
Основным подходом к организации того или иного метода управления процессами, обеспечивающего эффективную загрузку ресурсов или выполнение каких-либо иных целей, является организация очередей процессов и ресурсов. На распределение ресурсов влияют конкретные потребности тех задач, которые должны выполняться параллельно. Другими словами, можно столкнуться с ситуациями, когда невозможно эффективно распределять ресурсы с тем, чтобы они не простаивали. Например, всем выполняющимся процессам требуется некоторое устройство с последовательным доступом. Но поскольку, как мы уже знаем» оно не может распределяться между параллельно выполняющимися процессами, то процессы вынуждены будут одень долго ждать своей очереди. Таким образом, недоступность одного ресурса может привести к тому, что длительное время не будут использоваться и многие другие ресурсы. Если, же мы возьмем набор таких процессов, которые не будут конкурировать между собой за неразделяемые ресурсы при параллельном выполнении, то, скорее всего, процессы смогут выполниться быстрее (из-за отсутствия дополнительных ожиданий), да и имеющиеся в системе ресурсы будут использоваться более эффективно. Итак, возникает задача подбора такого множества процессов, что при выполнении они будут как можно реже конфликтовать из-за имеющихся в системе ресурсов. Такая задача называется планированием вычислительных процессов. Задачи динамического планирования стали называть диспетчеризацией. К сожалению, здесь наблюдается терминологическая несогласованность. Собственно модули супервизора, отвечающие за диспетчеризацию задач, часто называют планировщиками (sheduler). Но фактически, говоря о тех же планировщиках памяти или о каких-нибудь других модулях, отвечающих за динамическое распределение ресурсов, имеют в виду, что эти планировщики осуществляют диспетчеризацию. Иногда диспетчеризацию называют краткосрочным планированием. Основное отличие между краткосрочными и долгосрочными планировщиками заключается в частоте запуска. В большинстве современных ОС долгосрочный планировщик отсутствует.
Операционная система для реализации мультипрограммирования выполняет планирование и диспетчеризацию потоков (в ОС, не поддерживающих потоков — диспетчеризацию процессов). Планирование включает определение момента времени для смены текущего потока, а также выбор нового потока для выполнения. Диспетчеризация заключается в реализации найденного в результате планирования решения, то есть в переключении процессора с одного потока на другой.
Стратегия планирования определяет, какие процессы мы планируем на выполнение, чтобы достичь поставленной цели. Существует три наиболее распространенные стратегии:
1) по возможности заканчивать вычисления в том же порядке, в котором они были начаты;
2) отдавать предпочтение более коротким процессам;
3) предоставлять всем пользователям одинаковые услуги, в том числе и время ожидания.
Пречень дисциплин диспетчеризации и их классификация приведены на рис.1.
![]() | Рис.2. Дисциплина диспетчеризации FCFS
![]() |
Существующие дисциплины диспетчеризации могут быть разбиты на два класса – вытесняющие и не вытесняющие.
1. Вытесняющие алгоритмы – это такие способы планирования, в которых решения о переключении процессора принимаются ОС, а не активной задачей.
2. Невытесняющие алгоритмы – основаны на том, что активному потоку позволено выполняться до тех пор, пока он сам не отдаст управление ОС (не перейдёт в ожидание). Можно сказать, что рассмотренная дисциплина FCFS относиться к не вытесняющим.
Вытесняющий алгоритм, основанный на квантовании: в соответствии с этим алгоритмом каждому потоку предоставляется ограниченный непрерывный период процессорного времени – квант. Условия смены активного потока:
1. Поток завершился или покинул систему;
2. Произошла ошибка;
3. Поток перешёл в состояние ожидания;
4. Исчерпан квант процессорного времени.