Dans quel mode les PC à puce Intel 64 bits modernes exécutent-ils le secteur de démarrage?

12

Je sais qu'avec des machines plus anciennes comme les 286, les 512 premiers octets chargés du premier secteur du lecteur de démarrage à 0000: 7C00 en mémoire ont été exécutés en mode réel 16 bits, mais qu'en est-il des architectures 64 bits modernes?

Edit: Je suppose que c'est une mauvaise question en y réfléchissant. L'auteur du chargeur de démarrage est le décideur du mode d'assemblage à utiliser, non? Le matériel fait juste ce qu'on lui dit. Alors ma question devrait être, quel mode les principaux chargeurs de démarrage du système d'exploitation comme Windows 7, Mac OS X (le plus récent) et GRUB sur les machines 64 bits utilisent-ils?

mring
la source

Réponses:

12

Tous les ordinateurs compatibles x86 actuels (cela inclut également l'architecture x64, à la fois d'Intel et d'AMD, mais pas d'Itanium) exécutent le code du secteur de démarrage en mode réel x86 , exactement comme le PC IBM d'origine le faisait il y a 20+ ans. Ce n'est pas le mode noyau, c'est le mode segmenté d'origine sans protection de la mémoire, multitâche ou niveaux de privilège de code.

Si vous pouvez mettre la main sur un lecteur de disquette, y mettre MS-DOS (ou FreeDOS ) et le coincer dans l'ordinateur d'aujourd'hui, il démarrera.

C'est la tâche du code de démarrage de passer en mode protégé, de configurer la protection de la mémoire, etc. Le chargeur de démarrage démarre l'exécution en mode réel x86 et passe en mode protégé, charge et commence réellement à exécuter le noyau du système d'exploitation en mode «noyau» (anneau 0).

Pour plus d'informations, vous pouvez visiter l'article Wikipedia sur le processus de démarrage de Windows NT , qui contient pas mal de détails à ce sujet.

haimg
la source
haimg, merci pour ce lien et cette clarification. @Deshe, désolé de retirer la meilleure réponse.
mring
Il est maintenant temps de modifier cela, sinon vous n'êtes pas d'accord avec votre propre réponse :-)
Daniel Beck
13

Qu'en est-il des architectures 64 bits modernes?

Cela dépend du micrologiciel qui se trouve sur la machine 64 bits moderne avec l'architecture 64 bits moderne. haimgLa réponse aurait été le cas il y a cinq à six ans pour le monde x86, mais elle est dépassée pour le monde x86 aujourd'hui.

Anciens firmwares PC / AT

Certaines de ces machines 64 bits modernes ont d'anciens firmwares de style PC / AT. Comme indiqué dans d'autres réponses, ils chargent et exécutent le programme d'amorçage à partir du secteur # 0 d'un disque à peu près de la même manière que le PC / AT. Il s'agit de l'ancien processus d'amorçage PC / AT.

Nouveaux firmwares EFI

D'autres machines modernes 64 bits ont de nouveaux firmwares EFI. Ceux - ci ne se chargent pas un programme d'amorçage du secteur # 0 d'un disque du tout . Ils démarrent en chargeant et en exécutant une application de chargeur de démarrage EFI . Ces programmes sont exécutés en mode protégé. Il s'agit du processus d'amorçage EFI.

Les firmwares EFI passent en général en mode protégé en quelques instructions pour quitter la réinitialisation du processeur. Le passage en mode protégé se fait tôt dans la soi-disant «phase SEC» de l'initialisation du firmware EFI. Techniquement, les processeurs x86 32 bits et supérieurs ne démarrent même pas en mode réel proprement dit, mais dans ce que l'on appelle familièrement le mode irréel . (Le descripteur de segment initial pour le CSregistre ne décrit pas le mappage en mode réel conventionnel et c'est ce qui rend cela "irréel".)

En tant que tel, on pourrait dire que ces systèmes EFI n'entrent jamais du tout en mode réel proprement dit , lors du démarrage natif vers un chargeur de démarrage EFI (c'est-à-dire lorsqu'ils n'utilisent pas de module de support de compatibilité ), car ils passent directement du mode irréel au mode protégé. et rester en mode protégé à partir de là.

JdeBP
la source
Le lien vers le processus d'amorçage semble être rompu / mort. Je ne trouve pas de remplaçant.
slm
C'est le vôtre? - jdebp.eu/FGA/pcat-boot-process.html
slm
1
Et maintenant je connais votre nom en regardant les URL 8-). Ne pas essayer d'espionner ne pouvait s'empêcher de remarquer.
slm
Je pense que vous avez déplacé des choses de ntlworld, est-ce exact?
slm
URL de remplacement possible pour 1st - jdebp.eu/FGA/pcat-boot-process.html . Mon dieu ppl copier / coller votre A'er partout. Même ce wikipedia a ce A'er cité - en.wikipedia.org/wiki/Talk%3AReal_mode .
slm
1

Pour autant que je sache, le code de démarrage s'exécute toujours en mode noyau.

D'une part, il est impossible pour quoi que ce soit de décider du mode à utiliser car il est exécuté à partir du secteur de démarrage, simplement parce que ce sont les premières instructions à exécuter par le firmware. Il n'y a aucun moyen pour le code de définir les instructions disponibles avant qu'il ne démarre. Ainsi, par conception, l'ensemble d'assemblage disponible pour le code sur le secteur de démarrage est prédéterminé par l'architecture.

Si un mode défavorisé avait été choisi pour cela, il aurait été impossible d'utiliser des instructions de modes privilégiés supérieurs, ce qui force à peu près le fait que le code de démarrage s'exécute avec le mode le plus privilégié disponible.

Deshe
la source
1

Manuel de programmation du système Intel Volume 3 325384-053US janvier 2015:

2.2 MODES DE FONCTIONNEMENT

Le processeur est placé en mode adresse réelle après la mise sous tension ou une réinitialisation.

Juste pour les coups de pied, un joli diagramme du manuel:

entrez la description de l'image ici

GRUB démarre les OS à démarrage multiple en mode protégé. Spécification Multiboot 0.6.96 État de la machine :

Le bit 'CR0' 0 (PE) doit être défini.

Je ne suis pas sûr de GRUB et x86_64.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
la source
GRUB démarre les systèmes d'exploitation compatibles avec la spécification Multiboot en mode protégé. Cela inclut les * BSD, mais pour autant que je sache, Linux ne suit pas cette spécification et fait sa propre chose. Lors du démarrage d'un système d'exploitation compatible avec la spécification Multiboot, la configuration GRUB utilise le multibootmot clé; pour Linux, il sont dédiés linux, linux16et, dans les versions UEFI de Grub, linuxefimots - clés, que GRUB utiliser un protocole de démarrage spécifique à Linux.
telcoM
@telcoM assez juste
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件