Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AOS_otvety_1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.29 Mб
Скачать

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

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

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

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

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

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

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

Итак.

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

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

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

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

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

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

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

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

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

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

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

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

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

Есть плюсы:

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

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

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

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

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

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

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

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

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

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

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

- Просто

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

Б) SJFSshortest job first served – короткая задача обслуживается первой.

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

- с опережением (прерывается, если появляется поток с еще более минимальным временем исполнения)

В) SRTFshortest remaining time first – первым идет поток, которому меньше осталось.

- оптимален в системах реального времени

Оценка длины среднего периода активности вычисляется по формуле:

T (n + 1) = a*tn + (1 - a)*tn

T – текущее значение энного CPU burst

T (n + 1) – следующее его значение, которое мы предсказываем

А – коэффициент старения информации (от 0 до 1);

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

- на основе квантования

- на основе приоритетов

- смешанные

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]