Чи може багатоядерний процесор запускати кілька процесів одночасно?


9

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

Відповіді:


14

Що стосується операційної системи та додатків, то кожне ядро ​​є окремим процесором і підпорядковується тим же правилам спорідненості , що й декілька процесорів.

На якому процесорі (будь то реальний, основний або гіпертокований) процес працює, повністю залежить від системи планування операційної системи. Саме ця система планування (під впливом налаштувань спорідненості ) визначає, де процес повинен запускатися і коли. Процеси та потоки можуть за бажанням перемикатися між процесорами та ядрами, як планувальник вважає за потрібне.


7

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

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

 Process A
    |_Thread A-1
    |_Thread A-2

 Process B
    |_Thread B-1
    |_Thread B-2

 Process C
    |_Thread C

Кожен потік планується в усіх ядрах процесора, а завантаження врівноважується планувальником ОС.

Якщо ми перейдемо та встановимо спорідненість процесора для Process B, щоб обмежити його одним процесором, то всі потоки цього процесу також пов'язані з цим процесором і не працюватимуть на будь-якому іншому процесорі. Зробити те ж саме з Process C не призведе до реальних змін, оскільки він може працювати лише на одному процесорі за один раз.


2

Коротка відповідь:

  1. Так, за умови, що ОС підтримує його.
  2. В даний час всі ОС підтримують це.

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

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