12

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

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

4 ответа4

13

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

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

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

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

13

как насчет современных 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 (то есть , когда они не используют модуль поддержки совместимости), так как они переходят от нереального режима непосредственно в защищенный режим и оставайтесь в защищенном режиме с тех пор.

1

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

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

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

1

Руководство Intel Том 3 Руководство по системному программированию 325384-053RU Январь 2015 года:

2.2 РЕЖИМЫ РАБОТЫ

Процессор переводится в режим реального адреса после включения питания или сброса.

Просто для удовольствия, хорошая схема из руководства:

GRUB запускает мультизагрузочные ОС в защищенном режиме. Спецификация мультизагрузки 0.6.96 Состояние машины:

'CR0' Бит 0 (PE) должен быть установлен.

Не уверен насчет GRUB и x86_64.

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