Могут ли несколько процессов работать параллельно на многопоточном одноядерном процессоре? - PullRequest
0 голосов
/ 04 ноября 2018

Я знаю, что есть некоторые общие ресурсы, такие как кэш L2 и т. Д. Между потоками, так что два потока в одном и том же ядре могут выполнять команды от разных процессов параллельно?

1 Ответ

0 голосов
/ 04 ноября 2018

Это вопрос терминологии. Аппаратные и программные люди по-разному используют одни и те же слова. Я понимаю ваш вопрос следующим образом:

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

Затем я перевожу термины оборудования на язык программного обеспечения:

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

и сразу отвечу: да, конечно.

UPDT «Могут ли два программных потока (из одного процесса) работать на двух разных процессорах параллельно?»

да, конечно. Более того, если каждый ЦП состоит из множества ядер, каждое ядро ​​может обслуживать отдельный программный поток и поэтому неотличимо от процессора. Например, мой микрочип Intel i7 имеет 4 ядра / 8 потоков, а стандартная функция Java Runtime :: availableProcessors () возвращает 8, то есть 8 отдельных программных потоков могут выполняться параллельно. Если бы на моей машине было 2 таких микрочипа, было бы возвращено 16 и 16 отдельных потоков, которые могли бы работать параллельно.

...