21.Состояния потока. Очередь потоков.
ОС
выполняет планирование потоков, принимая во внимание их состояние. В
мультипрограммной системе поток может находиться в одном из трех основных
состояний:
выполнение — активное состояние потока, во время
которого поток обладает всеми необходимыми ресурсами и непосредственно
выполняется процессором;
ожидание — пассивное состояние потока, находясь в
котором, поток заблокирован по своим внутренним причинам (ждет осуществления
некоторого события, например завершения операции ввода-вывода, получения
сообщения от другого потока или освобождения какого-либо необходимого ему
ресурса);
готовность — также пассивное состояние потока, но в
этом случае поток заблокирован в связи с внешним по отношению к нему
обстоятельством (имеет все требуемые для него ресурсы, готов выполняться,
однако процессор занят выполнением другого потока).
В
течение своей жизни каждый поток переходит из одного состояния в другое в
соответствии с алгоритмом планирования потоков, принятым в данной операционной
системе.
В
состоянии выполнения в однопроцессорной системе может находиться не более
одного потока, а в каждом из состояний ожидания и готовности — несколько
потоков. Эти потоки образуют очереди соответственно ожидающих и готовых
потоков. Очереди потоков организуются путем объединения в списки описателей
отдельных потоков. Таким образом, каждый описатель потока, кроме всего прочего,
содержит по крайней мере один указатель на другой описатель, соседствующий с
ним в очереди. Такая организация очередей позволяет легко их переупорядочивать,
включать и исключать потоки, переводить потоки из одного состояния в другое.
Если предположить, что на рис. 5.1.2 показана очередь готовых потоков, то
запланированный порядок выполнения выглядит так: А, В, Е, D, С.
Рис. 5.1.2. Очередь потоков