(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>