Для планирования смены потоков разработаны специальные алгоритмы планирования,
Вытесняющие алгоритмы– при использовании таких алгоритмов ОС сама принимает решение о принудительной смене потока не зависимо от его завершения. Применяются в универсальных ОС (Windows, Unix).
В основу вытесняющих алгоритмов планирования смены потоков положена идея квантования. В соответствии с этой идеей каждому потоку поочередно предоставляется ограниченный непрерывный период процессорного времени – квант. Смена активного потока происходит если:
- поток завершился;
- произошла ошибка;
- поток перешел в состояние ожидания;
- исчерпан квант процессорного времени;
Поток, который исчерпал свой квант, переводится в состояние готовности и ожидает, когда ему будет предоставлен новый квант процессорного времени, а на выполнение выбирается новый поток из очереди готовых потоков, при этом учитывается время ожидания в очереди, интенсивность операций ввода-вывода и т.д.
Кванты, которые выделяются потокам, могут быть одинаковые для всех или различные. Если кванты для всех процессов одинаковы, то следовательно все процессы равноправны, это приведет к тому, что системные процессы будут долго «стоять» в очереди. Кванты, которые выделяются одному потоку, могут быть фиксированными, а могут изменяться в разные периоды жизни потока.
Поток, который получил квант времени, может использовать его не полностью, например из-за необходимости выполнять ввод или вывод данных. В результате возникает ситуация, когда потоки с частым обращением к вводу-выводу, используют небольшую часть выделенного им процессорного времени. Можно создавать две очереди: первая – образована потоками, которые перешли в состояние готовности в результате завершения кванта времени, вторая – образована потоками, у которых завершилась операция ввода-вывода. Сначала будет просматриваться очередь 2, затем очередь 1.
Планирование с квантованием с предпочтением потоков, интенсивно обращающихся к вводу-выводу
Поток завершен или произошла ошибка | ||||
выполнение | ||||
Поток ожидает завершение операции ввода – вывода или освобождения ресурса | ||||
Поток прерван | ||||
Поток выбран на выполнение | ||||
Очередь готовых потоков1 | ожидание | |||
Очередь готовых потоков2 | Ввод – вывод завершен | |||
Второй важной идей, лежащей в основе вытесняющих алгоритмов планирование, является приоритетное обслуживание. Приоритетное обслуживание предполагает наличие у потока некоторой изначально известной характеристики – приоритета, на основании которой определяется порядок выполнения процессов. Приоритет – это число, который показывает степень привилегированности потока при использовании ресурсов компьютера, в том числе и процессорного времени. Чем выше приоритет, тем выше привилегии, тем меньше времени поток будет проводить в очередях. Дочерние потоки имеют приоритет родительского потока.
При назначении приоритета вновь созданному процессу учитывается, является ли этот процесс системным или прикладным, каков статус пользователя, запустившего процесс. Если поток создается другим потоком в результате выполнения системного вызова, то при назначении приоритета ОС принимает во внимание параметры системного вызова. Приоритет может изменяться во время выполнения процесса по инициативе ОС, пользователи (администраторы) могут в определенных пределах изменять приоритет.
В настоящее время применяются вытесняющие алгоритмы планирования, в которых квант времени выбирается по приоритету – вытесняющие алгоритмы с квантованием по приоритету. В алгоритмах, основанных на квантовании, ОС не использует ни какой предварительной информации о процессах (короткие или длинные, часто ли будет обращение к вводу – выводу и т.д.). Планирование проводится динамически, в зависимости от текущего состояния системы, на основе «истории существования» потока в системе.