1.2. Amorçage d'un ordinateur
A- Sur un ordinateur, lors de sa mise en route, le
microprogramme exécute la séquence suivante:
- lecture d'un numéro de
périphérique sur le panneau de
contrôle,
- lecture d'un bloc de 1024 octets
depuis ce périphérique, vers l'adresse hexadécimale 400 en
mémoire, (secteur 0, piste 0, face 0 s'il s'agit d'un
disque),
- exécution de l'instruction
située à l'adresse hexadécimale
400.
Proposer un schéma pour l'amorce
programmée qui figure dans un tel bloc pour un disque.
Indications: L'amorce doit lire sur disque des
informations à charger, assurer le chargement et le lancement du
programme ainsi chargé en mémoire, à partir d'une table
d'implantation décrivant l'organisation.
B- Les compatibles PC sont équipés de
microprocesseurs de la famille 8088/286. Lors de la mise sous tension, ces
microprocesseurs forcent le compteur ordinal à une valeur
prédéfinie (0FFFF0 en hexadécimal), et exécutent
donc l'instruction située à cet endroit en
mémoire.
B.1- Expliquer comment, à votre avis, les
constructeurs réussissent à obtenir que lors de la mise en route
par l'utilisateur, le compatible PC charge automatiquement le système
MS-DOS depuis une disquette ou depuis le disque dur.
B.2- La solution adoptée pour résoudre B.1,
ne permettrait-elle pas d'éviter de charger MS-DOS. Quel est
l'intérêt alors de ce chargement?
Solution de l’exercice
1.2
1.2.1. Question A
L’amorce programmée doit contenir les
informations suivantes:
1) La localisation sur disque des informations à
charger, éventuellement complétées des adresses en
mémoire centrale où ces informations doivent être
placées:
- numéros de piste, face, secteur de début
de zone sur disque,
- nombre de secteurs de la zone
- adresse mémoire centrale où la zone doit
être chargée.
2) L'adresse mémoire centrale de la
première instruction à exécuter du programme ainsi
chargé. On peut imaginer que la dernière entrée de la table
est distinguée par un nombre de secteurs nul, et que dans ce cas
l'adresse mémoire correspond à cette adresse de lancement du
programme.
Le programme amorce se décompose de la façon
suivante:
initialisation des registres du processeur
pour toutes les entrées de la table faire
si nombre de secteurs non nul alors lecture sur disque
sinon saut à adresse mémoire
finsi
fait
Il faut
noter que ce programme doit être court, puisque l'ensemble doit tenir sur
un bloc de 1Ko. Par ailleurs on ne dispose alors d'aucune fonctionnalité.
En particulier la procédure de lecture en général fera un
traitement d'erreur rudimentaire, par exemple en envoyant sur la console un
message court, et en reprenant le programme amorce au début. Remarquons
que ce programme amorce peut être utilisé pour charger non pas le
programme final (système par exemple), mais pour charger un second
programme d'amorçage plus élaboré, et donc de taille plus
importante, qui assurera lui-même le chargement du programme
système.
1.2.2. Question B
1.2.2.1. Question B.1
Puisque le microprocesseur exécute une instruction
située à une adresse donnée en mémoire, il faut que
cette instruction soit déjà dans la mémoire centrale lors
de la mise en route. La partie de mémoire qui la contient doit être
non volatile, c'est-à-dire doit persister à une coupure de
courant, et ne doit pas pouvoir être modifiée pour que l'usager
retrouve toujours son ordinateur personnel dans le même état
lorsqu'il met le courant. C'est pourquoi on utilise une mémoire morte
“ROM” (ou Read Only Memory). Dans cette mémoire est
inscrit un programme d'amorçage équivalent à ce qui est
microprogrammé sur les gros ordinateurs. Cependant ce programme peut
être déjà plus performant, comme par exemple, en recherchant
sur un ensemble de périphériques, comme les lecteurs de disquettes
ou les disques durs, le premier qui contient une amorce programmée
(secteur de boot dans la terminologie anglaise) qui chargera alors le
système MS-DOS lui-même.
Le programme d'amorce en ROM pourrait être le
suivant:
pour tous les périphériques faire
lire un bloc;
si bloc lu correctement alors
si bloc d'amorce alors
exécuter le bloc; { amorce programmée }
finsi;
finsi;
fait;
1.2.2.2. Question B.2
Il serait tout à fait possible de mettre MS-DOS
directement dans cette mémoire ROM. Il suffirait que sa taille soit
suffisante. C'est d'ailleurs ce que fait Atari sur les ordinateurs personnels de
la famille ST qui contiennent le “TOS” en mémoire ROM.
Cependant, cela ne permet pas de changer facilement de version, et de faire
évoluer ainsi le système lui-même, puisqu'il faut alors
changer la mémoire morte. En général, ces machines
compensent cet inconvénient en conservant la possibilité d'amorcer
l'ordinateur à partir d'un périphérique. Évidemment
on perd alors l'intérêt du système en ROM.