Использует ли ОС несколько ядер?

Использует ли ОС несколько ядер?

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

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

решение1

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

решение2

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

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

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

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

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

Связанный контент