© Groupe Eyrolles, 2005
C
Émulation et
interopérabilité
Théoriquement, tous les ordinateurs sont équivalents à des
machines de Turing (modélisation théorique des machines de
traitement automatique). Concrètement, en revanche, ils
présentent des incompatibilités. Heureusement, il existe des
traducteurs et interpréteurs qui, au prix parfois d’une petite
baisse de performance, assurent dans une certaine mesure la
compréhension mutuelle. Attention, ce chapitre est un peu
technique mais le parcourir rapidement pourra s’avérer
intéressant pour compléter votre culture générale et votre
compréhension des ordinateurs.
SOMMAIRE
B
Couches de fonctionnement
des ordinateurs
B
Équivalences et émulations à
chaque niveau
MOTS-CLÉS
B
Émulation
B
Compilation
B
Interprétation
B
Formats de fichiers
B
Équivalences fonctionnelles
Accès libre – Débuter sous GNU/Linux
© Groupe Eyrolles, 2005
2
Cadre
Les ordinateurs, on loublie parfois, sont avant tout conçus pour servir l’homme.
En particulier, tout élément frustrant et stressant, mais évitable étant donné
l’état des technologies, est le signe dune mauvaise conception. Ils doivent donc
proposer une interface intuitive et conviviale à leurs utilisateurs et program-
meurs – on parle de « haut niveau ».
Originellement, pour des raisons de recherche et de limites technologiques, les
premiers calculateurs électroniques n’étaient capables d’effectuer que des opéra-
tions techniques et abstraites, de peu d’intérêt aux yeux du non spécialiste.
C’étaient les premiers informaticiens qui faisaient l’effort dapprentissage et de
concentration pour communiquer avec les machines dans ce langage non
intuitif.
Peu à peu, l’électronique et les connaissances évoluant, on a pu ajouter des cou-
ches de niveaux de plus en plus haut, chacune reposant sur des instructions de la
précédente. Ainsi, on pouvait « lire un caractère » dans un fichier, sur le disque,
sans rien connaître du fonctionnement de sa mécanique ou de son système de
fichiers, une bibliothèque de « virtualisation » faisant l’interface. Plus tard
encore, des fonctions « lire un nombre entier » ou « lire une ligne complète » se
sont appuyées sur la fonction « lire un caractère », etc.
Chacune de ces couches de l’échafaudage est une source possible d’incompatibi-
lités entre les différents ordinateurs, à commencer par les couches les plus basses
(micro-code, langage machine, instructions reconnues par le processeur). Il
existe pourtant de nombreux outils de traduction ou d’adaptation ; nous allons
en détailler quelques-uns.
C
ULTURE
Haut niveau et bas niveau
Il ne s’agit nullement de jugements de valeur, mais d’une gradua-
tion sur une échelle virtuelle s’appuyant sur les niveaux de fonc-
tionnement du processeur et du langage machine pour « monter »
couche par couche jusqu’à l’interface avec l’humain, utilisateur ou
programmeur.
Le « haut niveau » est caractérisé par un vocabulaire riche et étendu,
proposant des termes pour une grande variété de concepts couram-
ment manipulés par les humains. C’est plutôt une description fonc-
tionnelle des choses. Chacun des ordres de son « catalogue » se
décompose au niveau électronique en de multiples opérations élé-
mentaires. Voici un exemple d’ordre de haut niveau dans la vie
courante : « Viens me chercher à la gare à 11 heures ».
Le « bas niveau » est caractérisé par un vocabulaire limité, très
organique et peu conceptualisé, et décompose chaque action évo-
luée en une longue séquence d’ordres élémentaires.
C’est de cette manière que fonctionnent les puces électroniques et
circuits électriques. Si l’on devait tenter de traduire en instructions
de bas niveau l’ordre donné précédemment en exemple, on pour-
rait décomposer à l’envi, comme suit : « Alarme à 10h30. Ouvrir la
portière de la voiture. S’asseoir sur le siège conducteur. Boucler la
ceinture de sécurité. Insérer la clé de contact. Tourner la clé de con-
tact. (…) Avancer de 100 mètres. Si le feu est vert, passer et
tourner à droite. Si en revanche il est rouge, s’arrêter. En cas d’obs-
truction ou de déviation… ». Ces instructions semblent toutes évi-
dentes à tout être humain ayant déjà conduit en ville, mais il faut
les programmer si l’on souhaite qu’une machine s’en acquitte.
B
http://fr.wikipedia.org/wiki/
Histoire_de_l%27informatique
C – Émulation et interopérabilité
© Groupe Eyrolles, 2005 3
Émulation au niveau processeur
Le processeur est la puce électronique qui joue le rôle de « cerveau » de l’ordina-
teur – il est plus exact de dire que cest sa « centrale de calcul », puisque la
mémoire et toute autre forme d’« intelligence » d’un ordinateur sont situées
dans d’autres composants, respectivement la RAM et les programmes saisis par
des hommes.
Il lit successivement les instructions de son « segment de code » (zone de
mémoire contenant le code) et applique les ordres qu’il y trouve sur son
« segment de données » (zone de mémoire contenant les données). Il n’est
capable que d’opérations très simples et limitées en nombre, comme de lire un
nombre en mémoire, d’écrire un nombre en mémoire, d’effectuer des opérations
arithmétiques simples sur les nombres stockés dans ses registres (sa propre
petite mémoire de transit), etc.
Langage d’assemblage
On utilise un « assembleur » pour programmer un processeur en langage
d’assemblage – on en montre un exemple au chapitre 18, « Ce qu’est vraiment le
logiciel libre ». C’est une programmation très rébarbative et difficile à relire et
maintenir, qui est de moins en moins connue et pratiquée. Deux processeurs
incompatibles ne parlant pas le même langage, un programme écrit pour l’un
sera inutilisable sur l’autre.
C
ULTURE
RISC et CISC
Même si les plus répandus au niveau grand public sont les processeurs compatibles Intel
de type x86 (386, 486, Pentium, etc.), il existe de nombreuses familles de processeurs –
les Macintosh d’Apple par exemple, utilisent depuis longtemps des processeurs qui par-
lent un langage différent (mais ils passeront eux aussi sous compatibles x86 sous peu).
On peut classer ces familles en deux super-familles, chacune ayant choisi une option diffé-
rente. Les
Reduced Instruction Set Computers
(RISC) ont opté pour des processeurs au
vocabulaire plus restreint, ce qui facilite évidemment leur conception au niveau des circuits
imprimés. On les trouve par exemple dans les Sun (Sparc 32 et 64), ordinateurs plutôt
réservés à un usage professionnel de type serveurs sous Unix. Les « Complex Instruction
Set Computer » (CISC), plus répandus dans le grand public (bien que plus complexes à con-
cevoir et à réaliser), ont fait le choix inverse. C’est le cas des processeurs de la famille Intel.
En CISC, on trouve l’architecture x86/IA32 (constructeurs : Intel, AMD, VIA). En RISC, on
trouve les architectures ARM (Intel XScale), MIPS (différents fondeurs), PowerPC (IBM par
exemple ; cette famille comprend ce que la société Apple appelle G3, G4, et G5), VLIW
(dont IA64).
PowerPC, à l’origine un développement conjoint d’IBM et de Motorola, est une variante
de l’architecture « Power » définie par IBM, laquelle compte au moins 4 générations.
Cette liste n’est pas exhaustive. Signalons le cas particulier de la société ARM, qui définit
une architecture sans fondre de processeurs. Elle vend le droit de produire des processeurs
de type ARM à des sociétés annexes comme Intel.
V
OCABULAIRE
Architecture
L’architecture d’un ordinateur est le modèle de son
processeur et différents autres choix électroniques
faits au niveau de la carte mère.
A
VANCÉ
RISC et CISC : comparaison
Il est difficile de comparer ces deux approches de
l’architecture processeur et ces deux familles ont
leurs avantages et leurs inconvénients.
Ce que l’on gagne en simplification du processeur
dans le RISC et donc, théoriquement, en vitesse,
on le perd en compacité du code produit, donc en
efficacité d’utilisation du cache, et donc… en
vitesse. On y perd aussi en efficacité du code,
chaque cycle du processeur pouvant traiter moins
de fonctionnalités.
Tout ne semble pas toujours logique : les RISC ont
de nos jours une fréquence d’horloge moins élevée
que celle des CISC et consomment plus d’énergie –
cela traduit sans doute les moyens investis dans la
recherche et le développement.
Accès libre – Débuter sous GNU/Linux
© Groupe Eyrolles, 2005
4
Dans la même famille, les processeurs proposent souvent une « compatibilité »
ascendante : ainsi, un Pentium (586) comprendra tout le jeu d’instructions d’un
386, qu’il suit de plusieurs années, mais proposera de nouvelles instructions.
C’est pourquoi un programme écrit en langage d’assemblage pour Pentium ne
fonctionnera pas sur 386.
Langages compilés
Plusieurs approches ont été menées pour résoudre ou contourner ces incompatibi-
lités au niveau du processeur. La première est la mise en place de langages de pro-
grammation de plus haut niveau, utilisant un « compilateur » pour transformer
(compiler) ce code source en langage dassemblage. Ainsi, un même code source
peut être réutilisé et recompilé sur différentes architectures, le compilateur se
chargeant de l’adaptation au langage d’assemblage spécifique de l’architecture.
L’inconvénient, évidemment, est que malgré les progrès et les efforts investis dans
le développement des compilateurs, ces codes ainsi générés automatiquement
sont moins efficaces qu’un code écrit directement en langage d’assemblage par un
bon spécialiste, car le compilateur ne comprend pas ce qu’il fait – il est rare qu’un
logiciel ou un compilateur « comprenne » quoi que ce soit à ce qu’il manipule.
L’ordinateur ne procède donc pas à toutes les optimisations possibles. Citons
quelques exemples de langages compilés : Fortran, Pascal, C, C++.
Langages interprétés
La puissance sans cesse croissante des ordinateurs a permis le développement de
langages « interprétés ». Ils n’existent sur le disque que sous forme de fichiers de
code source et c’est un « interpréteur » qui se charge de les comprendre et simule
un ordinateur virtuel, dont le langage machine serait directement les expressions
écrites par le programmeur. On peut ainsi reprendre un fichier sur un autre sys-
tème, sans devoir le recompiler, ni même disposer d’un compilateur. Évidem-
ment, ceci est plus lent à l’exécution que le résultat d’une compilation. C’est à
C
ULTURE
Les différences du Pentium
Signalons qu’il est possible de compiler un programme en profitant des apports du Pen-
tium, ce qui permet un fonctionnement plus rapide, mais interdit l’utilisation du binaire
produit sur des processeurs antérieurs. C’est l’une des manières dont MandrakeSoft
(désormais Mandriva) s’est distinguée de Red Hat à la fin des années 1990 : elle proposait
des distributions GNU/Linux optimisées pour Pentium.
L
UMIÈRE
SUR
W
IKIPÉDIA
Les langages de programmation C et C++
Langage inventé pour écrire Unix, il y est encore utilisé pour la plupart des utilitaires tech-
niques ou programmes nécessitant de bonnes performances à l’exécution. Le langage
C++ en est une extension objet. Le langage C est technique et complexe à maîtriser, ce
qui le rend peu indiqué aux débutants en programmation.
B
http://fr.wikipedia.org/wiki/C_(langage)
B
http://fr.wikipedia.org/wiki/C%EF%BC%8B%EF%BC%8B
G
AGNER
DU
TEMPS
Compilateurs efficaces
Les compilateurs n’ont cessé de progresser et la
plupart opèrent désormais des optimisations très
efficaces, auxquelles les programmeurs n’auraient
pas forcément pensé seuls. D’autre part, l’avan-
tage principal d’écrire un programme dans un lan-
gage d’assez haut niveau (par opposition au
langage d’assemblage), c’est la portabilité (ré-uti-
lisation sur d’autres architectures) et le gain de
temps (il est plus rapide et facile à un humain de
parler un langage plus proche du langage naturel).
C
ELA
SE
COMPLIQUE
Troisième famille
Des langages récents ont un pied dans chaque
monde et on peut dire qu’ils sont compilés pour
une machine virtuelle. Exemples : JAVA, OCaml
(version bytecode), Python compilé, C#, et parfois
Emacs.isp.
C – Émulation et interopérabilité
© Groupe Eyrolles, 2005 5
réserver aux applications n’ayant pas de gros besoins en puissance de calcul. Voici
quelques exemples de langages interprétés : BASIC, Korn Shell, Perl.
Exemple
Le premier programme appris dans un nouveau langage de programmation se
contente souvent d’afficher la chaîne « Hello world ! » (bonjour le monde !).
En langage C, compilé, le cœur du programme serait printf("Hello
world!\n"); – nous passons sous silence les en-têtes techniques. Un compila-
teur (par exemple GCC) est nécessaire et transforme ce code source en fichier
binaire directement exécutable par le processeur.
En Bourne Shell, langage interprété, le cœur du programme a l’allure echo
Hello world! mais le programme /bin/sh est nécessaire à son exécution.
Traduction à la volée du langage d’assemblage
Souvent, on ne dispose pas du code source pour espérer recompiler une applica-
tion sur une nouvelle architecture cible. C’est en particulier le cas pour les logi-
ciels propriétaires classiquement trouvés dans le commerce, mais aussi pour les
solutions fournies par des prestataires de services qui disparaissent de la vie éco-
nomique sans avoir fourni les codes sources à leurs clients.
L
UMIÈRE
SUR
W
IKIPÉDIA
Le langage de programmation Java
Ce langage de programmation récent s’est rapidement répandu, entre autres sur le Web.
Il présente l’avantage de pouvoir être compilé dans un format binaire pour machine vir-
tuelle indépendante du véritable ordinateur où se déroule l’exécution (évidemment, au
prix d’une baisse des performances). Il est orienté objet et dispose de riches bibliothèques
de programmation. Déplorons sa prise en charge incomplète dans le cadre du logiciel
libre : les projets libres ne sont pas encore entièrement compatibles avec la norme ni aussi
performants que les versions propriétaires du langage, à cause de la politique de son créa-
teur. Lisez cet article pour tout savoir sur ce langage à la mode !
B
http://fr.wikipedia.org/wiki/Java_(langage)
E
XEMPLES
Émulateurs de plate-forme compatible PC
C’est le cas de figure le plus fréquent, notamment pour exécuter des applications Win-
dows sous système GNU/Linux ou inversement. Pour cela, il faudra sans doute commencer
par « installer » Windows dans l’ordinateur virtuel, à l’aide d’un CD-Rom d’installation
classique, en suivant la méthode habituelle, ce qui ne manquera pas de surprendre la pre-
mière fois puisque tout s’affichera dans une fenêtre à l’écran. Citons notamment Bochs,
QEMU (logiciels libres) et VMware (logiciel propriétaire) :
B
http://bellard.org/qemu/
B
http://bochs.sourceforge.net/
B
http://www.vmware.com/
Des ordinateurs puissants
La « loi de Moore » a très tôt prévu une améliora-
tion exponentielle des complexités des semi-con-
ducteurs d’entrée de gamme et cette prédiction
séduisante fut reprise et détournée dans bien
d’autres domaines, y compris où elle n’avait pas
grand sens.
Empiriquement, on constate depuis plusieurs
années que les divers paramètres des ordinateurs,
notamment la puissance de calcul, doublent tous
les dix-huit mois. Cependant, il est probable qu’on
atteigne bientôt des limites physiques dues à la
finitude de la vitesse de la lumière et à la structure
atomique de la matière.
B
http://fr.wikipedia.org/wiki/Loi_de_moore
1 / 10 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !