Темы против ядра

Скажем, если у меня есть процессор, например this, который говорит # cores = 4, # threads = 4 и без поддержки Hyper-threading.

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

Из моего копания, если нет Hyper-threading, будет только 1 поток (процесс) на ядро. Исправьте меня, если я ошибаюсь.

Ответы

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

Ответ 4

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

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

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