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

Что такое упреждающее планирование?
Упреждающее планирование — это метод планирования, при котором задачам в основном назначаются их приоритеты. Иногда важно запустить задачу с более высоким приоритетом перед другой задачей с более низким приоритетом, даже если задача с более низким приоритетом все еще выполняется.
В это время задача с более низким приоритетом удерживается в течение некоторого времени и возобновляется, когда задача с более высоким приоритетом завершает свое выполнение.
Что такое невытесняющее планирование?
В этом типе метода планирования процессор выделяется для конкретного процесса. Процесс, который удерживает ЦП занятым, освободит ЦП либо путем переключения контекста, либо путем завершения.
Это единственный метод, который можно использовать для различных аппаратных платформ. Это связано с тем, что для него не требуется специализированное оборудование (например, таймер), такое как упреждающее планирование.
Невытесняющее планирование происходит, когда процесс добровольно переходит в состояние ожидания или завершается.
Упреждающее и невытесняющее планирование: сравнительная таблица
Здесь приведено прямое сравнение упреждающего и невытесняющего планирования. Основные различия между вытесняющим и невытесняющим планированием в ОС заключаются в следующем:
Упреждающее планирование | Невытесняющее планирование |
---|---|
Процессор может быть выгружен для выполнения различных процессов в середине выполнения любого текущего процесса. | Как только процессор начинает свое выполнение, он должен завершить его, прежде чем выполнять другое. Его нельзя поставить на паузу посередине. |
Использование ЦП более эффективно по сравнению с невытесняющим планированием. | Использование ЦП менее эффективно по сравнению с упреждающим планированием. |
Время ожидания и ответа при упреждающем планировании меньше. | Время ожидания и ответа при использовании метода невытесняющего планирования выше. |
Упреждающее планирование имеет приоритет. Процесс с наивысшим приоритетом — это процесс, который используется в данный момент. | Когда какой-либо процесс переходит в состояние выполнения, состояние этого процесса никогда не удаляется из планировщика, пока он не завершит свою работу. |
Упреждающее планирование является гибким. | Неупреждающее планирование является жестким. |
Примеры: – Сначала самое короткое оставшееся время, круговая система и т. д. | Примеры: Первый пришел первый обслужен, «Сначала самая короткая работа», «Приоритетное планирование» и т. д. |
Алгоритм упреждающего планирования может быть вытеснен, то есть процесс можно запланировать. | В процессе невытесняющего планирования невозможно запланировать |
В этом процессе процессор выделяется процессам на определенный период времени. | В этом процессе процессор выделяется процессу до тех пор, пока он не завершится или не перейдет в состояние ожидания. |
У вытесняющего алгоритма есть затраты на переключение процесса из состояния готовности в рабочее состояние и наоборот. | Невытесняющее планирование не требует таких затрат на переключение процесса из состояния готовности. |
Преимущества упреждающего планирования
Вот плюсы/преимущества метода упреждающего планирования:
- Метод упреждающего планирования более надежен: подход, при котором один процесс не может монополизировать ЦП.
- Выбор выполняемой задачи пересматривается после каждого прерывания.
- Каждое событие приводит к прерыванию выполнения задач.
- ОС следит за тем, чтобы использование ЦП было одинаковым для всех запущенных процессов.
- При этом использование ЦП одинаково, т.е. все запущенные процессы будут использовать ЦП одинаково.
- Этот метод планирования также позволяет улучшить среднее время ответа.
- Упреждающее планирование полезно, когда мы используем его в многопрограммной среде.
Преимущества невытесняющего планирования
Вот плюсы/преимущества метода невытесняющего планирования:
- Предлагает низкие накладные расходы на планирование
- Имеет тенденцию обеспечивать высокую пропускную способность
- Концептуально очень простой метод.
- Less потребность в вычислительных ресурсах для планирования
Недостатки упреждающего планирования
Ниже приведены недостатки упреждающего планирования:
- Нужны ограниченные вычислительные ресурсы для планирования
- Планировщику требуется больше времени, чтобы приостановить выполняемую задачу, переключить контекст и отправить новую входящую задачу.
- Процессу с низким приоритетом придется ждать дольше, если некоторые процессы с высоким приоритетом поступают непрерывно.
Недостатки неупреждающего планирования
Вот минусы/недостаток метода невытесняющего планирования:
- Это может привести к голоданию, особенно при выполнении задач в реальном времени.
- Ошибки могут привести к зависанию машины
- Он может делать в режиме реального времени и приоритетное планирование затрудняет
- Плохое время отклика процессов
Пример невытесняющего планирования
При невытесняющем планировании SJF, как только цикл ЦП выделяется для процесса, процесс удерживает его до тех пор, пока не достигнет состояния ожидания или не завершится.
Рассмотрим следующие пять процессов, каждый из которых имеет свое уникальное время пакета и время прибытия.
Очередь процесса | Время взрыва | Время прибытия |
---|---|---|
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
Шаг 0) В момент времени = 0 прибывает P4 и начинает выполнение.
Шаг 1) В момент времени = 1 прибывает процесс P3. Но для завершения P4 по-прежнему требуется 2 исполнительных блока. Он продолжит выполнение.
Шаг 2) В момент времени =2 прибывает процесс P1 и добавляется в очередь ожидания. P4 продолжит выполнение.
Шаг 3) В момент времени = 3 процесс P4 завершит свое выполнение. Сравнивается время пакетной передачи P3 и P1. Процесс P1 выполняется, поскольку время его пакета меньше, чем у P3.
Шаг 4) В момент времени = 4 прибывает процесс P5 и добавляется в очередь ожидания. P1 продолжит выполнение.
Шаг 5) В момент времени = 5 прибывает процесс P2 и добавляется в очередь ожидания. P1 продолжит выполнение.
Шаг 6) В момент времени = 9 процесс P1 завершит свое выполнение. Сравнивается время пакетной передачи P3, P5 и P2. Процесс P2 выполняется, поскольку его время пакета наименьшее.
Шаг 7) В момент времени = 10 выполняется P2, а P3 и P5 находятся в очереди ожидания.
Шаг 8) В момент времени = 11 процесс P2 завершит свое выполнение. Сравнивается время пакетной передачи P3 и P5. Процесс P5 выполняется, поскольку время его пакета меньше.
Шаг 9) В момент времени = 15 процесс P5 завершит свое выполнение.
Шаг 10) В момент времени = 23 процесс P3 завершит свое выполнение.
Шаг 11) Давайте рассчитаем среднее время ожидания для приведенного выше примера.
Wait time P4= 0-0=0 P1= 3-2=1 P2= 9-5=4 P5= 11-4=7 P3= 15-1=14 Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
Пример упреждающего планирования
Рассмотрим следующие три процесса в По-круговой
Очередь процесса | Время взрыва |
---|---|
P1 | 4 |
P2 | 3 |
P3 | 5 |
Шаг 1) Выполнение начинается с процесса P1, время пакета которого равно 4. Здесь каждый процесс выполняется в течение 2 секунд. P2 и P3 все еще находятся в очереди ожидания.
Шаг 2) В момент времени =2 P1 добавляется в конец очереди, и P2 начинает выполнение.
Шаг 3) В time=4 P2 вытесняется и добавляется в конец очереди. P3 начинает выполнение.
Шаг 4) В time=6 P3 вытесняется и добавляется в конец очереди. P1 начинает выполнение.
Шаг 5) В time=8 время пакета P1 равно 4. Выполнение завершено. P2 начинает выполнение
Шаг 6) P2 имеет время пакета 3. Он уже выполнен в течение 2 интервалов. В момент времени = 9 P2 завершает выполнение. Затем P3 начинает выполнение до его завершения.
Шаг 7) Давайте рассчитаем среднее время ожидания для приведенного выше примера.
Wait time P1= 0+ 4= 4 P2= 2+4= 6 P3= 4+3= 7