ОС выделяет каждый процесс отдельному ядру?

Хорошо я знаю классический аргумент в пользу предотвращения квадратических ядер. На прикладном уровне большинство приложений не было записано для нескольких ядер. Большей части программного обеспечения, установленного на компьютере даже не нужно распараллеливание.

Однако на уровне ОС, кажется очевидным, что ОС разделила бы процессы через различные ядра. Разве это не было бы отдельно аргументом в пользу получения большего количества ядер? Разве это не выручает много во многих ситуациях? Вы получаете некоторых ЦП интенсивное движение задач - те процессы, каждый мог бы быть hogging 100% их ядер, но я могу все еще просмотреть веб-сайты и задать вопросы на SuperUser на моем последнем ядре.... право?

15
задан 12.09.2010, 19:44

4 ответа

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

12
ответ дан 07.12.2019, 11:06

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

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

3
ответ дан 07.12.2019, 11:06

Когда это сводится к нему, не имеет значения, если процессор будет при 1%-м использовании или 95%-м использовании (как долго, поскольку это стабильно в 95% и не достигающий максимума), то программы будут работать на той же скорости, пока это не поражает 100%. Неиспользованные циклы ЦП просто потрачены впустую.

Из-за этого Windows 7 (на совместимых процессорах) знали технологию как "парковку ядра", которая в основном отключает неиспользованные ядра на Вашем компьютере для сохранения электричества.

Единственные потоковые приложения автоматически объясняются для чередования ядер - я не уверен в технологии позади этого, но я знаю, что она работает вполне хорошо.

3
ответ дан 07.12.2019, 11:06

Ваши начальные чувства корректны - СУЩЕСТВУЕТ отрицательный наклон к нескольким ядрам, и это не действительно все, чего это заслужило.

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

Добавьте к этому то, что некоторые пользователи могли бы также играть на этом ПК или использовать инструменты как garageband, iMovie, ручной тормоз, несколько ядер могут быть огромным преимуществом.

Это не верно, чтобы предположить, что необходимо истратить (т.е. 100%-е использование CPU на одноядерном) ядро для другого ядра, чтобы быть полезными. Поскольку мы говорим параллелизм здесь. Переключение задач в CPU обычно выполняет пакет операций, прежде чем оно подкачает свой стек к другому процессу. Не все эти задачи являются зависящими от ЦП, таким образом, Вы не будете видеть пик нагрузки ЦП даже при том, что ядро заблокировано.

В основном Вы правы, но каково самое эффективное количество ядер? 2? 4? 12? Это, скорее всего, зависело бы от пользовательских привычек... Я склоняюсь к этому 2-4 для большинства пользователей, но я только предполагаю.

2
ответ дан 07.12.2019, 11:06

Теги

Похожие вопросы