Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
спо_экзамен.docx
Скачиваний:
5
Добавлен:
27.09.2019
Размер:
3.3 Mб
Скачать
  1. Состояния потока и переходы между ними

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

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

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

ожидание (блокировка) состояние потока, когда он заблокирован в

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

47

освобождения какого-либо необходимого ему ресурса.

Существуют и другие состояния потока (процесса), которые мы рассмотрим при обсуждении операций над потоками.

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

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

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

Описа- тель по- тока А

ссылка

Описа- тель по- тока B

ссылка

Описа- тель по- тока C

ссылка

Описа- тель по- тока D

ссылка

Описа- тель по- тока E

ссылка

Рисунок 1.1 – Очередь готовых потоков (A, C, E, B, D – запланирован-

ный порядок выполнения потоков)

48

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

1.1.5 Переход потока из состояния в состояние

1.1.5.1 В период своего существования поток проходит через ряд дискретных состояний. Смену состояний потока могут вызывать различные события. Рассмотрим типичный граф состояния потока (рисунок 1.2).

Запуск (поток выбран на вы- полнение)

ВЫПОЛНЕНИЕ

Истечение кванта времени (поток вытеснен)

Блокирование (поток ожидает завершения ввода-вывода или другого события)

ГОТОВНОСТЬ ОЖИДАНИЕ

Пробуждение (ввод- вывод завершён или другое ожидаемое событие произошло)

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

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

49

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

1.1.5.2 Таким образом, мы определили четыре возможные смены состояния потока:

запуск(имя_потока): готовность выполнение; истечение_кванта(имя_потока): выполнение готовность; блокирование(имя_потока): выполнение → ожидание; пробуждение(имя_потока): ожидание готовность.

Отметим, что единственная смена состояния, инициируемая самим потоком, это блокирование, остальные три смены состояния инициируются

объектами, внешними по отношению к данному потоку.