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?
Cela dépend du micrologiciel qui se trouve sur la machine 64 bits moderne avec l'architecture 64 bits moderne.
haimg
La 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
CS
registre 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à.
la source
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.
la source
Manuel de programmation du système Intel Volume 3 325384-053US janvier 2015:
Juste pour les coups de pied, un joli diagramme du manuel:
GRUB démarre les OS à démarrage multiple en mode protégé. Spécification Multiboot 0.6.96 État de la machine :
Je ne suis pas sûr de GRUB et x86_64.
la source
multiboot
mot clé; pour Linux, il sont dédiéslinux
,linux16
et, dans les versions UEFI de Grub,linuxefi
mots - clés, que GRUB utiliser un protocole de démarrage spécifique à Linux.