Чому на багатоядерному ПК з ОС Windows чому один процес лише періодично використовує всі ядра?


0

Протягом багатьох років у мене склалося враження, що в одному процесі можна використовувати лише максимум одне ядро ​​центрального процесора, але нещодавно я знайшов два приклади, коли в одному процесі використовували всі ядра багатоядерної системи Windows.

Один з них легко перевірити для більшості людей: http://fitgirl-repacks.site/donate-by-mining/

Якщо вимкнути багатопроцесорну функцію вашого браузера, налаштування "потоки процесора" на веб-сторінці все ще діє. Ви можете бачити процес одного браузера, використовуючи всі ваші CPU ядра.

Чому це трапляється лише іноді, тоді як більшість часу це не відбувається (так багато програм породжують декілька процесів, щоб спробувати скористатися багатопроцесорною системою)?


Відповіді:


1

Програма може бути написана для використання декількох потоків, дозволяючи їм використовувати більше одного ядра.

Програма також може бути написана, щоб розділити себе на різні процеси , кожен з яких має одну або кілька потоків для роботи.

Існує дуже тонка, але реальна різниця між багатопотоковою та багатопроцесовою. Вимкнення функцій багатопроцесового режиму не вимикає багатопотокові роботи, які вже були присутніми.

Останні оновлення веб-переглядача, що дозволяють функціонувати у багатьох процесах, підвищує безпеку та толерантність до збоїв, розділяючи потоки для окремих сторінок на власний процес, кожен з цих процесів все ще може мати декілька потоків, які працюють незалежно.


0

Існує кілька способів, коли один процес може використовувати більше одного ядра.

Найбільш очевидний спосіб, який вони можуть зробити - це створити кілька потоків виконання. Кожен потік може бути запланований на сердечнику, щоб забезпечити безпосереднє використання більше одного ядра одним процесом.

Але є й інші способи, коли один процес може використовувати більше одного ядра. Наприклад, процес може робити запити від служб операційної системи, які внутрішньо можуть використовувати більше одного ядра. Наприклад, процес, який робить багато дискових вводу / виводу, може працювати на одному ядрі як інший ядро, виконуючи код операційної системи, завершити одну з операцій вводу / виводу диска, яку процес розпочав. Операції з мережею та графікою аналогічно можуть бути внутрішньо реалізовані способами, що використовують більше одного ядра.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.