In quale modalità funzionano i moderni PC chip Intel a 64 bit nel settore di avvio?


12

So che con macchine più vecchie come 286s, i primi 512 byte caricati dal primo settore dell'unità di avvio su 0000: 7C00 in memoria venivano eseguiti in modalità reale a 16 bit, ma per quanto riguarda le moderne architetture a 64 bit?

Modifica: immagino che questa sia una domanda sbagliata quando ci pensiamo. Lo scrittore del boot loader è il decisore di quali istruzioni di assemblaggio della modalità utilizzare, giusto? L'hardware fa proprio quello che gli viene detto. Quindi la mia domanda dovrebbe essere: quale modalità utilizzano i principali caricatori di avvio del sistema operativo come Windows 7, Mac OS X (l'ultimo) e GRUB su macchine a 64 bit?

Risposte:


12

Tutti gli attuali computer compatibili con x86 (incluso anche l'architettura x64, sia da Intel che da AMD, ma non da Itanium) eseguono il codice del settore di avvio in modalità reale x86 , esattamente come il PC IBM originale ha fatto più di 20 anni fa. Non è la modalità kernel, è la modalità segmentata originale senza livelli di privilegio di protezione della memoria, multitasking o codice.

Se riesci a procurarti un'unità floppy, metti MS-DOS (o FreeDOS ) su di essa e bloccato nel computer di oggi, inizierà l'avvio.

È compito del codice di avvio passare alla modalità protetta, impostare la protezione della memoria, ecc. Quindi la tua ipotesi è parzialmente corretta. Il boot loader avvia l'esecuzione come modalità reale x86 e passa alla modalità protetta, carica e avvia effettivamente l'esecuzione del kernel del sistema operativo in modalità "kernel" (ring 0).

Per ulteriori informazioni, è possibile visitare l'articolo di Wikipedia sul processo di avvio di Windows NT , che contiene alcuni dettagli su questo argomento.


haimg, grazie per quel link e chiarimento. @Deshe, mi dispiace di portare via la migliore risposta.
arrivo il

Ora è il momento di modificarlo, altrimenti non sei d'accordo con la tua risposta :-)
Daniel Beck

13

che dire delle architetture moderne a 64 bit?

Dipende dal firmware che si trova sul moderno computer a 64 bit con la moderna architettura a 64 bit. haimgLa risposta sarebbe stata il caso da cinque a sei anni fa per il mondo x86, ma oggi non è aggiornata per il mondo x86.

Vecchi firmware per PC / AT

Alcune di quelle moderne macchine a 64 bit hanno vecchi firmware in stile PC / AT. Come notato in altre risposte, caricano ed eseguono il programma bootstrap dal settore n. 0 di un disco praticamente nello stesso modo del PC / AT. Questo è il vecchio processo bootstrap PC / AT.

Nuovi firmware EFI

Altre moderne macchine a 64 bit hanno nuovi firmware EFI. Questi non caricare un programma di bootstrap dal settore # 0 di un disco a tutti . Eseguono l'avvio da EFI Boot Manager caricando ed eseguendo un'applicazione caricatore di avvio EFI . Tali programmi vengono eseguiti in modalità protetta. Questo è il processo bootstrap EFI.

I firmware EFI in generale passano alla modalità protetta in poche istruzioni per uscire dal ripristino del processore. Il passaggio alla modalità protetta viene effettuato all'inizio della cosiddetta "Fase SEC" dell'inizializzazione del firmware EFI. Tecnicamente, i processori x86 a 32 bit e superiori non si avviano nemmeno nella modalità reale corretta, ma in quella che è colloquialmente nota come modalità irreale . (Il descrittore di segmento iniziale per il CSregistro non descrive la mappatura convenzionale in modalità reale ed è ciò che rende questo "irreale".)

Come tale, si potrebbe dire che quei sistemi EFI non entrano mai nella modalità reale propriamente , quando si avvia in modo nativo a un bootloader EFI (cioè quando non impiegano un modulo di supporto compatibilità ), poiché passano dalla modalità irreale direttamente alla modalità protetta e rimani in modalità protetta da quel momento in poi.


Il collegamento al processo bootstrap sembra essere interrotto / morto. Non riesco a trovare un sostituto.
slm,


1
E ora conosco il tuo nome guardando gli URL Cool. Non provare a spiare non poteva fare a meno di notare.
slm,

Penso che tu abbia spostato le cose da ntlworld, è corretto?
slm,

Possibile URL di sostituzione per 1st - jdebp.eu/FGA/pcat-boot-process.html . Mio dio ppl copia / incolla il tuo A'er dappertutto. Anche questa Wikipedia ha citato questo A'er - en.wikipedia.org/wiki/Talk%3AReal_mode .
slm,

1

Per quanto ne so, il codice di avvio funziona sempre in modalità Kernel.

Per uno, è impossibile per qualsiasi cosa decidere quale modalità utilizzare mentre viene eseguita dal settore di avvio, semplicemente perché sono le prime istruzioni che devono essere eseguite dal firmware. Non è possibile per il codice impostare quali istruzioni sono disponibili prima che inizi l'esecuzione. Pertanto, in base alla progettazione, il set di assembly disponibile per il codice nel settore di avvio è predeterminato dall'architettura.

Se fosse stata scelta una modalità non privilegiata per questo, sarebbe stato impossibile utilizzare le istruzioni da modalità con privilegi più elevati, il che praticamente costringe il fatto che il codice di avvio viene eseguito con la modalità più privilegiata disponibile.


1

Manuale di programmazione del volume 3 del manuale Intel Intel 325384-053US gennaio 2015:

2.2 MODALITÀ DI FUNZIONAMENTO

Il processore viene messo in modalità indirizzo reale dopo l'accensione o il ripristino.

Solo per i calci, un bel diagramma dal manuale:

inserisci qui la descrizione dell'immagine

GRUB avvia i sistemi operativi multiboot in modalità protetta. Specifica del multiboot 0.6.96 Stato macchina :

Il bit 0 (PE) 'CR0' deve essere impostato.

Non sono sicuro di GRUB e x86_64.


GRUB avvia SO compatibili con le specifiche Multiboot in modalità protetta. Ciò include i * BSD, ma per quanto ne so, Linux non segue questa specifica e fa le sue cose. Quando si avvia un sistema operativo compatibile con le specifiche Multiboot, la configurazione di GRUB utilizza la multibootparola chiave; per Linux, ci sono dedicati linux, linux16e, nelle versioni UEFI di GRUB, linuxefiparole chiave, dice a GRUB di utilizzare un protocollo di avvio specifico per Linux.
telcoM,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.