Assembleur - Ecrire un OS en Mode Réel - 16 bits

Tutoriel sur la création d'un système d'exploitation en mode réel (16 bits) avec l'assembleur FASM (Flat Assembler).

Le Mode Réel (Real Mode), qu'est-ce que c'est?

Lorsque le processeur commence à démarrer l'ordinateur, il démarre en mode réel et fonctionne comme un microprocesseur Intel 8086.

Le mode réel est le mode d'adressage mémoire par défaut d'un microprocesseur compatible x86 d'Intel.

Ce mode d'adressage du processeur offre un accès en lecture et écriture sans restriction dans la limite du 1 Mo de la mémoire RAM que le processeur peut voir.

Le mode réel est le premier à avoir vu le jour sur système x86. Ce mode était donc utilisé par les premiers systèmes d'exploitation tournant sur ce type d'architecture( DOS par exemple) avant la naissance du mode protégé.

Le mode réel est présent sur tous les microprocesseurs de la famille x86 qui est devenue l'architecture de processeurs la plus répandue dans le monde des ordinateurs personnels, stations de travail et serveurs informatiques en raison du choix d'IBM d'utiliser l'Intel 8088 comme base de l'IBM PC sorti en 1981.

A l'heure actuelle, on privilégie le mode protégé, plus robuste face aux erreurs matérielles et de programmation.

Pour des raisons de compatibilité, tous les processeurs x86 démarrent en mode réel.

Séquence de Démarrage (Boot)

Mise sous tension

Quand vous allumez un ordinateur, la carte mère reçoit du courant en envoit vers le microprocesseur qui éxécute alors des instructions qui proviennent typiquement de la mémoire morte (ROM - Read Only Memory).

Cette suite d'instructions vont créer un relais du démarrage de l'ordinateur jusqu'à l'éxécution du Système d'Exploitation. Cette chaine d'instruction est courament appellée "boot".

POST

Cette phase éxécute une série de diagnostiques appelés POST (Power On Self Test).

Cette séquence va tester et vérifier que votre matériel est entièrement opérationnel, afin de poursuivre la séquence de démarrage.

Si pendant cette séquence, une erreur est détectée; généralement une alerte sera donné à l'utilisateur sous forme de bip ou d'affichage de l'erreur si l'écran est opérationnel.

Si tous se passe bien, cette séquence devrait aboutir à la localisation d'un périphérique amorçable tel qu'une disquette, un CD-ROM ou un disque dur, etc...dans l'ordre dans lequel le micrologiciel (BIOS) est configuré.

BIOS

Le BIOS (Basic Input/Output System) est le micrologiciel (firmware) responsable d'initialiser le matériel au démarrage de l'ordinateur. il fournit aussi un ensemble de service afin que la couche logiciel (bootloader, OS,...) puisse intéragir plus aisément avec la partie matériel (clavier, souris, écran...).

Toutes les interruptions utilisée en language assembleurs seront dirigée vers le BIOS, c'est donc un élément coeur à l'assembleur en Mode Réel.

Bootloader

Une fois que la fonctionnalité du matériel est confirmée par la phase précédente POST et que le système d'entrée et sortie (communication entre les périphérique) est chargé, le processus de démarrage, Bootloader, commence à charger le système d'exploitation (OS) à partir du périphérique de démarrage.

Le bootloader charge alors le noyeau (Kernel) du système d'exploitation afin de le placer dans la mémoire vive (RAM) de l'ordinateur et c'est ainsi que les instructions du système d'exploitation pourront être éxécuté par le processeur.

Le Kernel

C'est le noyeau du système d'exploitation, une fois chargé dans la RAM par le bootloader, le contrôle de l'ordinateur est passé au Kernel qui est le coeur du système d'exploitation.

Suite: écriture d'un bootloader minimal
Retour vers la page d'accueil