LINUX.ORG.RU

hlt и многоядерность


0

2

Зачем нужна инструкция hlt (которая заставляет процессор ожидать прерывание)?
Эта инструкция останавливает только одно ядро или весь процессор?
Не логичнее было бы вместо неё пользоваться какой-нибдуь другой инструкцией, которая запускает выполнение другой нити (чтобы процессор не простаивал)?

hlt - вообще привилегированная инструкция, кто попало её выполнить не сможет:
http://en.wikipedia.org/wiki/HLT



Последнее исправление: Indaril_Shpritz (всего исправлений: 1)

Только одно ядро.

Переключением задач занимается ОС. Это не дело процессора.

HLT — это та инструкция, которую в бесконечном цикле гоняет аналог задачи Idle в венде. В этом случае процессор ждёт таймера, аппаратного прерывания или IPI, а по его приходу — соответственно, ядро ОС получает управление и делает что нужно (например, переключается на другую задачу).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

но зачем такую инструкцию вообще использовать? Допустим что в ОС много задач. Если одна из этих задач выполнит hlt, то все остальные встанут (до прихода прерывания)...

Indaril_Shpritz
() автор топика
Ответ на: комментарий от Indaril_Shpritz

HLT — это привилегированная инструкция, только ОС имеет право её выполнять. И она это делает только в том случае, если больше задач в очереди нет (все чего-то ждут).

Как ты думаешь, что делает твой процессор, когда его загрузка — 0%? Гоняет в цикле HLT.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Indaril_Shpritz

Если одна из этих задач выполнит hlt.

Про режим ведра (уровень 0) слышал, не?

erfea ★★★★★
()
Ответ на: комментарий от Indaril_Shpritz

Если одна из задач выполнит hlt, то ей влетит gpf. В кольце 0 hlt дает транзисторам поостыть, пока контроллеры мутятся с тормозными девайсами.

arturpub ★★
()

которая запускает выполнение другой нити (чтобы процессор не простаивал)?

процессор про них ничего не знает, это абстракция уровнем выше

hlt останавливает процессор, чтобы он меньше жрал лепестричества, без неё пришлось бы гонять бесконечный цикл, вроде

lb: jmp lb

Harald ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.