1

Я знаю, что большее количество ядер не всегда лучше и что большинство приложений являются однопоточными, но использует ли ОС дополнительные ядра? Например, предположим приложение, такое как словарь перебор. Будет ли запуск четырех отдельных экземпляров этого (в отдельной четверти словаря) в сети с четырехъядерным процессором такой же выгодой, если программа действительно многопоточная? По сути, будет ли ОС позволять всем четырем экземплярам работать по-настоящему сразу, без выгрузки?

Я склонен запускать много независимых приложений одновременно (Firefox с кучей вкладок, офис, чат, инструменты разработки, игры).

2 ответа2

2

Как правило, да, ОС распределяла бы 4 экземпляра программы по 4 ядрам, если бы ядра были доступны для использования (т. Е. Другие программы их не используют). Это может дать вам аналогичные преимущества по сравнению с наличием 4 потоков, за исключением потенциальных накладных расходов (например, 4 потока, скорее всего, будут совместно использовать одну копию любого загруженного словаря, тогда как 4 процесса, скорее всего, будут загружать отдельные копии словаря каждый).

1

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

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

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

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

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

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