(Courriels de diversion: <reintroduirons@hypnotises-pointe.com> <solderas@lâchait-deloges.com> <etheres@remues-galejades.com> <gêneuses@questionnee-nacelles.com> <cryptee@hues-raturerent.com> <redefinitions@noyauterons-cocon.com> <copieuses@voltigent-vulgarise.com> <regenteras@approfondiriez-recoiffees.com> <delava@trafiquaient-emboutirent.com> <inventoriees@torpillais-meurtrissant.com> )


Le ven, 23 jun 2000, vous avez écrit :
> Salut,
> 
> On présente Linux comme un système d'exploitation 32 bits.
> Je me suis toujours demandé ce que celà signifiait précisément.
> 
> Alors je pose la question : Que celà signifie t-il exactement ?
> 
> Laurent Foucher

Salut à tous,

Bon je sais pas si quelqu'un a repondu à ta question, lors du débat
philosophique qui a suivit la réunion de Samedi, alors je t'envois ces quelques
infos supplémentaires.

Pour répondre à ta question il faut d'abord, répondre à quelques questions
intermédiaire:

1) (Pour ceux qui ne savent pas) Qu'est ce qu'un OS (Operating System ou
système d'exploitation en bon français), c'est un programme qui fait le lien
entre le hardware, c'est à dire tout les composants électroniques et les
périphériques qui composent la machine, et les programmes que doit exécuter
cette machines.

Un OS est donc composé d'un ensemble de fonctions qui permettent:
- D'initialiser l'électronique et les périphériques de la machine.
- De fournir des routines permettant la gestion du matériel (accès aux
périphériques, gestion des ressources ...)
- De lancer d'autres programmes, qui devront faire appel à ses services pour
accéder au hardware.
Voilà donc les bases d'un OS.

2) Qu'est ce le 8, 16 et 32 bits ?
Pour cela, je pense qu'il est bon de regarder ce que sait faire un
microprocesseur puisque c'est lui qui execute l'OS et les autres programmes.
Dans tout jeu d'instruction d'un micropro. on retrouve au moins les instructions
suivantes:

Opérations arithmétiques: Addition, soustraction, multiplication et division.
Opérations logiques: ET, OU, NON, XOR (ou exclusif).
D'affectations: Met telle valeur X (cste) dans à l'adresse Y, prend le contenu
de l'adresse X et met le à l'adresse Y.
Des test: compare la valeur A à la valeur B.
Des sauts inconditionnels: execute le code se trouvant à l'adresse X.
Des sauts conditionnels: ces instructions font suite à un test, et peuvent
s'interpreter de la forme, si le résultat du test est l'égalité alors execute
le code à l'adresse X sinon continue à executer le code suivant.

Pour etre plus complet il faut coupler ces instructions aux trois formes
d'adressage de base:
L'adressage immédiat: la donnée à manipuler se trouve dans l'instruction elle
meme ex: Met 15 dans l'accumulateur (je rapelle au passage que l'accumulateur
est l'organe du microprocesseur qui execute toutes les fonctions arithmétiques
et logiques, c'est à dire que c'est lui qui effectue toute la partie calcul).

L'adressage direct: la donnée à manipuler se trouve à une adresse qui est
contenue dans l'instruction ex: prend la valeur de la case mémoire 12 et met la
dans l'accumulateur.

L'adressage indirect: C'est de l'utilisation d'un pointeur c'est à dire que
l'instruction contient l'adresse d'une variable qui contient l'adresse de la
donnée à manipuler, ex: met la valeur de la case mémoire pointer par le
registre X dans l'accumulateur.
Voilà donc les fonctions de base que sait faire plus ou moins facilement tout
microprocesseur.

Maintenant définissons ce qu'est un micropocesseur 32, 16 ou 8 bits est quel
est l'intérèt du 32 bits.

