Состояния потока

 

ОС выполняет планирование потоков, принимая во внимание их состояние. В мультипрограммной системе поток может находиться в одном из трех основных состояний:

выполнение - активное состояние потока, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

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

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

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

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

Рассмотрим типичный граф состояния потока (рис. 3.1). Только что созданный поток находится в состоянии готовности, он готов к выполнению и стоит в очереди к процессору. Когда в результате планирования подсистема управления потоками принимает решение об активизации данного потока, он переходит в состояние выполнения и находится в нем до тех пор, пока либо он сам не освободит процессор, перейдя в состояние ожидания какого-нибудь события, либо не будет принудительно «вытеснен» из процессора, например, вследствие исчерпания отведенного данному потоку кванта процессорного времени. В последнем случае поток возвращается в состояние готовности. В это же состояние поток переходит из состояния ожидания, после того как ожидаемое событие произойдет.

 

Поток завершен или ошибка

 
 

 

 


Поток выбран Поток ожидает завершения

на выполнение Поток ввода-вывода

вытеснен

Ввод-вывод завершен

Вновь созданный

поток

 

Рис. 3.1. Граф состояний потока в многозадачной среде

 

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

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

Такая организация очередей позволяет легко их переупорядочивать, включать и исключать потоки, переводить потоки из одного состояния в другое. Если предположить, что на рис. 3.2 показана очередь готовых потоков, то запланированный порядок выполнения выглядит так:
А, В, Е, D, С.

 

 


Рис. 3.2. Очередь потоков