2016-09-02 2 views
2

Когда несколько потоков запускаются в одноядерной системе, эти потоки выполняются одновременно или последовательно с помощью быстрого контекстного переключателя (который дает ощущение потоков, работающих одновременно)? Как многопоточность работает в одноядерной системе?

+0

Точно так же, как 6 потоков работают на четырехъядерной системе. У всех есть шанс на запуск, нужны переключатели контекста. –

+0

Разве это не очевидно? Как они могли работать одновременно? – Andrew

ответ

3

Многие современные процессоры адаптируют методы, которые позволяют им выполнять несколько потоков на одном ядре. Такие методы называются Одновременная многопоточная обработка (или SMT). Например, «Hyper-threading» - это реализация Intel SMT.

SMT подразумевает, что ядро ​​может извлекать и выполнять две или несколько команд из разных потоков одновременно, за один цикл. Если ОС также знает, как работать с SMT, она может планировать потоки таким образом, чтобы на самом деле позволять одновременно выполнять разные потоки на одном и том же ядре. В некоторых случаях он может дать почти такой же импульс, как выполнение потоков на двух (или более в некоторых процессорах) ядрах.

В противном случае это только переключение контекста.

+0

Спасибо, что помогло, BTW. То же самое и для многоядерных систем, я имею в виду, что это просто переключение контекста в многоядерных системах, или они работают одновременно? –

+1

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

0

С одним ядром ЦП разные потоки не выполняются буквально одновременно, но ОС может запускать один поток и пропускать другой поток.

Смежные вопросы