У меня есть вопрос о нескольких ядер в процессоре. Допустим, я работаю в нескольких программах одновременно, например:- Photoshop - Autodesk Maya - Visual Studio - Unreal Engine

Если бы в моем процессоре было больше ядер, это означало бы, что эти программы будут работать быстрее (например, каждое ядро для одной программы и т.д.)

2 ответа2

5

Операционные системы используют концепцию процессов и потоков для запуска программ.

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

В системе с одним ЦП ОС проходит через каждый запущенный процесс и дает ему часть процессорного времени, циклически перебирая. Только один процесс фактически выполняется в данный момент времени. (Если процесс ожидает или "заблокирован" для ввода-вывода, очень распространенное условие, он пропускается.)

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

Процесс также может

  • порождает другой отдельный новый процесс - т.е. загружает отдельную программу. Проводник Windows порождает процессы при запуске программ.
  • форкировать другой процесс - т.е. создавать свою копию как отдельный процесс (не поток) - это часто встречается в операционных системах Unix/Linux.

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

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

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

1

Это зависит от того, использует ли приложение ядра. Для рендеринга, подобного программам, которые вы перечислили, да, приложения такого типа должны использовать большинство ядер, чтобы программа работала быстрее. Он распределяет нагрузку на все используемые ядра.

Если вы выполняете задачи с несколькими процессорами одновременно в нескольких приложениях, это ускорит процесс (при условии, что у вас достаточно оперативной памяти для этого).

(например, каждое ядро для одной программы и т. д.)

Больше похоже на то, что все программы распространяются на все ядра.

Хотя игры (современные) используют только около 4 ядер, не говоря уже о старых играх, поэтому переход на большее количество ядер не будет иметь значения.

Итак, вкратце: дополнительные процессорные ядра улучшат производительность системы только в тяжелых приложениях, которые поддерживают многоядерное использование. Дополнительные ядра также улучшат многозадачность. Чтобы более легкая система (небольшие приложения, такие как просмотр веб-страниц) работала быстрее, вам нужна более высокая тактовая частота.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .