Потоки по сравнению с ядрами

Скажите, есть ли у меня процессор как это, которое говорит что # ядра = 4, # потоки = 4 и без поддержки Гиперпоточности.

Это означает, что я могу запустить 4 одновременных программы (так как ядро способно к выполнению только одного потока)? Или это означает, что я могу работать 4 x 4 = 16 программ/процессов одновременно?

От моего рытья, если никакая Гиперпоточность, будет только 1 поток (процесс) на ядро. Исправьте меня, если я неправ.

16
задан user3731622 9 January 2017 в 18:21
поделиться

4 ответа

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

Система с гиперпоточностью обычно имеет в два раза больше аппаратных потоков, чем физических ядер.

12
ответ дан 30 November 2019 в 16:36
поделиться

Поток отличается от процесса. У процесса может быть много потоков. Поток - это последовательность команд, имеющих определенный порядок. Логическое ядро ​​может выполнять последовательность команд. Операционная система распределяет все потоки по всем доступным логическим ядрам, и если потоков больше, чем ядер, потоки обрабатываются быстро, а ядро ​​переключается с одного на другое очень быстро.

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

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

Hyper-threading создает 2 логических ядра на 1 физическом ядре и значительно ускоряет переключение между потоками.

18
ответ дан 30 November 2019 в 16:36
поделиться

Термин поток обычно используется для описания концепции операционной системы, которая имеет потенциал для выполнения независимо от других потоков. Будет ли он это делать, зависит от того, застрял ли он в ожидании какого-либо события (ввода-вывода с диска или экрана, очереди сообщений), или от наличия достаточного количества физических процессоров (гиперпоточных или нет), чтобы позволить ему работать перед лицом других не ожидающих потоков.

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

6
ответ дан 30 November 2019 в 16:36
поделиться

В основном это зависит от ОС. Поток - это высокоуровневая конструкция, содержащая указатель инструкций, и ОС размещает выполнение потока на соответствующем логическом процессоре. Таким образом, имея 4 ядра, вы можете параллельно выполнять 4 инструкции. В то время как поток просто содержит информацию о том, какие инструкции выполнять, и о размещении инструкций в памяти.

Обычно приложение использует один процесс во время выполнения, и ОС переключается между процессами, чтобы предоставить всем процессам "равное" время выполнения. Когда приложение использует несколько потоков, процессы выделяют более одного слота для выполнения, но делят память между потоками.

Обычно различают одновременное и параллельное выполнение. Параллельное выполнение - это когда вы фактически физически выполняете инструкции более чем одного логического процессора, а параллельное выполнение - это частое переключение одного логического процессора, создающее видимость параллельного выполнения.

2
ответ дан 30 November 2019 в 16:36
поделиться
Другие вопросы по тегам:

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