Управление процессором и состояния процесса



Основными объектами в многозадачной среде являются процессы или задачи, описываемые своим контекстом. На одном процессоре в любой мо­мент времени может исполняться только одна задача. Контекст исполняемой задачи всегда можно "заморозить", сохранив содержимое регистров процессора. При остановке текущей задачи процессор продолжает исполнение других задач. Таким обра­зом, процессор есть ограниченный ресурс, который распределяется между всеми за­дачами.

На одном процессоре для организации многозадачного режима выполнение каж­дой задачи разбивается на несколько коротких интервалов. Процессор выполняет часть первой задачи, затем второй, третьей и т. д. Временной интервал, выделенный для каждой задачи, составляет, например, 10 миллисекунд.

Внешний эффект разделения процессорного времени между задачами состоит в па­раллельном выполнении п задач. Когда п задач выполняются в системе параллельно каждая из них в среднем монопольно "располагает" процессором с производительностью 1/n, т. е. работает (развивается) на виртуальном процессоре, производительность которого в п раз меньше, чем у реального физического процессора. Если вместо одного используется несколько процессоров, то это просто другая реализация того же самого логического принципа. В первом случае процессы разделены во времени, во втором в пространстве. Если исключить накладные расходы на планирование и межзадачное взаимодействие, то при выполнении п процессов на k одинаковых процессорах каждо­му процессу в среднем выделяется виртуальный процессор с производительностью, равной k/n части от производительности одного физического процессора.

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

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

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

Продолжительность кванта времени влияет на производительность системы. При коротком кванте улучшается общее время обслуживания коротких процессов. Если ве­личина кванта сопоставима со временем, необходимым для переключения процессов, то большая часть ресурсов процессора будет уходить на планирование и переключение. Если величина кванта слишком большая, увеличивается время ожидания процес­сов и, соответственно, время реакции.

Процесс исполняется до тех пор, пока не произойдет одно из следующих событий:

- истек выделенный ему квант времени;

- процесс заблокирован, например, ждет завершения операции ввода/вывода;

- процесс завершился;

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

В многозадачной среде процесс может находиться в одном из трех состояний (рис. 10.6).

Готов(ready). Процесс может начать исполнение, как только освободится процессор.

Исполнение(running, executing). Процесс исполняется в данный момент, т. е. про­
цессор исполняет его код.

Ожидание, заблокирован(waiting, locked). Для продолжения работы процессу не
хватает какого-либо ресурса, за исключением ЦП, либо он ждет наступления
внешнего события.

Стратегии выбора процесса

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

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

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

Планирование на основе статических приоритетов может привести к неприятным ситуациям. Процесс с наивысшим приоритетом, если он не находится в состоянии ожидания, будет всегда выбираться для исполнения и практически полностью занимать процессор. Нетривиальным является также выбор между процессами с одина­ковым приоритетом. Для исключения подобной ситуации применяется какой-либо алгоритм динамического назначения приоритетов. Например, планировщик снижает приоритет исполняемого процесса на фиксирован­ную величину. В результате его приоритет будет ниже, чем у другого готового про­цесса, который затем и выбирается для исполнения. Таким образом, обеспечивается выполнение всех процессов. Через некоторое время ожидающим процессам возвра­щаются номинальные значения их приоритетов. Этот метод обеспечивает исполне­ние процессов даже с низким приоритетом и гарантирует, что процесс с высоким начальным приоритетом не будет непрерывно занимать процессор.

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


Дата добавления: 2018-04-04; просмотров: 399; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!