Однопоточный процесс выполняется на 2 ядрах

В моем четырехъядерном процессоре кажется, что один поток (бесконечный цикл while) выполняется одновременно на 2 ядрах. Почему это? Разве один поток не должен выполняться только на одном ядре? введите описание здесь

3 ответа

Решение

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

Думайте об этом как телефонный разговор. У вас есть только один телефон * 1, и вам нужно продолжать разговор по телефону * 2 . У вас в офисе четыре человека, каждый из которых способен говорить * 3 . Ничто не мешает вам передать телефон другому человеку во время унитаза.

Обратите внимание, что одновременно на телефон может говорить только один человек.


* 1 Телефон является единственным протектором.
* 2 Нужно продолжать говорить, так как он работает бесконечно.
* 3 Четверо людей являются оф. четыре ядра.

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

Это совсем не похоже на однопоточный процесс, но больше похоже на 4-поточный процесс. Это требует больше экспертизы.

Инструмент для использования - Process Explorer. После запуска вы можете щелкнуть правой кнопкой мыши заголовки столбцов и выбрать дополнительные столбцы, если это необходимо.

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

Если это просто svchost.exe, это системная служба, которую можно определить. Наиболее вероятно, что процессор будет интенсивно использовать Windows Search.

Это отображение в вашем сообщении показывает, сколько активности происходит для каждого ядра, но ничего не говорит о том, какие процессы / потоки выполняются на каком ядре.

Я подозреваю, что когда ваша однопоточная программа получает "временной интервал", ОС запускает ее на одном ядре половину времени, а на другом ядре - половину времени. Может быть, он даже работает на других ядрах в течение некоторого времени.

В качестве бесконечного цикла он полностью использует ядро ​​на протяжении своего временного интервала, но любое временное увеличение активности ядра (в диспетчере задач) будет представлять НАМНОГО БОЛЬШЕ, чем длительность отдельных временных интервалов.

Для дальнейшего понимания происходящего перейдите на вкладку "Процессы" в диспетчере задач. В меню "Вид" выберите "Выбрать столбцы", затем установите флажок "Потоки". Затем в столбце Имя изображения найдите свой процесс. Подтвердите, что это один поток.

Так как я сижу здесь с небольшой нагрузкой на мой компьютер с XP, работает 662 потока. Мой антивирус работает с 78 потоками, Firefox - с 45 потоками, с Dropbox - с 33. Winamp сейчас вообще ничего не проигрывает, и все еще работает с 17 потоками. Любое увеличение на экране диспетчера задач могло иметь все эти потоки на любом ядре.

Другие вопросы по тегам