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


12

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

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

Ответы:


12

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

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

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

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


haimg, спасибо за эту ссылку и разъяснения. @ Деше, извини, что забрал лучший ответ.
mring

Сейчас самое время отредактировать это, иначе вы не согласны с вашим собственным ответом :-)
Даниэль Бек

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
И теперь я знаю ваше имя, глядя на URL 8-). Не пытаясь шпионить, не мог не заметить.
SLM

Я думаю, что вы перенесли вещи из ntlworld, это правильно?
Slm

Возможная замена URL для 1-го - jdebp.eu/FGA/pcat-boot-process.html . Боже мой, копируй и вставляй свой А'ер. Даже в этой википедии есть цитируемый A'er - en.wikipedia.org/wiki/Talk%3AReal_mode .
Slm

1

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

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

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


1

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

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

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

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

введите описание изображения здесь

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

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

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


GRUB запускает совместимые со спецификацией Multiboot ОС в защищенном режиме. Это включает в себя * BSD, но, насколько я знаю, Linux не следует этой спецификации и делает свое дело. При загрузке ОС, соответствующей спецификации Multiboot, конфигурация GRUB использует multibootключевое слово; для Linux есть выделенные linux, linux16а в UEFI-версиях GRUB linuxefiключевые слова, указывающие GRUB использовать специфичный для Linux загрузочный протокол.
Телеком

@ telcoM достаточно справедливо
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.