У якому режимі сучасні 64-розрядні мікросхеми Intel запускають завантажувальний сектор?


12

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

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

Відповіді:


13

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

Якщо ви можете отримати дискету, поставте MS-DOS (або FreeDOS ) на ньому, і застряг у сьогоднішньому комп'ютері, він почне завантаження.

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

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


haimg, спасибі за це посилання і роз'яснення. @Deshe, вибачте, щоб забрати найкращу відповідь.
mring

Тепер настав час редагувати це, інакше ви не згодні з власною відповіддю :-)
Daniel Beck

13

як щодо сучасних 64-бітних архітектур?

Це залежить від прошивки, яка знаходиться на сучасній 64-бітній машині з сучасною 64-бітною архітектурою. haimg Відповідь була б у випадку п'яти-шести років тому для світу x86, але сьогодні вона застаріла для світу x86.

Старі прошивки PC / AT

Деякі з цих сучасних 64-бітних машин мають старі прошивки в стилі PC / AT. Як зазначено в інших відповідях, вони завантажують і запускають програму завантаження з сектора # 0 диска в значній мірі так само, як і PC / AT. Це старий процес завантаження PC / AT.

Нові прошивки EFI

Інші сучасні 64-бітні машини мають нові прошивки EFI. Вони не завантажують програму завантаження з сектора # 0 диска зовсім . Вони завантажуються менеджером завантаження EFI Boot Manager і запускають програму Програма завантаження EFI . Такі програми виконуються в захищеному режимі. Це процес завантаження EFI.

Прошивки EFI взагалі перемикаються в захищений режим в межах декількох інструкцій виходу з процесорного скидання. Перехід на захищений режим здійснюється на ранній стадії в так званій "фазі SEC" ініціалізації прошивки EFI. Технічно 32-бітні та більші x86-процесори навіть не починаються в реальному режимі, а в тому, що розмовно називають нереальний режим . (Початковий дескриптор сегмента для CS реєстр не описує звичайне відображення реального режиму і те, що робить це "нереальним".)

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


Посилання на процес завантаження, здається, зламано / мертве. Я не можу знайти заміну.
slm


1
І тепер я знаю ваше ім'я, дивлячись на URL-адреси 8-). Не намагаючись шпигувати, це не допомогло помітити.
slm

Я думаю, ви перенесли речі з ntlworld, чи правильно?
slm

Можливий URL-адреса для заміни першого - jdebp.eu/FGA/pcat-boot-process.html . Мій бог ppl копіювати / вставити ваш A'er повсюди. Навіть ця вікіпедія цитує A'er - en.wikipedia.org/wiki/Talk%3AReal_mode .
slm

1

Наскільки я знаю, завантажувальний код завжди працює в режимі ядра.

По-перше, неможливо вирішити, який режим використовувати, оскільки він запускається з завантажувального сектора, просто тому, що це перші інструкції, які виконуються прошивкою. Код не може встановити, які інструкції доступні для нього, перш ніж він почне працювати. Таким чином, за розробкою, набір збірок, доступний для коду завантажувального сектора, зумовлений архітектурою.

Якби будь-який недоцільний режим був обраний для цього, було б неможливо використовувати інструкції з більш високих привілейованих режимів, що значною мірою змушує те, що завантажувальний код працює з найбільш привілейованим режимом.


1

Керівництво по програмуванню Том 3 в ручному режимі

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

Після включення або перезавантаження процесор розміщується в режимі реальної адреси.

Просто для ударів, хороша діаграма з посібника:

enter image description here

GRUB запускає багато операційні системи в захищеному режимі. Специфікація мультизагрузки 0.6.96 Стан машини :

Потрібно встановити біт "CR0" 0 (PE).

Не впевнений у GRUB та x86_64.


Починається GRUB Відповідність специфікації багатоваріантним ОС в захищеному режимі. Це включає в себе * BSD, але, наскільки я знаю, Linux не дотримується цієї специфікації і робить свою справу. Під час завантаження ОС, сумісної з специфікацією Multiboot, конфігурація GRUB використовує multiboot ключове слово; для Linux, є присвячені linux, linux16 і, у версіях UEFI GRUB, linuxefi ключових слів, які повідомляють GRUB про використання протоколу завантаження Linux.
telcoM

@telcoM досить справедлива
Ciro Santilli 新疆改造中心 六四事件 法轮功
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.