Wiem, że w przypadku starszych maszyn, takich jak 286, pierwsze 512 bajtów załadowanych z pierwszego sektora dysku rozruchowego do 0000: 7C00 w pamięci uruchomiono w 16-bitowym trybie rzeczywistym, ale co z nowoczesną architekturą 64-bitową?
Edycja: Myślę, że to złe pytanie po zastanowieniu się nad tym. Autor programu ładującego decyduje, z jakich instrukcji montażu należy korzystać, prawda? Sprzęt robi po prostu to, co mu powiedziano. Zatem moje pytanie powinno brzmieć: z jakiego trybu korzystają główne programy ładujące system operacyjny, takie jak Windows 7, Mac OS X (najnowszy) i GRUB na komputerach 64-bitowych?
To zależy od oprogramowania wbudowanego w nowoczesną maszynę 64-bitową z nowoczesną architekturą 64-bitową.
haimg
odpowiedź byłaby taka, jak pięć do sześciu lat temu dla świata x86, ale jest obecnie nieaktualna dla świata x86.Stare oprogramowanie układowe PC / AT
Niektóre z tych nowoczesnych komputerów 64-bitowych mają stare oprogramowanie układowe w stylu PC / AT. Jak zauważono w innych odpowiedziach, ładują i uruchamiają program ładujący z sektora nr 0 płyty w prawie taki sam sposób jak PC / AT. Jest to stary proces ładowania komputera PC / AT.
Nowe oprogramowanie układowe EFI
Inne nowoczesne 64-bitowe maszyny mają nowe oprogramowanie układowe EFI. Te nie załadować program bootstrap z sektora # 0 tarczy w ogóle . Są ładowane przez menedżera rozruchu EFI podczas ładowania i uruchamiania aplikacji ładującej EFI . Takie programy są uruchamiane w trybie chronionym. To jest proces ładowania EFI.
Oprogramowanie wewnętrzne EFI ogólnie przełącza się na tryb chroniony w ramach kilku instrukcji wychodzenia z resetowania procesora. Przejście do trybu chronionego odbywa się wcześnie w tak zwanej „fazie SEC” inicjalizacji oprogramowania EFI. Technicznie, 32-bitowe i większe procesory x86 nawet nie uruchamiają się w trybie rzeczywistym, ale w tak zwanym potocznie trybie nierealnym . (Początkowy deskryptor segmentu
CS
rejestru nie opisuje konwencjonalnego mapowania w trybie rzeczywistym i jest tym, co czyni go „nierealnym”).Jako takie, można powiedzieć, że te systemy EFI nigdy wejść w tryb rzeczywisty właściwego w ogóle, gdy ładowanie początkowe natywnie do bootloadera EFI (czyli gdy nie wykorzystują moduł obsługi kompatybilności ), ponieważ oni przełączyć z trybu nierzeczywistym bezpośrednio do trybu chronionego i odtąd pozostań w trybie chronionym.
źródło
O ile mi wiadomo, kod rozruchowy zawsze działa w trybie jądra.
Po pierwsze, nic nie jest w stanie zdecydować, którego trybu użyć, ponieważ jest uruchamiany z sektora rozruchowego, po prostu dlatego, że są to pierwsze instrukcje wykonywane przez oprogramowanie układowe. Kod nie ma możliwości ustawienia instrukcji, które są dla niego dostępne przed jego uruchomieniem. Zatem z założenia zestaw montażowy dostępny dla kodu w sektorze rozruchowym jest z góry określony przez architekturę.
Gdyby wybrano do tego jakikolwiek tryb nieuprzywilejowany, nigdy nie byłoby możliwe użycie instrukcji z wyższych trybów uprzywilejowanych, co prawie wymusza fakt, że kod rozruchowy działa z najbardziej dostępnym trybem uprzywilejowanym.
źródło
Podręcznik Intela Podręcznik programowania systemu Tom 3 325384-053US Styczeń 2015:
Dla kopnięć ładny schemat z instrukcji:
GRUB uruchamia systemy operacyjne z wieloma systemami w trybie chronionym. Specyfikacja Multiboot 0.6.96 Stan maszyny :
Nie jestem pewien co do GRUB i x86_64.
źródło
multiboot
słowa kluczowego; dla systemu Linux, nie są dedykowanelinux
,linux16
oraz w wersji UEFI z GRUB,linuxefi
słów kluczowych, mówiąc GRUB użyć Linux konkretny protokół rozruchu.