I. Элементы архитектуры вычислительных систем

Вид материалаДокументы

Содержание


Описатель процесса
Достоинства и недостатки
Подобный материал:
1   ...   22   23   24   25   26   27   28   29   ...   42




3.5.1 

Кооперативная многопроцессность

Концепция. Данная схема планирования процессов, называемая также планированием без вытеснения, основана на том, что переключение процессов происходит по инициативе активного процесса.

Для реализации кооперативной многопроцессности в составе ОС должна иметься специальная системная функция, осуществляющая переключение процессов, которую каждая выполняемая в системе программа обязана периодически вызывать. Такая функция обычно называется диспетчером процессов или планировщиком (scheduler) и ведет себя следующим образом:
  1. Она передает управление на следующий активный процесс.
  2. Текущий процесс остается активным, и через некоторое время снова получит управление.
  3. При этом он получит управление так, как будто планировщик представлял собой обычную функцию и возвратил управление в точку, из которой он был вызван.

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

Кроме стека процесса, описатель должен содержать еще некоторые поля. Как минимум, он должен содержать указатель на следующий активный процесс. Система должна хранить указатели на текущий процесс и на конец списка. При этом планировщик переставляет текущий процесс в конец списка, а текущим делает следующий за ним в списке. Все вновь активизируемые процессы также ставятся в конец списка. Часто в литературе такой список называют очередью процессов (process queue).

Резюме. Планировщик, основанный на принципе переключения процессов по инициативе активного процесса, реализован в ряде экспериментальных и учебных систем. Планирование без вытеснения используется также в некоторых серверных ОС, например Novell NetWare 3.x. MS Windows 3.x также имеют средство для организации кооперативного переключения задач - системный вызов taskIdle или, как это называется в MS Windows, GetNextEvent.

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

Достоинства и недостатки. К преимуществам кооперативной многопроцессности относятся простота отладки и высокая эффективность (скорость работы) планировщика. Кроме того, снимаются все коллизии, связанные с критическими секциями - процесс может просто не отдавать никому управления, пока не будет готов к этому.

С другой стороны, кооперативная многопроцессность имеет и серьезные недостатки.

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

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

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








3.5 

Механизмы планирования процессов в однопроцессорных системах





3.5.2 

Вытесняющая многопроцессность