|
Comment fonctionne un programme sous Windows?
Dans ce premier texte, je vais tenter d'expliquer aussi simplement que
possible le fonctionnement des applications qui tournent sous Windows. J'ai
choisi Windows parce que plus utilisé, mais cette démarche reste tout aussi
valable pour d'autres gestionnaires de fenêtres comme Mac OS ou OS2.
Ensemble, nous allons disséquer différents aspects des programmes et tenter
de comprendre comment ils interagissent avec le gestionnaire de fenêtres.
Que les pros de l'informatique passent leur chemin, cet article s'adresse
avant tout aux débutants.
La forme de programmation la plus connue et la plus évidente est la forme
séquentielle, qui consiste à placer des instructions à la suite les unes des
autres afin que le processeur les traite dans l'ordre. On pourrait imaginer
par exemple un programme très simple qui afficherait « Bonjour » à l'écran
et qui serait constitué des instructions « écrire 'B' », « écrire 'o' »,
écrire 'n' » et ainsi de suite. La programmation est enrichie par des
instructions qui permettent de se placer à un autre endroit de la séquence
ainsi que d'instructions conditionnelles, l'ensemble permet notamment de
faire des boucles. Imaginons un autre programme qui aurait pour but d'écrire
les nombres allant de 1 à 10, on pourrait bien entendu reprendre le même
système que précédemment « écrire '1' », « écrire '2' » et ainsi de suite
mais cela ne serait pas très pratique. Grâce aux boucles il est possible d'
écrire « la variable i vaut 1, tant que i est inférieure à 11 écris i et
augmente i de 1 » ce qui aura le même effet.
Voilà qui permet d'expliquer les programmes les plus simples, pour les plus
complexes il s'agit en fait de répétitions et d'imbrications de ces
structures, une boucle peut contenir des branchements conditionnels, des
autres boucles et ainsi de suite. Mais avec ces quelques indications il
paraît encore difficile d'expliquer comment il est possible de faire tourner
une dizaine de programmes en même temps sur votre machine, en particulier si
elle ne possède qu'un seul processeur. Dans un ordinateur, qu'il comporte un
ou plusieurs processeurs, chaque processeur exécute sa propre séquence d'
instructions. Il peut donc y avoir autant de programmes exécutés au même
moment que de processeurs. Pourtant de notre point de vue, notre PC
monoprocesseur exécute souvent plusieurs programmes à la fois. Sur une
machine puissante on peut sans problème lancer Excel, Word, Outlook et l'
Internet explorer, ou d'autres programmes qui fonctionneront en même temps.
Sans compter le système d'exploitation lui-même, qui continue d'effectuer
ses petits travaux (gestion de la mémoire, connexion Internet, affichage,
etc..). C'est justement le système d'exploitation qui gère notre problème
grâce à ce que l'on appelle le « multitâche ». Il s'agit du partage du
processeur entre les différents programmes. Le système d'exploitation permet
à un programme d'utiliser le processeur pendant un certain temps, après quoi
il permet à un autre programme de continuer et ainsi de suite. Comme ce
temps est largement inférieur à la seconde, il nous semble que tous les
programmes soient exécutés simultanément.
Nous comprenons maintenant le principe de base de la programmation et
pourquoi plusieurs programmes peuvent sembler être exécutés au même moment.
Il reste cependant un problème, comment un programme sait il que je viens de
cliquer dans sa fenêtre, et comment Word sait il que la touche que je viens
de presser devait lui parvenir et pas à Outlook ou à Excel ? La réponse est
simple, c'est Windows qui les prévient. Windows gère la souris, le clavier
et tous les périphériques en général. Lorsque l'on clique, Windows regarde
si la souris est dans la zone fenêtrée d'un programme et le prévient le cas
échéant. Le programme reçoit le message de Windows, qui lui dit « l'
utilisateur à cliqué à tel endroit » et réagit en fonction de cela. Ce n'est
plus de la programmation séquentielle classique mais ce qu'on appelle de la
programmation événementielle. Chaque événement (click de souris, touche du
clavier, agrandissement et fermeture d'une fenêtre, etc..) est analysé par
Windows et peut donner lieu à un ou plusieurs messages auquel le ou les
programmes concernés réagiront. Les programmes sont en fait constitués d'une
grande boucle d'analyse de message du type « si c'est un clic je fais ça, si
c'est une touche je fais ça, etc. ».
Une autre caractéristique des programmes qui tournent sous Windows est qu'
ils se ressemblent très fort. Par exemple la boite de dialogue qui permet de
charger ou sauver un document est presque toujours identique quelque soit le
programme. Ce n'est pas un hasard, en fait Windows permet de faire appel a
ce genre de dialogue au travers des « DLL » systèmes (DLL pour dynamic link
library, ou bibliothèque à liaison dynamique, en gros ce sont des
collections de fonctions que les programmes peuvent réutiliser sans qu'elles
fassent partie de leur code). Windows permet aussi l'utilisation de divers
périphériques, notamment au travers de DirectX pour les cartes graphiques et
sonores, ce qui permet de programmer sans se soucier de la configuration
matérielle de l'utilisateur. Même si la carte graphique est différente, le
programme s'exécutera de la même façon (excepté du point de vue des
performance qui dépends de la qualité de la carte en question).
En résumé, on peut donc considérer une application Windows comme un
programme événementiel exécuté dans un environnement multitâche qui propose
une interface simplifiée vers les périphériques.
Pour tout commentaire, Benoit Fries
© Ben (Benoit Fries) 2000.
|