-1

Для простоты, давайте рассмотрим, у меня есть одноядерный процессор. У меня есть 2 задачи, работающие параллельно. Насколько я понимаю, процессор будет выполнять задачи в циклическом режиме, то есть по одному за раз.

Теперь, если любая из задач использует больше циклов, использование будет выше. Это верно? Если да, то когда для выполнения какой-либо задачи требуется большое количество циклов или, другими словами, что на самом деле означают циклы?

1 ответ1

4

Короткий ответ, так как люди написали целые книги на эту тему:

Циклы обычно выражаются терминологией "процессорное время". Процессу выделяется определенное количество "квантов" на процессоре. Помните, что в архитектурах CISC (например, x86) одна "инструкция" может занимать несколько циклов.

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

Однако все современные операционные системы имеют более продвинутые алгоритмы планирования, которые принимают во внимание один или несколько из следующих параметров:

  • приоритет
  • Состояние (заблокировано для ввода-вывода, работоспособно, остановлено и т.д.)
  • Последний раз процесс запускался на процессоре

В зависимости от алгоритма планирования процессам будет разрешено запускаться на процессоре до тех пор, пока:

  • Он запрашивает ввод / вывод и будет заблокирован им
  • Процесс с более высоким приоритетом требует процессорного времени (упреждение)
  • Аппаратное прерывание сработало.
  • Квант процесса заканчивается.

Как организована окончательная очередь, зависит от планировщика. Планировщик Linux описан здесь.

Размышление о циклах не очень полезно в контексте реального компьютера. Одна инструкция, как указано выше, может принимать несколько циклов на архитектурах CISC. ЦП также будет использовать циклы для переключения между процессами (изменение регистров, обновление MMU и т.д.). Циклы как таковые не очень хорошая метрика для использования при описании использования процессора.

Полезный вывод ЦП в основном определяется тем, насколько быстро он может обрабатывать запросы. Когда процессы готовы к обработке, они помещаются в очередь в очереди выполнения, пока они не будут обработаны ЦП. Пока процессы не должны ждать больше, чем квант (~ 200 мс) для запуска, система, по сути, работает так же быстро, как и собирается. В ОС это отображается как число (в виде числа с плавающей запятой (Linux: top/uptime) или в процентах (Windows Taskmanager).

Чтобы дать краткий ответ на вопрос, который вы задали в заголовке: загрузка становится высокой, поскольку очередь выполнения увеличивается. «Использование», которое вы видите в Windows или Linux, представляет собой лишь среднее значение длины очереди выполнения с течением времени.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .