Многопоточные приложения на однопоточном ЦП?

Многопоточные приложения на однопоточном ЦП?

Мотивация этого вопроса возникает из исследованияПлата Intel Galileo gen2который имеет однопоточный процессор.

  • Я ищу концептуальное объяснение того, что это означает для всех приложений пользовательского пространства, которые полагаются на существование потоков?
  • Означает ли это, что необходимо внести исправления в ядро, чтобы системные вызовы для запуска потоков эмулировались программно, а не зависели от поддержки потоков процессором?

решение1

Многозадачные системы обрабатывают несколько процессов и потоков независимо от количества процессоров или ядер, установленных в системе, и количества "потоков", которые они обрабатывают. Многозадачность работает с использованием квантования времени: ядро ​​и каждый запущенный процесс или поток каждый может потратить некоторое время на выполнение, а затем система переключается на следующий готовый к выполнению поток. Переключения происходят очень часто, что создает впечатление, что все работает параллельно, даже если это не так.

Все это происходит без каких-либо изменений в API и т. д. Многоядерные системы в любом случае должны иметь возможность запускать больше потоков, чем они физически поддерживают, случай с одним ядром — всего лишь пример этого.

Описание ЦП как однопоточного относится кодновременная многопоточность(SMT или гиперпоточность в мире Intel), а не способность ЦП запускать несколько потоков (или процессов, или задач). Добавление функций SMT в ЦП не добавляет никаких инструкций для помощи в запуске потоков, оно просто позволяет лучше использовать оборудование в некоторых обстоятельствах.

Связанный контент