Чи виділяє ОС кожен процес в окреме ядро?


15

Гаразд, я знаю класичний аргумент щодо уникнення квадроядер. На рівні програми більшість програм не написано для декількох ядер. Більшість програм для настільних ПК навіть не потребує паралелізації.

Однак на рівні ОС здається очевидним, що ОС розділить процеси на різні ядра. Хіба це не було б само по собі аргументом для отримання більшої кількості ядер? Чи не допомагає це багато в багатьох ситуаціях? Ви отримуєте кілька інтенсивних процесорних завдань - кожен з цих процесів може пробувати 100% своїх ядер, але я все одно можу переглядати Інтернет та задавати питання про SuperUser на останньому своєму ядрі .... правда?


Фундаментальним потоком цього питання та відповідей є припущення, що один процес є однопоточним. У багатьох випадках це не так. І навіть якщо процес однопотоковий, кілька системних бібліотек / dll додають власні потоки.
harrymc

Відповіді:


12

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


Ключовим словом тут є те, якщо у вас є кілька інтенсивних процесорних додатків - це нечаста ситуація для більшості користувачів.
Жил "ТАК - перестань бути злим"

Дякуємо за відповідь. Так, останній випадок - це те, що я намагаюся описати.
Дуг Т.

3

Щоб додати відповідь @ heavyd, причиною цього є те, що ОС не має можливості визначати, які частини процесу в порядку паралельно, а які ні. Якщо програма не призначена для роботи на паралельних ядрах, у програмі можна мати підпрограми, призначені для одночасного запуску послідовної роботи. Це може спричинити всілякі проблеми (наприклад, якщо 2 підпрограми використовують один і той же блок пам'яті, але вони не призначені для запуску одночасно).

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


Спасибі. Я розумію, що. Моє запитання, можливо, мало сформульоване. Я мав на увазі розпитати більше про підключення процесів до окремих ядер. Не якимось магічним способом виготовлення ядер однієї різьбової обробці.
Дуг Т.

3

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

Через це Windows 7 (на сумісних процесорах) має технологію, відому як "основне паркування", яка в основному вимикає невикористані ядра на вашому комп'ютері з метою економії електроенергії.

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


2

Ваші початкові настрої правильні - це негативний нахил до декількох ядер, і це насправді не все, що заслуговує.

Ще в той день, коли більшість користувачів використовували лише настільний ПК для простої обробки текстів, можливо, був аргумент. Але в наші дні з такими речами, як браузери з кількома вкладками, кожен у своєму процесі (хромується, тобто виконується розділення рівня процесів для вкладок), а також такі речі, як відеодекодери на веб-сторінках, та додаткові завдання, які можна легко завантажувати, як на ходу. надання ефектів aka css3, навіть сам браузер може виправдати причину набагато більше оперативної пам’яті та декількох ядер.

Додайте до цього той факт, що деякі користувачі також можуть грати на цьому ПК або використовувати такі інструменти, як гаражні смуги, imovie, ручне гальмо, кілька ядер можуть бути величезною перевагою.

Неправда припускати, що вам потрібно максимізувати (тобто 100% використання процесора на одному ядрі) ядро ​​для того, щоб інше ядро ​​було корисним. Тому що ми тут говоримо про паралелізм. Перемикання завдань в межах процесора зазвичай виконує пакет операцій, перш ніж він поміняє свій стек на інший процес. Не всі ці завдання пов'язані з процесором, тому ви не побачите шип процесора, навіть якщо ядро ​​заблоковано.

В основному ви маєте рацію, але яка найбільш ефективна кількість ядер? 2? 4? 12? Це, швидше за все, залежатиме від звичок користувачів ... Я схильний до цього 2-4 для більшості користувачів, але я лише здогадуюсь.

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