В каком режиме работают современные 64-битные ПК с чипом Intel?

3775
mring

Я знаю, что на более старых машинах, таких как 286, первые 512 байт, загруженные из первого сектора загрузочного диска в 0000: 7C00 в памяти, работали в 16-битном реальном режиме, но как насчет современных 64-битных архитектур?

Изменить: Я думаю, что это неправильный вопрос, подумав об этом. Автор загрузчика решает, какие инструкции по сборке режима использовать, верно? Аппаратное обеспечение просто делает то, что ему говорят. Тогда у меня возникает вопрос: в каком режиме работают основные загрузчики ОС, такие как Windows 7, Mac OS X (последняя версия) и GRUB на 64-битных машинах?

12

4 ответа на вопрос

13
haimg

Все современные x86-совместимые компьютеры (включая архитектуру x64, как от Intel, так и от AMD, но не Itanium) выполняют код загрузочного сектора в реальном режиме x86, точно так же, как и на оригинальном IBM PC 20+ лет назад. Это не режим ядра, это оригинальный сегментированный режим без защиты памяти, многозадачности или уровней привилегий кода.

Если вы можете взять флоппи-дисковод, установить на него MS-DOS (или FreeDOS ) и подключиться к современному компьютеру, он начнет загружаться.

Задача загрузочного кода - переключиться в защищенный режим, настроить защиту памяти и т. Д. Так что ваше предположение частично верно. Загрузчик запускает выполнение в режиме реального времени x86 и переключается в защищенный режим, загружает и фактически запускает ядро ​​ОС в режиме «ядро» (кольцо 0).

Для получения дополнительной информации, вы можете посетить статью Википедии о процессе запуска Windows NT, в которой есть довольно много подробностей на эту тему.

haimg, спасибо за эту ссылку и разъяснения. @Деше, извини, что забрал лучший ответ. mring 12 лет назад 0
Сейчас самое время отредактировать это, иначе вы не согласны с собственным ответом :-) Daniel Beck 12 лет назад 0
13
JdeBP

как насчет современных 64-битных архитектур?

Это зависит от прошивки, установленной на современном 64-разрядном компьютере с современной 64-разрядной архитектурой. haimgОтвет на этот вопрос был бы примерно пять-шесть лет назад для мира x86, но сегодня он устарел для мира x86.

Старые прошивки ПК / АТ

Некоторые из этих современных 64-битных машин имеют старые прошивки в стиле ПК / АТ. Как отмечалось в других ответах, они загружают и запускают программу начальной загрузки с сектора № 0 диска почти так же, как PC / AT. Это старый процесс начальной загрузки ПК / AT.

Новые прошивки EFI

Другие современные 64-битные машины имеют новые прошивки EFI. Они не загружаются самозагрузки программы из сектора # 0 диска вообще . Они загружаются с помощью EFI Boot Manager, загружая и запуская приложение загрузчика EFI . Такие программы запускаются в защищенном режиме. Это процесс начальной загрузки EFI.

Микропрограммы EFI в общем случае переключаются в защищенный режим в течение нескольких инструкций при выходе из перезагрузки процессора. Переключение в защищенный режим выполняется на раннем этапе в так называемой «фазе SEC» инициализации встроенного программного обеспечения EFI. Технически, 32-разрядные и более мощные x86-процессоры даже не запускаются в реальном режиме, а в так называемом нереальном режиме . (Начальный дескриптор сегмента для CSрегистра не описывает обычное отображение в реальном режиме и делает его «нереальным».)

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

Ссылка на процесс начальной загрузки не работает. Я не могу найти замену. slm 5 лет назад 0
Это твое? - https://jdebp.eu/FGA/pcat-boot-process.html slm 5 лет назад 0
И теперь я знаю ваше имя, глядя на URL 8-). Не пытаясь шпионить, не мог не заметить. slm 5 лет назад 1
Я думаю, что вы перенесли вещи из ntlworld, это правильно? slm 5 лет назад 0
Возможная замена URL для 1-го - https://jdebp.eu/FGA/pcat-boot-process.html. Боже мой, копируй / вставляй свой А'ер на всем протяжении. Даже в этой википедии есть цитируемый A'er - https://en.wikipedia.org/wiki/Talk%3AReal_mode. slm 5 лет назад 0
1
Deshe

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

С одной стороны, невозможно ни для кого решить, какой режим использовать, поскольку он запускается из загрузочного сектора, просто потому, что это первые инструкции, которые должны быть выполнены прошивкой. Код не может установить, какие инструкции доступны для него до его запуска. Таким образом, конструктивно набор сборок, доступный для кода в загрузочном секторе, предопределен архитектурой.

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

1
Ciro Santilli 新疆改造中心 六四事件 法轮功

Intel manual Volume 3 System Programming Guide 325384-053US January 2015:

2.2 MODES OF OPERATION

The processor is placed in real-address mode following power-up or a reset.

Just for the kicks, a nice diagram from the manual:

enter image description here

GRUB starts the OS in protected mode. Multiboot specification 0.6.96 Machine state:

'CR0' Bit 0 (PE) must be set.

Not sure about GRUB and x86_64.

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