
- •Эволюция операционных систем
- •Определение операционной системы
- •Состав операционной системы
- •Драйверы и сервисы Windows
- •Типы операционных систем
- •Мультипроцессорная обработка
- •Создание процессов и потоков
- •Планирование и диспетчеризация потоков
- •Состояния потока и переходы между ними
- •Операции над потоками (процессами)
- •V(b) – освободить критическую секцию
- •V(b) – освободить критическую секцию
- •2 Кэш (быстродействующая память на основе sram)
- •Ассемблеры и компоновщики
Состояния потока и переходы между ними
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 Таким образом, мы определили четыре возможные смены состояния потока:
запуск(имя_потока): готовность → выполнение; истечение_кванта(имя_потока): выполнение → готовность; блокирование(имя_потока): выполнение → ожидание; пробуждение(имя_потока): ожидание → готовность.
Отметим, что единственная смена состояния, инициируемая самим потоком, – это блокирование, остальные три смены состояния инициируются
объектами, внешними по отношению к данному потоку.