Давайте кратко обсудим различия между упреждающим и неперегрузочным расписанием с помощью сравнительной таблицы, показанной ниже.
Сравнительная таблица
Основа для сравнения | Упреждающее планирование | Не вытесняющее планирование |
---|---|---|
основной | Ресурсы выделяются процессу в течение ограниченного времени. | Как только ресурсы выделены процессу, процесс удерживает его до тех пор, пока не завершит свое пакетное время или не перейдет в состояние ожидания. |
Прерывание | Процесс может быть прерван между ними. | Процесс не может быть прерван до тех пор, пока он не завершится или не перейдет в состояние ожидания. |
голодание | Если процесс с высоким приоритетом часто поступает в очередь готовности, процесс с низким приоритетом может голодать. | Если процесс с длительным временем пакетной обработки запускает процессор, то другой процесс с меньшим временем пакетной обработки может голодать. |
накладные расходы | Упреждающее планирование накладно расходуется на планирование процессов. | Непрерывное планирование не имеет накладных расходов. |
гибкость | Упреждающее планирование является гибким. | Непрерывное планирование является жестким. |
Стоимость | Упреждающее планирование связано с затратами. | Непрерывное планирование не связано с затратами. |
Определение упреждающего планирования
Упреждающее планирование - это планирование, которое может быть выполнено в обстоятельствах, когда процесс переходит из состояния выполнения в состояние готовности или из состояния ожидания в состояние готовности . Здесь ресурсы (циклы ЦП) выделяются процессу на ограниченное количество времени, а затем отнимаются, и процесс снова помещается обратно в очередь готовности, если у него все еще остается оставшееся время загрузки ЦП. Процесс остается в очереди, пока не получит следующий шанс на выполнение.
Если процесс с высоким приоритетом поступает в очередь готовности, ему не нужно ждать, пока текущий процесс завершит свое пакетное время. Вместо этого текущий процесс прерывается в середине выполнения и помещается в очередь готовности, пока процесс с высоким приоритетом не использует циклы ЦП. Таким образом, каждый процесс в очереди готовности получает некоторое время для запуска ЦП. Это делает упреждающее планирование гибким, но увеличивает накладные расходы на переключение процесса из рабочего состояния в состояние готовности и наоборот.
Алгоритмы, которые работают на упреждающем планировании, являются Round Robin. Планирование наименьшего количества заданий (SJF) и Приоритет может планироваться или не подпадает под упреждающее планирование.
Давайте возьмем пример упреждающего планирования, посмотрите на картинку ниже. У нас есть четыре процесса P0, P1, P2, P3. Из которых P2 прибывает в момент 0. Таким образом, ЦП выделяется процессу P2, так как в очереди нет других процессов. Между тем, P2 выполнялся, P3 прибывает в момент 1, теперь оставшееся время для процесса P2 (5 миллисекунд) больше, чем время, требуемое для P3 (4 миллисекунды). Таким образом, процессор выделен процессору P3.
Определение не вытесняющего планирования
Непрерывное планирование - это планирование, которое может применяться в тех случаях, когда процесс завершается или процесс переключается из режима ожидания в состояние ожидания . В Непрерывном планировании, когда ресурсы (ЦП) выделяются процессу, процесс удерживает ЦП до тех пор, пока он не завершится или не достигнет состояния ожидания.
В отличие от упреждающего планирования, не упреждающее планирование не прерывает процесс, выполняющий ЦП в середине выполнения. Вместо этого он ожидает, пока процесс завершит загрузку своего ЦП, и затем может выделить ЦП другому процессу.
В без вытесняющего планирования, если процесс с длительным временем загрузки ЦП выполняется, тогда другому процессу придется ждать в течение длительного времени, что увеличивает среднее время ожидания процессов в очереди готовности. Однако непланирующее планирование не требует дополнительных затрат на переключение процессов из очереди готовности на ЦП, но делает планирование жестким, поскольку выполняемый процесс даже не вытесняется для процесса с более высоким приоритетом.
Ключевые различия между упреждающим и не вытесняющим расписанием
- Основное различие между упреждающим и не упреждающим планированием заключается в том, что при упреждающем планировании ЦП выделяется процессам в течение ограниченного времени. В режиме без упреждающего планирования ЦП выделяется процессу до тех пор, пока он не завершится или не перейдет в состояние ожидания .
- Процесс выполнения в упреждающем планировании прерывается в середине выполнения, тогда как процесс выполнения в не упреждающем планировании не прерывается в середине выполнения.
- Упреждающее планирование имеет издержки на переключение процесса из состояния готовности в состояние выполнения, стихи и поддержание очереди готовности. С другой стороны, без упреждающего планирования нет затрат на переключение процесса из состояния выполнения в состояние готовности.
- В упреждающем планировании, если процесс с высоким приоритетом часто поступает в очередь готовности, тогда процессу с низким приоритетом приходится долго ждать, и ему, возможно, придется голодать. С другой стороны, при планировании без вытеснения, если ЦП выделен процессу с большим временем пакета, тогда процессам с небольшим временем пакета может потребоваться голодать.
- Упреждающее планирование является достаточно гибким, поскольку критические процессы могут получать доступ к ЦП по мере их поступления в готовую очередь, независимо от того, какой процесс выполняется в настоящее время. Непрерывное планирование является жестким, поскольку даже если критический процесс попадает в готовую очередь, процесс, на котором работает ЦП, не нарушается.
- Упреждающее планирование связано с затратами, так как оно должно поддерживать целостность совместно используемых данных, что не относится к неперегрузочному планированию.
Заключение:
Это не значит, что упреждающее планирование лучше, чем не упреждающее планирование или тиски. Все зависит от того, как планирование минимизирует среднее время ожидания процессов и максимально увеличивает загрузку ЦП.