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

ОС осуществляет планирование потоков в соответствии с их состоянием

Поток может находиться в одном из 3 основных состояний (есть еще и промежуточные)

1) Выполнение ( поток юзает процессор)

2) Готовность ( поток мог бы выполняться, но проц занят)

3) Ожидание или блокировка (потоку что-то надо: ждет данные, операцию ввода вывода или еще чего);

Переход из одного состояния в другое осуществляется в соотсветствии с алгоритмом планирования конкретной ОС.

Итак.

- Поток создан – в состоянии готовности, ждет очереди на выполнение.

- Поток выбран на выполнение – выполняется, пока сам не отдаст проц, или пока квант времени не истечет

- Потом – снова в готовность.

- Потоку понадобилась инфа – он идет в ожидание.

- Поток получил нужную инфу – он идет в готовность и в очередь.

Существует переходное состояние ПЕРВООЧЕРЕДНОЙ ГОТОВНОСТИ – когда поток готов получить ресурсы (между блокировкой и готовностью).

В состоянии выполнения может находиться только 1 поток (в однопроцессорной системе);

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

Планирование и диспетчеризация потоков

От планирования потоков зависит эффективность работы системы. Критерии эффективности бывают разные (см. выше).

В самом общем случае алгоритмы планирования можно разделить

По степени централизации механизма планирования на:

- вытесняющие (preemptive) – поток выполняется, пока сам не решит отдать процессор другому

Есть плюсы:

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

- нет проблем совместного использования данных

- более высокая скорость работы (не надо переключаться туда-сюда)

Но больше минусов

- неудобно для пользователя

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

Пример – файл-серверы NetWare

- невытесняющие (non-preeemptive) – решение о переключении процессора принимает ОС. Так работает большинство современных ОС, особенно пользовательских.

Невытесняющие алгоритмы планирования:

А) FIFO (First in first out) || FCFS (First come first served);

- Справедливо

- Просто

Но есть convoy effect – короткие процессы, выполняемые после длинных, увеличивают общее время ожидания.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: