Управление процессами. Переход процесса из состояния в состояние. Операции над процессами, страница 2

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

Переход процесса из состояния в состояние.

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

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

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

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

 


Рисунок по переходу процесса из состояния в состояние

Совместная и вытесняющая многозадачность

Windows 3.1  обычно называют системой совместной  (кооперативной) многозадачности (cooperative multitasking), в то время как Windows NT считается системой, работающей по принципу вытесняющей многозадачности (preemptive multitasking). Совместная и вытесняющая – эти термины обозначают методики диспетчирезации процессов. Windows 95 использует обе методики.

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

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

Помните, у Омара Хайяма

Напрасно ты винишь в непостоянстве рок.

Что не внакладе ты, тебе и невдомек.

Когда б он в милостях своих был постоянен,

ты б очереди ждать своей до смерти мог.