Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВОПРОС-ОТВЕТ 2012(42)Ф.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
4 Мб
Скачать
☆

§4.2.4.Вытесняющие и невытесняющие алгоритмы планирования

Алгоритмы планирования можно разделить на невытесняющие или вытесняющие.

Невытесняющие (non-preemptive) алгоритмы основаны на том, что активный поток выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление диспетчеру ОС, для того, чтобы тот выбрал из очереди другой, готовый к выполнению поток;

Вытесняющие (preemptive) алгоритмы основаны на том, что решение о переключении процессора с выполнения одного протока на выполнение другого потока принимается диспетчером ОС, а не самим активным потоком (Windows NT, OS/2, UNIX).

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

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

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

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

Вытесняющие алгоритмы планирования могут быть основаны на квантовании, приоритетах и сочетании квантования и приоритетов.

Вопрос 18. Алгоритмы планирования, основанные на квантовании, приоритетах, смешанные алгоритмы. §4.2.5.Алгоритмы планирования, основанные на квантовании.

В основе многих вытесняющих алгоритмов планирования лежит концепция квантования. В соответствии с этой концепцией каждому потоку поочередно для выполнения предоставляется ограниченный непрерывный период процессорного времени – квант. Смена активного потока происходит, в следующих случаях:

- поток завершился и покинул систему;

- произошла ошибка;

- поток перешел в состояние ожидания;

- исчерпан квант процессорного времени, отведенный данному потоку.

П оток, который исчерпал свой квант, переводится в состояние «готовность» и ожидает, когда ему будет предоставлен новый квант процессорного времени, а на выполнение в соответствии с определенным правилом выбирается новый поток из очереди готовых. Таким образом, ни один поток не занимает процессор надолго, поэтому квантование широко используется в системах разделения времени. Граф состояний потока для алгоритма диспетчеризации, основанного на квантовании, изображен на рис. 4.5.

Рис. 4.5. Граф состояний потока в системах с квантованием

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

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

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