Le nombre de bits d'un microprocesseur désigne en fait la taille de son
accumulateur c'est à dire la taille de la plus grosse donnée qu'il peut
manipuler, en une seule fois, cela à une très grosse incidence sur la vitese
d'un microprocesseur, car pour faire l'addition de 2 variables 32 bits par
exemple il faudra 1 instructions à 1 micropro 32 bits,  3 instructions à 1
micro 16 bits 1 première pour faire l'addition des 16 premiers bits, et seconde
pour ranger le résultat dans une variable temporaire et un 3 troisième pour
faire l'addition des 16 derniers bits et ainsi il faudra 7 instructions à un
micropro. 8 bits pour faire la meme addition, (et cette augmentation du
nombre d'instruction est encore pire dans le cas d'une multiplication) d'ou un
premier intéret pour le 32 bits, (dans le meme style d'idée tu peux facilement
t'imaginer le temps gagner par un micro 32 bits dans la comparaison de chaines
de caractères ou on peut ainsi comparer 4 caractères par instruction). 

Mais cette description de l'addition de variables plus grande que
l'accumulateur, a aussi une autre retombée bien plus importante, le calcul des
adresses, et c'est elle qui va nous permettre de comprendre assez facilement
une des différence entre un OS 32 bits et 8 bits, car regardes a l'heure
actuelle les microprocesseur Intel disposse de 32 bits d'adresses soit la
possibilité d'adresser 4 giga de mémoire, dans le cas ou l'OS veut ecrire des
données à  des adresses consecutives en mémoire, dans ce cas il va charger la
valeur de l'adesse de départ puis va incrémenter celle ci de 1 après chaque
écriture, si l'OS a été écrit avec des insructions 32 bits cela va lui demander
1 instruction, et 7 s'il a été écrit avec des instructions 8 bits, ce n'est
biensur qu'un exemple assez simple qui permet de comprendre la différence entre
un OS 8 et 32 bits, car plus tu rajoutes des instructions plus tu ralonges ton
programme et sa durée d'execution, et surtout plus tu augmente les risques
d'erreurs.

On peut donc dire qu'un OS est 32 bits lorsque toutes les fonctions qui le
composent sont écrites avec des instructions 32 bits (en tout cas pour celles ou
cela est necessaire, certaines fonctions n'ayant pas besoin de  traiter des
données sur 32 bits), on se retrouve donc ainsi avec un OS optimiser pour
l'achitecture du micro qu'il doit gérer.

Encore un peu juste pour le plaisir:
Car biensur un micro 32 bits sait très bien executer des instructions 8 bits,
on pourrai ainsi imaginer un OS destiné à une famille de microprocesseurs qui
aurai garder une compatibilité ascendante sur plusieurs générations, c'est à
dire que les micro actuel 32 bits, pourraient executer sans problème des
programmes écrits avec des instructions 8 bits pour les micro 8 bits des
anciennes générations.
Imaginons que dessus tourne un OS qui lui aussi aurai connu toutes les
générations des ces micros et dans lequel pour gagner du temps les programmeurs
feraient cohabiter des anciennes routines 8 bits, avec des routines 32 bits de
nouvelles générations (on pourrait meme imaginer, mais bon là s'est pas
possible d'accoucher d'un truc pareil, que pour jeter un peu de poudre aux
yeux, les mecs se soient amuser de créer une sorte d'interface graphique, entre
l'os 8 bits et l'utilisateur, en utilisant des instructions 16 bits), et que
maintenant cet l'OS doivent gérer des routines 8 bits pour les applications
d'anciennes générations, des routines 16 bits pour l'ancienne interface
graphique et 32 bits pour les nouvelles fonctions, imagine un peu le sac de
noeuds auquel ça pourrait conduire (car biensur un truc pareil ne peut pas
exister, c'est le contresens meme de la logique informatique), le nouvel OS
passerai son temps à jongler avec des données dans des formats toujours
différents, comment dans ces cas là, interconnecter toutes ces routines pour
les faire communiquer entre elles, puisque aucune ne gére des données dans le
meme format, cela conduirai à des erreurs de partout, un tel système planterai
tout le temps, et ne pourrai depasser les 24 heures d'uptime, et tout le monde
se refuserai à utiliser un tel stsrème (je pense meme que l'OS pourrai écrire à
l'écran d'ou provient l'erreur dans un charabiat incompréhensible du style le
liste des principaux registres du micro avec leurs valeurs, le tout sur un joli
fond bleu, car il parrait que c'est une couleur qui détend, car apres avoir
créer un truc pareil on ne serait plus à ça près, de la part des concepteurs :).

Mais bon faut pas s'en faire un truc pareil ne peut pas exister, sinon
ça se saurait ....

-- 
A+

Pierre CASTELLA

---------------------------------------------------------------------
Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://www.CULTe.org>