Процесс переключается между разными ядрами?

344
FunctionBlock

Будет ли процесс переключаться между различными ядрами для повышения производительности? Если процесс переходит между ядрами, какие компоненты распределяются между ядрами? Кэш L1-L3, регистры или память?

2
Обратите внимание, что процесс - это просто структура памяти. Один или несколько потоков загружаются во время создания процесса и выполняются с использованием структуры памяти процессов в качестве ресурса, но процесс не выполняется; связанные с этим темы. Frank Thomas 6 лет назад 0

3 ответа на вопрос

1
duDE

Будет ли процесс переключаться между различными ядрами для повышения производительности?

Это зависит от того, является ли процесс многопоточным или нет. Сам процесс по сути является просто «контейнером» для потоков, он должен иметь как минимум один для запуска. Каждый поток может использовать ядро ​​ЦП, поэтому, если ваш процесс имеет 2 потока (графический интерфейс и рабочий поток), он будет работать на 2 ядрах ЦП.

Вопрос «Будет ли процесс переключаться между различными ядрами» не совсем корректен, потому что такое переключение запланировано операционной системой (ОС), а НЕ самим процессом!

Спасибо приятель. Если операционная система OS планирует A продолжить работу Core B, когда Core A занята, как ОС (Linux) может обеспечить передачу всех переменных, состояний и операций и как? FunctionBlock 6 лет назад 0
Это так называемое «переключение контекста», которым управляет ОС, посмотрите: https://en.wikipedia.org/wiki/Context_switch duDE 6 лет назад 0
Обратите внимание, что переключение контекста запрашивается ОС при желании, но выполняется полностью в оборудовании ЦП, по усмотрению ЦП (см., Например, обработку прерываний). Frank Thomas 6 лет назад 0
0
Strangelovian

Давайте представим занятый одноядерный процессор с двухъядерной системой, где нагрузка приближается к 100%.

Процесс с PID 1234 имеет только один поток (например, консольное приложение, выполняющее сжатие звука с одной нитью).

Для такого рода процессов система будет стараться изо всех сил запустить поток на том же ядре, чтобы минимизировать ошибки кэша. Однако, если система действительно занята, аналогичные другие процессы могут также попытаться работать на тех же ядрах. В этом случае, в принципе, ваш однопоточный процесс может выполняться сначала на ядре № 1, затем на ядре № 2 и т. Д. И т. Д.

0
harrymc

Переключение процессов между процессорами ухудшит производительность, поскольку переключение будет означать сохранение информации о процессах и регистров в памяти, а затем загрузку ее на другой процессор.

Эти команды сохранения и загрузки являются одними из самых медленных команд на ЦП, хотя они не будут замечены, если выполняются очень редко.

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

Похожие вопросы