Будет ли ОС, работающая в однозадачном режиме (не многозадачном режиме), использовать преимущества обоих ядер в двухъядерном процессоре?

РЕДАКТИРОВАТЬ: В ответ на первый комментарий: Да, но при загрузке компьютера выполняется только одна задача; загрузчик. Мой вопрос: на этом этапе оба ядра выполняют одну и ту же задачу или могут использоваться только в многозадачном режиме.

1 ответ1

2

Если вы говорите о стандартной платформе ПК x86/amd64, при включении системы происходит следующее на аппаратном уровне (отсюда):

В многоядерной системе загрузочный процессор - это ядро (или поток) процессора, которое выбирается для загрузки системного программного обеспечения, которое обычно является однопоточным.

При RESET все процессоры соревнуются за бит флага семафора в наборе микросхем. Первый находит его понятным и в процессе чтения устанавливает флаг; другие процессоры находят установленный флаг и переходят в состояние ожидания для SIPI (межпроцессное прерывание запуска) или состояние остановки.

Первый процессор инициализирует основную память и процессоры приложений (AP), затем продолжает процесс загрузки. (http://www.drdobbs.com/go-parallel/article/print?articleId=232300699)

Таким образом, все процессоры, за исключением того, который "выиграл" гонку выше, будут в состоянии остановки, ожидая SIPI. Если "Процессор BootStrap" никогда не выдает SIPI для других процессоров (прочитайте это), это состояние, в котором они будут оставаться (например, если вы загружаете DOS, который ничего не знает о нескольких ядрах, или APIC, или SIPIs).

Итак, чтобы ответить на ваш вопрос, остальные ядра будут простаивать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .