SkillGridИзучай computer science на практике

Планирование CPU

Как ОС решает, кто выполняется следующим, и почему этот выбор меняет и среднее ожидание, и справедливость.

14 мин · 42 XP

Работы всегда больше, чем CPU. Планировщик выбирает один готовый процесс за раз, и этот выбор определяет, кто ждёт. Разные цели — пропускная способность, задержка, справедливость — приводят к разным алгоритмам.

Планировщик CPU

Сначала приходит долгая задача. Посмотри, как всё за ней простаивает.

Процессы
ПроцессПриходДлительностьСостояниеИспользовано
P106ожидает—
P214ожидает—
P322ожидает—
P431ожидает—
Очередь готовых
  1. P1

P1 приходит с длительностью 6мс

Среднее время ожидания
0
Среднее время оборота
0
Общее время
0
Сравнить алгоритмы
АлгоритмСреднее время ожиданияСреднее время оборотаОбщее время
First-Come, First-Served5.58.7513
Shortest Job First47.2513
Round-Robin5.75913

Время ожидания — сколько процесс простоял готовым, не выполняясь. Время оборота — от появления до завершения. Именно по этим двум числам и оценивают алгоритмы планирования.

Round-Robin даёт каждому процессу фиксированный квант и переходит к следующему. Ни один процесс не ждёт вечно, поэтому система ощущается отзывчивой — но короткие кванты означают больше переключений контекста, а они стоят реального времени.

Ready queueCPUP1 runs (quantum = 2)quantum expired, P1 to the backP2 runs (quantum = 2)quantum expired, P2 to the backP3 runs (quantum = 2)P3 finishedP1 again, the queue keeps rotating
# Правило, которое стоит запомнить:
#
#   waiting time    = (момент завершения - приход) - burst
#   turnaround time =  момент завершения - приход
#
# Пример из набора «convoy» (P1=6, P2=4, P3=2, P4=1):
#
#   FCFS: P1[0..6] P2[6..10] P3[10..12] P4[12..13]
#         среднее ожидание = (0 + 5 + 8 + 9) / 4 = 5.5
#
#   SJF : P1[0..6] P4[6..7] P3[7..9] P2[9..13]
#         среднее ожидание = (0 + 3 + 5 + 8) / 4 = 4.0
#
# SJF выигрывает, потому что короткие работы успевают
# пройти раньше, а не стоят за длинной. Это и есть convoy effect.

Практика

  1. Какой алгоритм может бесконечно морить долгую задачу голодом, если короткие продолжают приходить?

    Подсказки
    • Подумай, какую задачу постоянно обгоняют более короткие.
    • Один из этих алгоритмов не даёт новой короткой задаче пролезть вперёд.

    12 XP

  2. Сравни в симуляторе ниже FCFS и SJF на одном и том же наборе процессов. Где среднее время ожидания меньше и почему?

    Подсказки
    • Запусти оба и сравни среднее время ожидания, которое покажет симулятор.
    • Спроси себя, задерживает ли долгая задача короткие за собой.

    18 XP

  3. Расставь решения планировщика Round-Robin по порядку для P1(4мс), P2(2мс) при кванте 2мс.

    Подсказки
    • Каждый процесс получает квант, прежде чем его вытеснят.
    • Процесс, завершившийся раньше, покидает очередь.

    15 XP