Vous êtes sur la page 1sur 58

Systèmes Informatiques

L2MI

Année académique 2010-2011

1
Sommaire
Informatique .............................................................................................................................................6

Évolution du sens ...............................................................................................................................6

Histoire ................................................................................................................................................6

Les origines ....................................................................................................................................6

La mécanographie ..........................................................................................................................7

L'informatique moderne ................................................................................................................7

La science informatique .....................................................................................................................8

Les systèmes d’exploitation ......................................................................................................................9

Typologie ............................................................................................................................................9

Histoire ............................................................................................................................................ 10

1960, la multiprogrammation .................................................................................................... 10

1972, Les micro-ordinateurs........................................................................................................ 11

1990, les systèmes d'exploitation sous licence libre .................................................................. 12

Composition .................................................................................................................................... 12

Interface de programmation ...................................................................................................... 13

L'ordonnanceur .......................................................................................................................... 13

Processus et communication interprocessus .............................................................................. 13

Les interruptions ......................................................................................................................... 14

Les ressources ............................................................................................................................. 15

La mémoire virtuelle .................................................................................................................. 15

Pilotes ......................................................................................................................................... 16

Système de fichiers ..................................................................................................................... 16

Contrôle d'accès ..........................................................................................................................17

Interface utilisateur .....................................................................................................................17

L'interface utilisateur graphique ..................................................................................................17

Logiciels utilitaires ............................................................................................................................ 18

Architecture ...................................................................................................................................... 18

2
Le noyau ..................................................................................................................................... 19

.................................................................................................................................................... 21

Programmation informatique................................................................................................................ 22

Une brève histoire de la programmation ......................................................................................... 22

Phases de création d'un programme................................................................................................ 22

Conception .................................................................................................................................. 22

Codage......................................................................................................................................... 23

Transformation du code source .................................................................................................. 23

Test du programme .................................................................................................................... 24

Langage de programmation .................................................................................................................. 25

Généralités ....................................................................................................................................... 25

Langage ....................................................................................................................................... 25

Programmation ........................................................................................................................... 25

Historique .........................................................................................................................................26

Particularités .....................................................................................................................................26

Typage ..........................................................................................................................................26

Syntaxe ........................................................................................................................................27

Stratégie d'évaluation ................................................................................................................. 28

Gestion de la mémoire ................................................................................................................ 28

Réflexivité ................................................................................................................................... 28

Exceptions ................................................................................................................................... 29

Concurrence ................................................................................................................................ 29

Principaux paradigmes .................................................................................................................... 29

Langages impératifs et procéduraux ........................................................................................... 30

Langages déclaratifs ................................................................................................................... 30

Langages à pile ........................................................................................................................... 30

Langages à objets ....................................................................................................................... 31

Utilisations ....................................................................................................................................... 31

3
Langages de définition de données ............................................................................................ 31

Langages de requête .................................................................................................................. 31

Langages pour pages Web dynamiques ..................................................................................... 31

Langages de programmation théorique ...................................................................................... 32

Langages spécialisés .................................................................................................................... 32

Paradigme de programmation............................................................................................................... 34

Utilisation ......................................................................................................................................... 34

Exemples........................................................................................................................................... 34

Internet ...................................................................................................................................................37

Terminologie ......................................................................................................................................37

Historique ..........................................................................................................................................37

Gouvernance .................................................................................................................................... 39

Technique ......................................................................................................................................... 39

Connexions grand public ............................................................................................................. 40

Protocoles.................................................................................................................................... 40

Caractéristiques générales de Windows ............................................................................................... 42

Un petit rappel ................................................................................................................................. 42

La base de registre............................................................................................................................ 42

Une réinstallation de Windows ........................................................................................................ 42

Outils de base ................................................................................................................................... 43

Multi-utilisateur ............................................................................................................................... 43

Microsoft Management Console ...................................................................................................... 44

Les partitions .................................................................................................................................... 44

Windows XP: Présentation .................................................................................................................... 45

Différence Windows XP Home et Pro............................................................................................... 46

Configuration minimale .................................................................................................................... 46

Services Pack .................................................................................................................................... 46

Au niveau dépannage ........................................................................................................................47

4
Systèmes de fichiers sous Windows ...................................................................................................... 48

La FAT ................................................................................................................................................ 48

NTFS.................................................................................................................................................. 49

Créer les partitions ........................................................................................................................... 49

Quel type de partition choisir?......................................................................................................... 50

Mise en réseaux Windows .....................................................................................................................52

Types de réseaux sous Windows .......................................................................................................52

Groupes de travail .............................................................................................................................53

Nom de domaine ...............................................................................................................................53

Les applications réseaux ................................................................................................................... 54

La base de registre ................................................................................................................................. 56

Outils base de registres .................................................................................................................... 56

Classes de la base de registre ........................................................................................................... 56

Types de données du registre............................................................................................................57

Sauvegarde et restauration de la base de registre ........................................................................... 58

Autres outils ..................................................................................................................................... 58

5
Informatique
L´informatique - contraction d´information et automatique - est le domaine d'activité scientifique,
technique et industriel en rapport avec le traitement automatique de l'information par des machines
telles que les ordinateurs, les consoles de jeux, les robots, etc.
Le terme « informatique » désigne à l'origine l´informatique théorique : un ensemble de sciences
formelles qui ont pour objet l'étude de la notion d'information et des procédés de traitement
automatique de celle-ci. En font partie, par exemple, l'algorithmique, le traitement du signal, la
calculabilité et la théorie de l'information.
Apparu dans les années 1950, le secteur d'activité des technologies de l'information et de la
communication est lié à la fois à l'informatique, l'électronique et la télécommunication. Les activités
sont la production de matériel informatique - machines et pièces détachées, et de logiciels - procédés
de traitement - qui sont destinés à l'acquisition, au stockage, à la transformation, la transmission et la
restitution automatique d'informations. Le secteur fournit également de nombreux services liés à
l'utilisation de ses produits : enseignement, assistance, surveillance et entretien.

Évolution du sens
Le sens du mot informatique, qui désigne initialement la science du calculateur (en anglais computer
science) a évolué vers un sens populaire beaucoup plus large qui inclut de nombreuses activités en
rapport avec les techniques de l'information.
Pour éviter toute confusion, les milieux académiques utilisent les termes science informatique,
informatique fondamentale ou informatique théorique pour désigner la science du calculateur. Tandis
que les milieux économiques utilisent le terme technologies de l'information ou technologies de
l'information et de la communication pour désigner le secteur industriel.

Histoire
Les origines
Depuis des millénaires, l'Homme a créé et utilisé des outils l'aidant à calculer (abaque, boulier...).
Parmi les algorithmes les plus anciens, on compte des tables datant de l'époque d'Hammurabi
(environ -1750). Les premières machines mécaniques apparaissent entre le XVIIe et le XVIIIe siècle.
La première machine à calculer mécanique réalisant les quatre opérations aurait été celle de Wilhelm
Schickard au XVIe siècle, mise au point notamment pour aider Kepler à établir les Tables rudolphines
d'astronomie.
En 1642, Blaise Pascal réalisa également une machine à calculer mécanique qui fut pour sa part
commercialisée.
La découverte tardive de la machine d'Anticythère montre que les Grecs de l'Antiquité eux-mêmes
avaient commencé à réaliser des mécanismes de calcul.
Cependant, il faudra attendre la définition du concept de programmation (illustrée en premier par
Joseph Marie Jacquard avec ses métiers à tisser à cartes perforées, suivi de Boole et Ada Lovelace
pour ce qui est d'une théorie de la programmation des opérations mathématiques) pour disposer d'une
base permettant d'enchaîner des opérations élémentaires de manière automatique.

6
La mécanographie
Une autre phase importante fut celle de la mécanographie, avec l'apparition des machines
électromécaniques alimentées par cartes perforées de l'Américain Herman Hollerith, qui savaient tout
faire sauf de la comptabilité en grandes entreprises, et les machines comptables à doubles entrées,
inventées par Hollerith à la fin du XIXe siècle. Les trieuses et les tabulatrices furent utilisées à grande
échelle pour la première fois par les Américains lors du recensement de 1890 aux États-Unis, suite à
l'afflux des immigrants dans ce pays dans la seconde moitié du XIXe siècle.
La première entreprise européenne qui a développé et commercialisé des équipements
mécanographiques a été créée par l'ingénieur norvégien Fredrik Rosing Bull dans les années 1930.
Les Allemands étaient équipés de machines mécanographiques déjà avant la Seconde Guerre
mondiale. Ces équipements étaient installés par ateliers composés de trieuses, interclasseuses,
perforatrices, tabulatrices et calculatrices connectées à des perforateurs de cartes. Les traitements
étaient exécutés à partir de techniques électromécaniques utilisant aussi des lampes radio comme les
triodes. La chaleur dégagée par ces lampes attirait les insectes, et les bugs (terme anglais pour
insectes, parfois francisé en bogue) étaient une cause de panne courante. Ce n'est que suite à
l'invention du transistor en 1947 et son industrialisation dans les années 1960, que les appareils
informatiques ont pris leur forme finale, celle qu'ils ont encore aujourd'hui.

L'informatique moderne
L'ère de l'informatique moderne commença durant la Seconde Guerre mondiale, avec l'invention du
transistor, puis du circuit intégré quelques années plus tard. L'utilisation de ces composants
électroniques à la place des relais électromécaniques et de tubes à vide ont permis de rendre les
appareils à la fois plus petits, plus complexes, plus économiques et plus fiables.
Au même moment, le mathématicien Alan Turing théorise le premier ce qu'est un ordinateur, avec son
concept de machine universelle de Turing.
Le domaine de l'informatique est donc un domaine récent, basé sur des sciences originaires de
l'Antiquité (la cryptographie) et des expériences menées au XVIIe siècle, comme par exemple la
machine à calculer de Blaise Pascal. Ce n'est qu'à la fin de la Seconde Guerre Mondiale que
l'informatique a été reconnue comme un domaine scientifique et technologique à part entière.
La miniaturisation des composants et la réduction des coûts de production, associées à un besoin de
plus en plus pressant de traitement des informations de toutes sortes (scientifiques, financières,
commerciales, etc.) a entraîné une diffusion de l'informatique dans toutes les couches de l'économie
comme de la vie de tous les jours.
On peut découper l'histoire informatique moderne en 3 époques :
 L'ère primaire des dinosaures de l'informatique et des OS : les années 50-60-70 des
ordinateurs centraux.
 L'ère secondaire : la vague des ordinateurs personnels, la folle époque du PC des années
80-90.
 L'ère tertiaire, ou l'ère Internet depuis 1995 environ, l'année de la prise de conscience de
l'importance d'Internet par les fournisseurs d'informatique. C'est aussi l'époque de l'intégration
de tous les ordinateurs dans des réseaux locaux, puis des réseaux étendus sur la planète.

7
C'est également le découpage des architectures reines de ces périodes :
 architecture centralisées (maître esclave)
 architecture client serveur
 architecture Internet
Cette chronologie des systèmes d’exploitation (SE ou OS) est plus particulièrement axée sur les PC et
les produits Microsoft. Quelques repères permettent de se souvenir du marché micro-informatique de
l'époque.
Les systèmes d’exploitation que nous connaissons trouvent leurs origines dans les années 70 du
XXième siècle.
En comparaison au temps passé depuis l'origine des hommes, ce XXième siècle nous a fourni le plus
d'inventions et de transformations. Einstein déposant son mémoire sur la relativité, Blériot traversant
la Manche, les premières voitures apparaissent ... puis la presse, la radio, le cinéma, le téléphone, la
TV vont établir et accélérer des nouveaux modes de communications. En 1971, les premiers
microprocesseurs voient le jour et deviennent le noble composant de la micro-informatique.
Des études en psychologie cognitive et en ergonomie réalisées dans les années 1970 par Xerox sont à
l'origine de l'usage des interfaces homme-machine graphique en vue de simplifier l'utilisation des
outils informatiques.
La démocratisation de l'utilisation d'Internet depuis 1995, a amené les outils informatiques à être de
plus en plus utilisés comme moyen de télécommunication, à la place des outils tels que la poste ou le
téléphone.

La science informatique
La science informatique est une science formelle, son objet d'étude est le calcul, calcul au sens large,
c'est-à-dire non limité exclusivement à la manipulation des nombres, mais de tout type d'information
formelle que l'on peut traiter de manière systématique tel que : textes, couleurs, données, valeurs
logiques. Selon les contextes, on parle d'un calcul, d'un algorithme, d'un programme, d'une procédure,
etc.
Un terme qui semble émerger pour se référer à la « science de l'informatique » est « Technologies de
l'Information et de la Communication » (TIC). Ce terme apparaît en effet plus proche du terme
anglais Computer Sciences.

8
Les systèmes d’exploitation

Le système d'exploitation, abrégé SE (en anglais operating system, abrégé OS), est l'ensemble de
programmes central d'un appareil informatique qui se place à l'interface entre le matériel et les
logiciels applicatifs.
Intermédiaire entre les logiciels applicatifs et le matériel, le système d'exploitation sert trois intentions
distinctes : le système d'exploitation prend en charge la programmation des périphériques matériels, il
en coordonne et optimise l'utilisation ; Il propose aux logiciels applicatifs des interfaces de
programmation standardisées qui simplifient l'utilisation des matériels et réalise enfin différentes
fonctions visant à assurer la fiabilité (tolérance aux pannes, isolation des fautes) et la sécurité
informatique qui se décline notamment en traçabilité (par le biais de mécanismes
d'identification/authentification), confidentialité, intégrité et disponibilité.
Un système d'exploitation peut servir à coordonner l'utilisation du ou des processeur(s), et accorder
un certain temps pour l'exécution de chaque processus ; à réserver de l'espace dans les mémoires pour
les besoins des programmes et à organiser le contenu des disques durs ou d'autres mémoires de masse
en fichiers et répertoires. Il peut aussi servir à créer l'image numérique qui contiendra les interfaces
homme-machine des différents programmes et à l'envoyer au moniteur ainsi qu'à recevoir les
manipulations effectuées par l'utilisateur via le clavier, la souris ou d'autres périphériques, et les
transmettre aux différents programmes.
Les systèmes d'exploitation sont souvent vendus avec les appareils informatiques. Divers logiciels
utilitaires sont fournis avec le système d'exploitation. Ils permettent à l'utilisateur de régler des
paramètres de configuration du système d'exploitation, ou d'effectuer des opérations basiques de
manipulation des fichiers.
Les premiers systèmes d'exploitation ont été créés dans les années 1960. En 2010 les deux familles de
systèmes d'exploitation les plus populaires sont Unix (dont Mac OS X et Linux) et Windows, la
famille Windows détient le quasi-monopole sur les ordinateurs personnels, avec plus de 90 % de part
de marché depuis 15 ans, tandis que les parts de marché des systèmes d'exploitation Unix sont de
presque 50% sur les serveurs.

Typologie
Un système d'exploitation est conçu pour fonctionner avec une gamme particulière de machines (type
de processeur, constructeur, architecture). Si un système d'exploitation est disponible pour plusieurs
gammes machines différentes, alors le même code source est compilé et adapté à chaque gamme de
machine. La liste exacte des machines sur lesquelles il peut être utilisé dépend aussi de la palette de
pilotes inclus dans le système d'exploitation.
Selon sa construction, un système d'exploitation peut être multitâches ou alors mono-tâche,
multiutilisateurs ou alors mono-utilisateur, il peut aussi être multiprocesseurs et/ou en temps réel.
• Un système d'exploitation est dit multitâche quand il permet l'exécution simultanée de plusieurs
programmes. Les premiers systèmes d'exploitation multitâches sont apparus dans les années 1960, et
tous les systèmes d'exploitation contemporains sont multitâches.

9
• Il est dit multiutilisateur quand il est conçu pour être utilisé simultanément par plusieurs usagers,
souvent à travers un réseau informatique. De tels systèmes d'exploitation sont typiquement utilisés pour
des serveurs ainsi que des mainframes ou des superordinateurs. Ils sont multitâches et en général
sécurisés, c'est-à-dire qu’ils vont refuser d'exécuter toute opération pour laquelle l'usager n'a pas
préalablement reçu une permission.
• Il est dit multiprocesseur quand il est conçu pour exploiter un ordinateur équipé de plusieurs
processeurs. Dans de tels systèmes d'exploitation, plusieurs programmes sont exécutés simultanément
par les différents processeurs.
• Il est dit temps réel quand il garantit que les opérations seront effectuées en respectant des délais
très stricts, et ce quelles que soient les conditions d'utilisation. De tels systèmes d'exploitation sont
utilisés dans l'industrie, l'aéronautique ou l'électronique grand public pour créer des systèmes temps
réel.
Par exemple OS/2 est un système d'exploitation multitâche et mono utilisateur pour les ordinateurs
personnels à l'architecture compatible PC, alors que Solaris est un système d'exploitation multitâche,
multiutilisateur et multiprocesseur pour les stations de travail, les serveurs et les superordinateurs
construits par Sun Microsystems.

Histoire
Dans les années 1940 les ordinateurs étaient programmés par manipulation d'interrupteurs à bascule,
puis plus tard en perçant des trous dans des cartes et en introduisant une pile de cartes perforées dans
un lecteur dont la mécanique était similaire à celles des pianos mécaniques - technique appelée
mécanographie (voir plus haut).
Les ordinateurs des années 1940 à 1960, très coûteux, étaient la propriété des entreprises et des
institutions. Chaque utilisateur avait le droit d'utiliser l'ordinateur pendant un temps limité. Ce temps
était souvent déterminé par une horloge murale ou une pointeuse, et l'utilisateur avait alors à
disposition la totalité du matériel de l'ordinateur. Il apportait avec lui une pile de cartes perforées qui
contenait les instructions du ou des programmes à exécuter.
Les ordinateurs de cette époque effectuaient une seule tâche à la fois, au service d'un seul utilisateur.
Les programmes pour ces ordinateurs contenaient toutes les instructions nécessaires pour manipuler
le matériel de l'ordinateur. Si la logithèque pour cet ordinateur comportait cinquante programmes, les
instructions nécessaires pour manipuler le matériel se retrouvaient dans chacun de ces cinquante
programmes.
Avec l'agrandissement de la logithèque, l'idée est venue d'isoler les instructions routinières dans un
programme séparé. Un programme qui résiderait continuellement dans la mémoire, quel que soit le
programme en cours d'exécution. Ce programme était un système d'exploitation, sous sa forme la plus
rudimentaire.

1960, la multiprogrammation
Les ordinateurs des années 1960 étaient en général équipés d'un lecteur de carte perforée, d'une
imprimante et d'un disque dur. Les ingénieurs ont constaté que les ordinateurs passaient plus de temps
à attendre qu'un périphérique termine son travail qu'à exécuter des instructions.
Les systèmes d'exploitation ont alors été conçus de manière à permettre l'exécution de plusieurs
programmes à la fois. D'abord, les programmes étaient chargés en mémoire pour y résider
simultanément. Le premier programme était exécuté, puis, lorsqu'il avait besoin d'attendre qu'un
10
périphérique se libère, le système d'exploitation enchaînait sur l'exécution du deuxième programme,
puis le troisième et ainsi de suite. Cette technique, dite de multiprogrammation, est le précurseur du
multi-tâche des systèmes d'exploitation d'aujourd'hui, proche du multitâche coopératif qui a été utilisé
jusque dans les années 1990.
En 1965 le Massachusetts Institute of Technology se lance dans la création du premier système
d'exploitation multitâche et multiutilisateur : Multics (pour MULTiplexed Information and Computing
Service ou service multiplexé d'information et de calcul). Sur le principe de la multiprogrammation,
le système d'exploitation autorisait le chargement de plusieurs programmes en mémoire et gérait le
passage de l'un à l'autre, mais cette fois-ci sans attendre le blocage d'un programme. Chaque
programme était exécuté pendant une durée de quelques millisecondes, puis le système passait au
suivant. Ce temps, très court, donnait l'illusion que les programmes s'exécutaient simultanément - une
illusion qui existe encore avec les systèmes d'exploitation contemporains.
De plus, ces programmes pouvaient appartenir à des utilisateurs distincts, chacun ayant l'impression
que la machine travaille uniquement pour lui. La possibilité pour un ordinateur de servir
simultanément plusieurs personnes augmentait le retour sur investissement de l'achat de matériel très
coûteux par les entreprises et les institutions. Mais, écrit en langage de programmation PL/1 et trop
complexe pour les ordinateurs de l'époque, Multics fût un échec commercial. Il a cependant inspiré en
grande partie la gamme de systèmes GCOS développés conjointement par Honeywell et Bull.
En 1969, les ingénieurs Ken Thompson et Dennis Ritchie des laboratoires Bell rêvent d'utiliser le
système d'exploitation Multics, mais le matériel pour le faire fonctionner est tout simplement hors de
prix. Thompson se lance dans l'écriture d'une version allégée de Multics pour un PDP-7 inutilisé. Le
système, fonctionnel, est surnommé Unics (pour UNiplexed Information and Computing Service),
puis finalement baptisé UNIX. Rapidement reprogrammé dans un langage de programmation plus
approprié (le C, développé par Ritchie pour l'occasion), UNIX se révèle particulièrement simple à
porter sur de nouvelles plateformes, ce qui assure son succès.

1972, Les micro-ordinateurs


Sorti en 1972, le Micral de la société R2E est le premier micro-ordinateur du monde. il est équipé
d'un processeur Intel 8008 et du système d'exploitation SYSMIC - appelé alors moniteur
d'exploitation. le système d'exploitation SYSMIC sera plus tard renommé PROLOGUE lors du rachat
de la société par Bull en 1978.
Sorti en 1975, l'Altair 8800 est un micro-ordinateur livré en kit au prix approximatif de 400 $, et
comme le Micral il se programmait en inversant une série d'interrupteurs à bascule situés sur la face
avant de l'appareil. Le prix de l'Altair 8800 le rendait accessible aux particuliers. Mais son utilisation
compliquée (qui rappelle les ordinateurs centraux des années 1940) limitait son utilisation à des
passionnés et des hobbyistes.
À cette époque, les micro-ordinateurs n'avaient pas une puissance de calcul suffisante pour être
équipés d'un système d'exploitation comme Unix ou OS/360. Gary Kildall, ingénieur pour Intel crée
CP/M, le premier système d'exploitation pour micro-ordinateur.
En 1980, IBM prend contact avec Bill Gates, co-fondateur de la société Microsoft, pour l'adaptation
du langage BASIC à son nouveau micro-ordinateur, le Personal Computer (abrégé PC). IBM est
également à la recherche d'un système d'exploitation, et Gates conseille à la société de se tourner vers
CP/M. Mais Gary Kildall refuse de signer le contrat avec IBM. Bill Gates saute sur l'occasion : il
rachète QDOS – un système d'exploitation quick-and-dirty pour les processeurs Intel 8086 – pour

11
proposer à IBM le package DOS/BASIC. Après quelques modifications effectuées à la demande
d'IBM, le système est baptisé MS-DOS.
C'est à la même époque que Steve Jobs et Steve Wozniak fondent la startup Apple Computer, avec
comme optique de faire du micro-ordinateur un produit grand public aussi facile d'usage que
n'importe quel appareil électrique.
Xerox, une des sociétés majeures de l'époque s'intéresse à l'optique de Steve Jobs, réunit une poignée
de scientifiques et d'ingénieurs dans son centre de recherche de Palo Alto et, sur la base de thèses et
d'études effectuées les années auparavant, développe le premier micro-ordinateur équipé d'une
interface utilisateur graphique. Le résultat des recherches, le Xerox Star ne sera jamais commercialisé
et c'est Apple qui, dix ans plus tard, avec le Macintosh, popularise les recherches effectuées par
Xerox.

1990, les systèmes d'exploitation sous licence libre


En 1983, Richard Stallman du Massachusetts Institute of Technology lance l'idée d'un système
d'exploitation sous licence libre : GNU. Il développe des programmes destinés aux programmeurs,
des logiciels utilitaires, et crée la GNU General Public License - un contrat de licence exempt de
droits d'auteur. Le succès est immédiat, mais le système ne possède toujours pas, en 1990, de noyau
libre, et les tentatives pour en développer un sont loin d'être abouties.
En 1987, Andrew Tanenbaum, professeur à l'université libre d'Amsterdam a créé le système
d'exploitation Minix, clone d'UNIX dont le code source était destiné à illustrer son cours sur la
construction des systèmes d'exploitation. Mais Minix, à vocation pédagogique, comportait de trop
nombreuses limitations techniques pour être le noyau d'un système UNIX complet. Inspiré par les
travaux de Tanenbaum, Linus Torvalds, étudiant à l'université d'Helsinki se lance alors dans le
développement de son propre noyau : Linux, qui est à la base une réécriture de Minix. La toute
première version (0.01) sort en 1991, Linux passe sous licence GNU en 1992 et il faut attendre 1994
pour voir la version 1.0 qui donne naissance à la distribution d'un système d'exploitation entièrement
libre, GNU/Linux.
Un autre système d'exploitation libre apparaît à la même époque : il s'agit de 4.4BSD. La Berkeley
Software Distribution (traduction : la suite de logiciels de Berkeley) – abrégé BSD – est la version
d'UNIX développée par les étudiants et les chercheurs de l'université de Berkeley depuis 1977. Les
logiciels utilitaires, créés sous licence libre, sont vendus avec le noyau Unix de AT&T, lui-même sous
licence propriétaire. Cette double licence de BSD est à l'origine de plusieurs années de litige entre
l'Université de Berkeley et AT&T. Les étudiants de l'université travaillent à remplacer les programmes
développés par AT&T par leurs propres programmes, sous licence libre, afin de résoudre le litige.
Cette situation dure jusqu'à la sortie de 4.4BSD en 1994, qui ne contient pratiquement plus de code
AT&T.
C'est à la suite des initiatives et travaux de Linus Torvalds et Richard Stallman, aidés par des milliers
de bénévoles et à la suite des travaux des étudiants de l'université de Berkeley que GNU/Linux et
4.4BSD sont devenus les premiers systèmes d'exploitation sous licence libre.

Composition
Un système d'exploitation est composé d'une large palette de programmes. La composition exacte
dépend de l'usage cible et du type d'appareil informatique (ordinateur personnel, serveur,
superordinateur ou encore système embarqué) auquel le système est destiné.

12
Si le système d'exploitation est destiné à être utilisé sur un ordinateur personnel ou une console de jeu
vidéo, l'interface graphique sera raffinée et ergonomique. S'il est destiné à être utilisé sur un serveur,
il comprendra une large palette de protocoles et de pilotes pour du matériel réseau, sera multi-tâches
et muni de contrôles d'accès. Au contraire, le nombre de pilotes sera restreint au minimum et le
système d'exploitation sera prévu pour être enregistré sur une mémoire morte s'il est destiné à un
assistant personnel ou un téléphone portable. Un système d'exploitation destiné à des superordinateurs
sera massivement multiprocesseur, c'est-à-dire qu'il pourra être utilisé sur un ordinateur équipé de
centaines voire de milliers de processeurs.

Interface de programmation
Le système d'exploitation effectue de nombreuses actions sur demande des logiciels applicatifs. Le
point de contact entre un logiciel applicatif et le système d'exploitation est appelé interface de
programmation (anglais Application Programming Interface abrégé API). Ce peut être des fonctions
mises à disposition dans des bibliothèques logicielles, ou des logiciels serveur qui répondent aux
requêtes envoyées par les logiciels applicatifs.
L'utilisation de la même interface de programmation quel que soit le matériel, le protocole ou le
système de fichier concerné assure la portabilité des logiciels applicatifs : un logiciel applicatif donné
pourra fonctionner sur différents ordinateurs, quelle que soit leur configuration, en particulier quel
que soit le matériel, le système de fichier ou le protocole utilisé.
POSIX (acronyme de l'anglais Portable Operating System Interface) est une norme relative à
l'interface de programmation du système d'exploitation. De nombreux systèmes d'exploitation sont
conformes à cette norme, notamment les membres de la famille Unix.

L'ordonnanceur
L'ordonnanceur (anglais scheduler) est le programme du système d'exploitation qui contrôle le
déroulement des autres programmes. Dans un système d'exploitation multitâches l'ordonnanceur
assure l'exécution simultanée de plusieurs programmes (concurrence).
L'exécution simultanée de plusieurs programmes est réalisée de la manière suivante: l'ordonnanceur
commande l'exécution à tour de rôle de chaque programme par le ou les processeurs de l'ordinateur,
chaque processeur exécute les instruction d'un programme pendant une fraction de seconde, puis
l'ordonnanceur effectue une commutation de contexte (anglais context switch), suspend l'exécution du
programme en cours et passe au programme suivant.
On appelle ordonnancement la stratégie d'attribution des ressources aux processus qui en font la
demande. Différents critères peuvent être pris en compte :
- temps moyen d'exécution minimal
- temps de réponse borné pour les systèmes interactifs
- taux d'utilisation élevé de l'UC
- respect de la date d'exécution au plus tard, pour le temps réel, etc...

Processus et communication interprocessus


Un processus est un programme qui s'exécute, ainsi que ses données, sa pile, son compteur ordinal,
son pointeur de pile et les autres contenus de registres nécessaires à son exécution.

13
Attention : ne pas confondre un processus (aspect dynamique, exécution qui peut être
suspendue, puis reprise), avec le texte d'un programme exécutable (aspect statique).
Les appels système relatifs aux processus permettent généralement d'effectuer au moins les
actions suivantes :
 création d'un processus (fils) par un processus actif (d'où la structure d'arbre de processus gérée
par un SE)
 destruction d'un processus
 mise en attente, réveil d'un processus
 suspension et reprise d'un processus, grâce à l'ordonnanceur de processus (scheduler)
 demande de mémoire supplémentaire ou restitution de mémoire inutilisée
 attendre la fin d'un processus fils
 remplacer son propre code par celui d'un programme différent
 échanges de messages avec d'autres processus
 spécification d'actions à entreprendre en fonction d'événements extérieurs asynchrones
 modifier la priorité d'un processus

Les systèmes informatiques sont typiquement composés de nombreux programmes qui coopèrent en
s'échangeant des informations. Les échanges d'informations entre les processus peuvent se faire à
l'aide de messages stockés en mémoire, le système d'exploitation s'occupant de collecter les messages
et les mettre à disposition de chaque destinataire. Tout processus qui attend un message sera
interrompu jusqu'à l'arrivée d'un message et l'ordonnanceur évitera toute commutation de contexte
vers un processus en attente.
Le système d'exploitation s'assure également que les processus qui partagent un espace de stockage
commun (en lecture ou écriture) ne se trouvent pas en condition de concurrence, c'est-à-dire dans une
situation ou le résultat d'une opération dépend de l'ordre dans lequel les processus accèdent à l'espace
partagé.

Les interruptions
Une interruption est une commutation du mot d'état provoquée par un signal généré par le
matériel. Ce signal est la conséquence d'un événement interne au processus, résultant de son
exécution, ou bien extérieur et indépendant de son exécution. Le signal va modifier la valeur d'un
indicateur qui est consulté par le SE. Celui-ci est ainsi informé de l'arrivée de l'interruption et de son
origine. A chaque cause d'interruption est associé un niveau d'interruption. On distingue au moins 3
niveaux d'interruption :
 les interruptions externes : panne, intervention de l'opérateur, ....
 les déroutements qui proviennent d'une situation exceptionnelle ou d'une erreur liée à
l'instruction en cours d'exécution (division par 0, débordement, ...)
14
 les appels système

Les ressources
On appelle ressource tout ce qui est nécessaire à l'avancement d'un processus (continuation
ou progression de l'exécution) : processeur, mémoire, périphérique, bus, réseau, compilateur,
fichier, message d'un autre processus, etc... Un défaut de ressource peut provoquer la mise en attente
d'un processus.
Un processus demande au SE l'accès à une ressource. Certaines demandes sont implicites ou
permanentes (la ressource processeur). Le SE alloue une ressource à un processus. Une fois une
ressource allouée, le processus a le droit de l'utiliser jusqu'à ce qu'il libère la ressource ou jusqu'à ce
que le SE reprenne la ressource (on parle en ce cas de ressource préemptible, de préemption).
On dit qu'une ressource est en mode d'accès exclusif si elle ne peut être allouée à plus d'un
processus à la fois. Sinon, on parle de mode d'accès partagé. Un processus possédant une ressource
peut dans certains cas en modifier le mode d'accès.
Exemple : un disque est une ressource à accès exclusif (un seul accès simultané), une zône
mémoire peut être à accès partagé.
Le mode d'accès à une ressource dépend largement de ses caractéristiques technologiques.
Deux ressources sont dites équivalentes si elles assurent les mêmes fonctions vis à vis du processus
demandeur. Les ressources équivalentes sont groupées en classes afin d'en faciliter la gestion par
l'ordonnanceur.
La mémoire virtuelle
Le mécanisme dit de mémoire virtuelle est destiné à simuler la présence ou l'absence de mémoire
centrale par manipulation de l'unité de gestion mémoire - un composant électronique (anglais Memory
Management Unit abrégé MMU). C'est un mécanisme courant dans les systèmes d'exploitation
contemporains.
La mémoire virtuelle repose sur le fait qu'un programme n'a pas besoin que toutes les données qu'il
manipule se trouvent simultanément en mémoire centrale. Une partie de ces données peut donc être
stockée dans la mémoire de masse (en général dans un fichier ou une partition de disque dur) qui est
habituellement plus importante (car moins chère mais plus lente). Il faut néanmoins que ces données
puissent être transférées en mémoire centrale lorsque le programme en a besoin.
Les programmes disposent d'un (ou plusieurs) espaces virtuels de mémoire continus pour travailler.
Les adresses des données sont dites virtuelles dans la mesure où ces données peuvent être stockées en
mémoire centrale à une adresse physique totalement différente, ou bien n'être stockées que dans la
mémoire de masse. Lorsque le programme essaie de lire ou écrire une donnée dans sa mémoire
virtuelle, le système d'exploitation cherche l'adresse physique correspondant à l'adresse virtuelle
sollicitée grâce à une table de correspondance (propre à chaque programme). Si l'emplacement n'est
pas présent en mémoire centrale, il n'y aura évidemment aucune adresse physique correspondante. Le
système d'exploitation devra alors chercher à libérer un espace en mémoire centrale en le copiant dans
la mémoire de masse, puis copier l'emplacement requis de la mémoire de masse vers la mémoire
centrale, et enfin mettre à jour sa table de correspondance : l'adresse virtuelle a maintenant une
adresse physique correspondante.
Le système d'exploitation assure la gestion de la mémoire virtuelle de manière transparente pour les
programmes.
15
Pilotes
Un pilote (anglais driver) est un programme qui contient les instructions à exécuter pour utiliser un
certain périphérique informatique. Les pilotes sont fournis par l'auteur du système d'exploitation ou le
fabricant du périphérique. Un système d'exploitation contient typiquement de nombreux pilotes
correspondant à de nombreux composants matériels susceptibles d'être montés dans l'ordinateur.
Le système d'exploitation dirige l'utilisation des pilotes par les logiciels applicatifs. Il intervient
lorsque plusieurs logiciels applicatifs tentent d'utiliser le même matériel en même temps, et active ou
désactive les pilotes en fonction du matériel présent dans l'ordinateur.
Lors de chaque événement survenu sur un périphérique (réception d'informations, fin d'un envoi,
manipulation effectuée par l'utilisateur...), ce dernier provoque une interruption matérielle, un
mécanisme électronique qui provoque une commutation de contexte ; le système d'exploitation
déclenche alors l'exécution des instructions du pilote concerné.
Les logiciels applicatifs ainsi que le système d'exploitation peuvent également, au besoin, déclencher
l'exécution des instructions d'un pilote.

Système de fichiers
Une des fonctions d'un SE est de masquer les spécificités des disques et des autres
périphériques d'E/S et d'offrir au programmeur un modèle de manipulation des fichiers agréable et
indépendant du matériel utilisé.
Les appels système permettent de créer des fichiers, de les supprimer, de lire et d'écrire dans
un fichier. Il faut également ouvrir un fichier avant de l'utiliser, le fermer ultérieurement. Les fichiers
sont regroupés en répertoires arborescents; ils sont accessibles en énonçant leur chemin d'accès
(chemin d'accès absolu à partir de la racine ou bien chemin d'accès relatif dans le cadre du répertoire
de travail courant).
Un système de fichier (en anglais file system) est une structure en arbre dans laquelle sont stockés des
fichiers ainsi que d'autres informations. Divers programmes du système d'exploitation s'occupent de
répartir les fichiers sur les mémoires de masse tels que les disques durs et de les relier pour former la
structure du système de fichiers.
Il existe diverses manières de disposer les fichiers dans une mémoire de masse. Une mémoire de
masse qui a été remplie avec un système d'exploitation selon une disposition donnée sera reconnue
par un autre système d'exploitation uniquement si celui-ci reconnaît la disposition en question. Les
mémoires amovibles telles que les CD ou les DVD ont une disposition normalisée dont les
spécifications sont publiques, ce qui assure leur reconnaissance par tous les systèmes d'exploitation
(ISO 9660 et UDF).
Un système d'exploitation contient typiquement différents programmes qui servent à manipuler un
système de fichier. Chaque programme manipule les fichiers conformément à une disposition donnée.
Ces programmes effectuent des opérations telles que créer des fichiers, les copier, les supprimer, créer
et supprimer des répertoires ainsi que formater la mémoire de masse c'est-à-dire créer une structure
vide.
Lorsque le système de fichier est distribué, c'est-à-dire que les fichiers sont stockés sur différents
ordinateurs d'un réseau informatique, le système d'exploitation envoie une requête à l'ordinateur qui
stocke le fichier pour chaque opération à effectuer.

16
Dans un système d'exploitation multiutilisateur, les programmes qui manipulent le système de fichier
effectuent des contrôles pour vérifier qu'aucun fichier n'est manipulé par une personne non autorisée.
Le système d'exploitation refusera toute manipulation non autorisée.

Contrôle d'accès
Dans un système d'exploitation multiutilisateur, un ensemble de programmes assure la sécurité des
informations enregistrées dans les mémoires ainsi que la disponibilité de l'ordinateur, ceci afin de
préserver la confidentialité et éviter que de manipulations effectuées par un utilisateur perturbent
l'utilisation de l'ordinateur par les autres utilisateurs. Cette fonctionnalité est souvent absente des
systèmes d'exploitation pour les appareils personnels.
Dans ces systèmes d'exploitation tout utilisateur doit préalablement décliner son identité avant
d'utiliser l'ordinateur. Puis un programme du système d'exploitation vérifie cette identité par rapport à
un annuaire ou un référentiel (authentification). Le système d'exploitation établit alors une liste des
opérations autorisées ou interdites à l'utilisateur en fonction des règlements (en anglais : policies) qui
ont été introduits par l'administrateur sécurité – la personne responsable de la sécurité des
informations.

Interface utilisateur
Un ensemble de programmes du système d'exploitation reçoit les informations envoyées par les
logiciels applicatifs, et les place sur une image numérique qui sera envoyée au matériel par
l'intermédiaire d'un pilote. En complément un autre ensemble de programmes reçoit les manipulations
effectuées par l'usager par l'intermédiaire de pilotes puis les transmettent au logiciel concerné. Ces
deux ensembles créent l'interface homme-machine qui permet à un usager de dialoguer avec la
machine.
Le système d'exploitation peut dialoguer avec un usager par l'intermédiaire d'un autre ordinateur ou
d'un terminal (interface distribuée). Les informations envoyées par les logiciels applicatifs seront
alors envoyées à l'autre ordinateur selon un protocole prévu à cet effet, tandis que l'autre ordinateur
enverra les manipulations effectuées par l'utilisateur. Voir SSH, RFB ou X Window System.
Lorsque l'interface est en mode texte, l'image numérique est une grille dans laquelle sont placés des
caractères d'imprimerie, la grille comporte typiquement 80 colonnes et 35 lignes. L'interface se
manipule avec un clavier. Ce type d'interface, qui existe depuis les débuts de l'informatique est
aujourd'hui remplacé par les interfaces graphiques.
L'interface utilisateur graphique
Dans une interface utilisateur graphique (anglais Graphical User Interface abrégé GUI), l'image
numérique est composée par un programme du système d'exploitation par superposition de points, de
lignes, de pictogrammes et de caractères d'imprimerie. L'interface se manipule typiquement avec une
souris selon le principe WIMP (anglais Windows, Icons, Menus and Pointer device). L'image
numérique est crée à l'aide du processeur graphique de l'ordinateur.
Lors des manipulations de la souris, le système d'exploitation déplace l'élément d'image qu'est le
pointeur et effectue les calculs nécessaires pour déterminer quel est l'élément de l'image qui se trouve
juste en dessous. À chaque élément de l'image peut être associé un programme. Un widget est un
programme qui dessine et anime un élément d'image dont l'aspect peut-être celui d'un bouton
poussoir, d'une lampe témoin, d'un ascenseur, d'une zone texte, d'un menu, etc. Divers widgets sont
fournis avec le système d'exploitation.

17
Les programmes pour interface graphique sont aujourd'hui (2009) inclus dans tous les systèmes
d'exploitation contemporains. Le X Window System est l'ensemble des programmes pour interface
utilisateur graphique inclus dans tous les systèmes d'exploitation de la famille Unix.

Logiciels utilitaires
Un logiciel applicatif sert à assister l'utilisateur dans une activité. Les logiciels utilitaires sont des
logiciels applicatifs qui permettent à l'utilisateur d'effectuer des manipulations basiques telles que
démarrer des programmes, copier des fichiers ou modifier des paramètres de configuration. Divers
logiciels utilitaires sont fournis avec les systèmes d'exploitation.
Un interpréteur de commandes est un programme qui permet d'exécuter d'autres programmes en
écrivant leur nom éventuellement suivi de divers paramètres. Il est accompagné de plusieurs
programmes qui permettent la manipulation des fichiers (copie, changement de nom...). Ce type de
programme est utilisé pour effectuer des manipulations ou exécuter des scripts – suites de
manipulations pré-enregistrées (commande informatique).
Un environnement de bureau est un programme dans lequel les différents éléments de l'ordinateur
(programmes, fichiers, disques durs) sont présentés sous forme de pictogrammes sur lesquels il est
possible d'effectuer différentes actions. Il permet d'exécuter des programmes, d'effectuer différentes
opérations sur les fichiers (copie, changement du nom, déplacement ou suppression)...
Certains programmes servent à l'utilisateur à modifier les paramètres de configuration du système
d'exploitation. Ceux-ci proposent des listes à choix multiples et effectuent des contrôles de validité
avant le modifier les paramètres.
D'autres programmes servent à installer des logiciels, c'est-à-dire copier les fichiers dans les
emplacements prévus à cet effet, et effectuer les modifications de configuration nécessaire pour
rendre le logiciel opérationnel. Ces programmes peuvent aussi servir à consulter la liste des logiciels
actuellement installés dans l'ordinateur.
Un système d'exploitation multiutilisateur est en général fourni avec des programmes permettant de
surveiller l'activité de l'ordinateur – consultation de journaux d'activité – ou modifier les listes de
droits d'accès en vue d'autoriser ou d'interdire un fichier à certains utilisateurs.

Architecture
Un système d'exploitation est typiquement organisé en couches distinctes. La couche supérieure est
l'interface de programmation avec les logiciels applicatifs (dont font partie les logiciels utilitaires
fournis avec le système d'exploitation).
Au centre, on trouve une ou plusieurs couches qui contiennent les composants principaux du système
d'exploitation tels que : les programmes pour les systèmes de fichiers et le réseau, la gestion de
mémoire, les pilotes, l'ordonnanceur, le gestionnaire d'interruption.
La couche inférieure, appelée couche d'abstraction matérielle (anglais hardware abstraction layer
abrégé HAL), est chargée de masquer les particularités matérielles.

Le noyau

Le noyau (anglais kernel) est un espace mémoire isolé, dans lequel est placé tout ou partie du système
d'exploitation. Dans le langage courant le terme kernel désigne l'emplacement ainsi que l'ensemble
18
des programmes qu'il contient et qui forment le cœur rigide du système d'exploitation. Le contenu du
noyau ne peut pas être modifié par inadvertance par les logiciels applicatifs – une modification
provoquerait un crash de l'ordinateur.

Noyau monolithique
L'architecture est dite à noyau monolithique lorsque la totalité des programmes du système
d'exploitation (en particulier les pilotes, le programmes qui traitent le réseau et le système de fichier)
résident dans l'espace du noyau. Dans cette architecture chaque utilisation d'une fonction de
l'interface de programmation provoque une commutation de contexte et le passage en mode kernel.
Le SE est un ensemble de procédures, chacune pouvant appeler toute autre à tout instant.
Pour effectuer un appel système, on dépose dans un registre les paramètres de l'appel et on exécute
une instruction spéciale appelée appel superviseur ou appel noyau. Son exécution commute la
machine du mode utilisateur au mode superviseur ou noyau et transfère le contrôle au SE. Le SE
analyse les paramètres déposés dans le registre mentionné plus haut et en déduit la procédure à activer
pour satisfaire la requête. A la fin de l'exécution de la procédure système, le SE rend le contrôle au
programme appelant.
Généralement, un tel SE est organisé en 3 couches :
 une procédure principale dans la couche supérieure, qui identifie la procédure de service requise
 des procédures de service dans la couche inférieure à la précédente qui exécutent les appels
système
 des procédures utilitaires dans la couche basse qui assistent les procédures système. Une
procédure utilitaire peut être appelée par plusieurs procédures systèmes.
Linux, FreeBSD, OpenVMS ou Solaris sont des systèmes d'exploitation à noyau monolithique.

Micro-noyau
L'architecture est dite micro-noyau (anglais microkernel) lorsque le noyau contient le strict minimum,
c'est-à-dire l'ordonnanceur et le programme qui simule la mémoire virtuelle, et que la grande majorité
des programmes se trouvent en dehors : les pilotes, les programmes qui traitent les systèmes de
fichiers ou l'interface graphique, ainsi que les logiciels applicatifs.
Dans cette architecture les nombreux programmes qui se trouvent en dehors du noyau sont isolés les
uns des autres, sont exécutés comme des logiciels applicatifs — en concurrence — et utilisent les
fonctionnalités du noyau pour s'échanger des messages. L'utilisation des fonctions de l'interface de
programmation entraîne l'émission de nouveaux messages.
Minix, BeOS, Mac OS X ou QNX sont des systèmes d'exploitation à micro-noyau.

Noyau hybride
Divers systèmes d'exploitation ont une architecture qui a certaines caractéristiques des micro-noyaux
et en même temps des noyaux monolithiques. Cette architecture est appelée noyau hybride macro-
noyau ou micro-noyau modifié.

19
Dans cette architecture, la totalité des programmes du système d'exploitation résident dans le noyau, à
la façon d'un noyau monolithique. Cependant de nombreux programmes du système d'exploitation
sont exécutés en concurrence comme des logiciels applicatifs, à la manière de l'architecture micro-
noyau (processus noyau).
Pour les processus du noyau, l'ordonnanceur effectue des commutations de contexte entre les
processus de la même manière qu'entre les logiciels applicatifs, ces processus utilisent les fonctions
de l'ordonnanceur pour s'échanger des messages et l'utilisation des fonctions de l'interface de
programmation entraîne l'émission de messages.
Windows NT ou NetWare sont des systèmes d'exploitation à noyau hybride.

Exo-noyau
Dans l'architecture exo-noyau (du grec exos = hors de), il n'y a pas d'emplacement isolé, et le système
d'exploitation est composé de programmes et de bibliothèques logicielles de construction identique à
celles des logiciels applicatifs.
L'utilisation de fonctions de l'interface de programmation provoque l'exécution des instructions
contenues dans une bibliothèque logicielle du système d'exploitation sans nécessiter une commutation
de contexte. Une des bibliothèques logicielle est utilisée pour la transmission et la réception de
messages entre les processus, les instructions de l'ordonnanceur sont incluses dans cette bibliothèque.
Mac OS, AmigaOS et Oberon sont des systèmes d'exploitation en architecture exo-noyau.

Les systèmes en couches


On peut généraliser la conception précédente et concevoir un SE composé de plusieurs
couches spécialisées, chaque couche ne pouvant être appelée que par des procédures qui lui sont
immédiatement inférieures. Citons par exemple le premier SE de cette nature proposé par Dijkstra en
1968 :
 couche 0 : allocation du processeur par commutation de temps entre les processus, soit à la
suite d'expiration de délais, soit à la suite d'interruption (multiprogrammation de base du
processeur)
 couche 1 : gestion de la mémoire, allocation d'espace mémoire pour les processus (pagination)
 couche 2 : communication entre les processus et les terminaux
 couche 3 : gestion des E/S ( échanges d'information avec des mémoires tampons, c'est à dire
avec des périphériques abstraits, dégagés des spécificités matérielles)
 couche 4 : programmes utilisateurs

L'architecture client/serveur
Cette tendance s'est accentuée dans les SE contemporains en tentant de réduire le SE à un
noyau minimal. Une des formes les plus accentuées de cette évolution est l'architecture client/serveur.
La plupart des fonctionnalités d'un SE sont reportées dans des processus utilisateurs. Pour
demander un service comme la lecture d'un bloc de fichier, le processus utilisateur ou processus client
envoie une requête à un processus serveur qui effectue le travail et envoie une réponse. Le noyau ne

20
gère que la communication entre les clients et les serveurs. Cependant, le noyau est souvent obligé de
gérer certains processus serveurs critiques comme les pilotes de périphériques qui adressent
directement le matériel.
La décomposition du SE en modules très spécialisés le rend facile à modifier. Les serveurs
s'exécutent comme des processus en mode utilisateur et non pas en mode noyau. Comme ils
n'accèdent donc pas directement au matériel, une erreur n'affecte que le serveur et pas l'ensemble de
la machine.
En outre, ce modèle est bien adapté aux systèmes distribués. Un client n'a pas besoin de savoir
si le SE fait exécuter sa requête par un serveur de sa propre machine ou celui d'une machine distante.

21
Programmation informatique
La programmation dans le domaine informatique est l'ensemble des activités qui permettent
l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel.
Pour écrire le résultat de cette activité, on utilise un langage de programmation.
La programmation représente usuellement le codage, c’est-à-dire la rédaction du code source d'un
logiciel. On utilise plutôt le terme développement pour dénoter l'ensemble des activités lié à la
création d'un logiciel.

Une brève histoire de la programmation


La première machine programmable (c’est-à-dire machine dont les possibilités changent quand on
modifie son "programme") est probablement le métier à tisser de Jacquard, qui a été réalisé en 1801.
La machine utilisait une suite de cartons perforés. Les trous indiquaient le motif que le métier suivait
pour réaliser un tissage ; avec des cartes différentes le métier produisait des tissages différents. Cette
innovation a été ensuite améliorée par Herman Hollerith d'IBM pour le développement de la fameuse
carte perforée d'IBM.
En 1936, la publication de l'article fondateur de la science informatique On Computable Numbers
with an Application to the Entscheidungsproblem par Alan Mathison Turing allait donner le coup
d'envoi à la création de l'ordinateur programmable. Il y présente sa machine de Turing, le premier
calculateur universel programmable, et invente les concepts et les termes de programmation et de
programme.
Les premiers programmes d'ordinateurs étaient réalisés avec un fer à souder et un grand nombre de
tubes à vide (plus tard, des transistors). Les programmes devenant plus complexes, cela est devenu
presque impossible, parce qu'une seule erreur rendait le programme entier inutilisable. Avec les
progrès des supports de données, il devient possible de charger le programme à partir de cartes
perforées, contenant la liste des instructions en code binaire spécifique à un type d'ordinateur
particulier. La puissance des ordinateurs augmentant, on les utilisa pour faire les programmes, les
programmeurs préférant naturellement rédiger du texte plutôt que des suites de 0 et de 1, à charge
pour l'ordinateur d'en faire la traduction lui-même. Avec le temps, de nouveaux langages de
programmation sont apparus, faisant de plus en plus abstraction du matériel sur lequel devaient
tourner les programmes. Ceci apporte plusieurs facteurs de gains : ces langages sont plus faciles à
apprendre, un programmeur peut produire du code plus rapidement, et les programmes produits
peuvent tourner sur différents types de machines.

Phases de création d'un programme


Conception

La phase de conception définit le but du programme. Si on fait une rapide analyse fonctionnelle d'un
programme, on détermine essentiellement les données qu'il va traiter (données d'entrée), la méthode
employée (appelée l'algorithme), et le résultat (données de sortie). Les données d'entrée et de sortie
peuvent être de nature très diverses. On peut décrire la méthode employée pour accomplir le but d'un
programme à l'aide d'un algorithme. La programmation procédurale et fonctionnelle est basée sur
l'algorithmique. On retrouve en général les mêmes fonctionnalités de base :
"Si"
22
Si prédicat
Alors faire ceci
Sinon faire cela
"Tant que"
Tant que prédicat
Faire ...
"Pour"
Pour variable allant de borne inférieur à borne supérieur
Faire ...
Codage

Une fois l'algorithme défini, l'étape suivante est de coder le programme. Le codage dépend de
l'architecture sur laquelle va s'exécuter le programme, de compromis temps-mémoire, et d'autres
contraintes. Ces contraintes vont déterminer quel langage de programmation utiliser pour "convertir"
l'algorithme en code source.

Transformation du code source

Le code source n'est (presque) jamais utilisable tel quel. Il est généralement écrit dans un langage "de
haut niveau", compréhensible pour l'homme, mais pas pour la machine.

Compilation
Certains langages sont ce qu'on appelle des langages compilés. En toute généralité, la compilation est
l'opération qui consiste à transformer un langage source en un langage cible. Dans le cas d'un
programme, le compilateur va transformer tout le texte représentant le code source du programme, en
code compréhensible pour la machine, appelé code machine.
Dans le cas de langages dits compilés, ce qui est exécuté est le résultat de la compilation. Une fois
effectuée, l'exécutable obtenu peut être utilisé sans le code source.
Il faut également noter que le résultat de la compilation n'est pas forcément du code machine
correspondant à la machine réelle, mais peut être du code compris par une machine virtuelle (c'est-à-
dire un programme simulant une machine), auquel cas on parlera de bytecode. C'est par exemple le
cas en Java. L'avantage est que, de cette façon, un programme peut fonctionner sur n'importe quelle
machine réelle, du moment que la machine virtuelle existe pour celle-ci.
Dans le cas d'une requête SQL, la requête est compilée en une expression utilisant les opérateurs de
l'algèbre relationnelle. C'est cette expression qui est évaluée par le système de gestion de bases de
données.

23
Interprétation
D'autres langages ne nécessitent pas de phase spéciale de compilation. La méthode employée pour
exécuter le programme est alors différente. Le programme entier n'est jamais compilé. Chaque ligne
de code est compilée « en temps réel » par un programme. On dit de ce programme qu'il interprète le
code source. Par exemple, python ou perl sont des langages interprétés.
Cependant, ce serait faux de dire que la compilation n'intervient pas. L'interprète produit le code
machine, au fur et à mesure de l'exécution du programme, en compilant chaque ligne du code source.

Avantages, inconvénients
Les avantages généralement retenus pour l'utilisation de langages "compilés", est qu'ils sont plus
rapides à l'exécution que des langages interprétés, car l'interprète doit être lancé à chaque exécution
du programme, ce qui mobilise systématiquement les ressources.
Traditionnellement, les langages interprétés offrent en revanche une certaine portabilité (la capacité à
utiliser le code source sur différentes plates-formes), ainsi qu'une facilité pour l'écriture du code. En
effet, il n'est pas nécessaire de passer par la phase de compilation pour tester le code source.

Appellation impropre
Il faut noter qu'on parle abusivement de langages compilés ou interprétés. En effet, le caractère
compilé ou interprété ne dépend pas du langage, qui n'est finalement qu'une grammaire et une
certaine sémantique. D'ailleurs, certains langages peuvent être utilisés interprétés ou compilés. Par
exemple, il est très courant d'utiliser Ruby avec un interprète, mais il existe également des
compilateurs pour ce langage.
Néanmoins, l'usage qu'on fait des langages est généralement fixé.

Test du programme

C'est l'une des étapes les plus importantes de la création d'un programme. En principe, tout
programmeur se doit de vérifier chaque partie d'un programme, de le tester. Il existe différents types
de test. On peut citer en particulier :
 Test unitaire
 Test d'intégration
 Test de performance
Il convient de noter qu'il est parfois possible de vérifier un programme informatique, c'est-à-dire
prouver, de manière plus ou moins automatique, qu'il assure certaines propriétés.

24
Langage de programmation
Un langage de programmation est un langage informatique, permettant à un être humain d'écrire un
code source qui sera analysé par une machine, généralement un ordinateur. Le code source subit
ensuite une transformation ou une évaluation dans une forme exploitable par la machine, ce qui
permet d'obtenir un programme. Les langages permettent souvent de faire abstraction des mécanismes
de bas niveau de la machine, de sorte que le code source représentant une solution puisse être écrit et
compris par un être humain.
L'activité de rédaction du code source d'un programme est nommée programmation. Elle consiste en
la mise en œuvre de techniques d'écriture et de résolution d'algorithmes informatiques, lesquelles sont
fondées sur les mathématiques. À ce titre, un langage de programmation se distingue du langage
mathématique par sa visée opérationnelle (une fonction et par extension, un programme, doit
retourner une valeur), de sorte qu'un «langage de programmation est toujours un compromis entre la
puissance d'expression et la possibilité d'exécution».

Généralités
Langage

D'un point de vue mathématique, un langage de programmation est un langage formel construit sur un
alphabet (ensemble de symboles). Dans cet alphabet, on trouve plusieurs choses:
 des lettres et chiffres ;
 des mots-clé (combinaison de lettres et parfois de chiffre) ;
 des caractères :
 correspondant à des opérateurs : par exemple « = », « < », « & » ;
 ou pas, comme « { », « _ » ....
L'assemblage de ces symboles forment les « mots » du langage de programmation. Pour qu'un mot
appartienne au langage, il doit vérifier certaines contraintes exprimées grâce à la théorie des langages
dans une grammaire formelle : c'est la « syntaxe » du langage de programmation.
En associant une sémantique – généralement une opération – à chaque mot, on définit le
comportement de la machine. La mise en relation de mots va donner un programme informatique.
Programmation

Suivant le langage utilisé, un programme doit être interprété ou compilé en passant par un autre
langage qui pourra être compris par la machine : l'assembleur ou même en code binaire.
D'un point de vue pratique, un langage de programmation permet l'écriture de programmes de
manière compréhensible par un être humain. Le programmeur n'a pas besoin de connaître le langage
machine, dit « de bas niveau », pour écrire un programme. Le langage de programmation fournit une
abstraction de niveau supérieur pour utiliser une machine.

25
Il existe des milliers de langages de programmation, la plupart d'entre eux étant réservés à des
domaines spécialisés. Ils font l'objet de recherches constantes dans les universités et dans l'industrie.

Historique

Bien que la notion de programme apparaisse progressivement au cours de la deuxième moitié du


XIXe siècle, les premiers langages de programmation n'apparaissent qu'autour de 1950. Chacun
pouvant créer son propre langage, il est impossible de déterminer le nombre total de langages existant
à l'heure actuelle.

Particularités

Il existe plusieurs caractéristiques qui permettent de comparer les langages entre-eux :

Typage

Le typage est le fait d'attribuer un type aux éléments du code source (variables, fonctions, etc.). Un
type définit une structure de données : nombre entier, tableau, chaîne de caractères. Dans certains
langages, il existe des types plus évolués (liste chaînée, sémaphore) et il est parfois possible d'en
définir de nouveaux.
Les types que l'on trouve dans un langage de programmation dépendent de sa sémantique et donc de
ses paradigmes. Beaucoup de langages proposent la notion de variable qui associe un nom à une
valeur en mémoire et ce nom ou cette valeur à un type.
Le typage peut être :
 Explicite ou implicite
On parle de typage explicite quand les types apparaissent explicitement dans le code source du
programme ; un typage implicite est déterminé par le compilateur ou l'interprète.
 Fort ou faible
Plus un typage est fort, plus les règles du langage sont strictes et interdisent dès la compilation
les manipulations entre données de types différents. On trouve souvent dans les langages typés
faiblement la possibilité de faire du transtypage manuel (en anglais cast) pour combler les lacunes du
système automatique de typage.

 Statique ou dynamique
On parle de typage statique quand la vérification des types se fait dès la phase de compilation,
et de typage dynamique lorsque celle-ci est faite durant l'exécution. De plus un typage
dynamique associe les types aux valeurs, alors qu'un typage statique associe le type à la
variable.
Le typage du langage C est explicite, relativement fort (le compilateur peut générer des
avertissements de typages, le transtypage manuel est permis, mais on peut effectuer n'importe quelle
opération entre n'importe quels types sans transtypage), et statique. Le langage Objective Caml
possède un typage implicite, fort et statique (son typeur est le fruit de nombreux travaux de recherche
scientifique).

26
Les langages fournissent parfois des mécanismes pour convertir une valeur d'un type en une valeur
dans un autre type : on peut convertir un entier en flottant sans aucune perte mais l'inverse n'est pas
toujours possible. Il ne faut pas confondre la conversion avec le transtypage : le mécanisme de
conversion transforme effectivement la donnée, par contre le transtypage se contente de modifier le
type associé. Ce mécanisme peut être explicite ou implicite.

Syntaxe

Outre les particularités sémantiques des langages, ils utilisent également des grammaires différentes
qui proposent souvent des points communs.
Les particularités syntaxiques ne sont souvent que des détails qui ne changent pas les fonctionnalités
proposées par les langages de programmation. Par exemple, dans Objective-C 2, il est possible d'utiliser les
accesseurs avec deux syntaxes différentes pour le même résultat :

 object.message
 [object message]

Commentaires
Les commentaires sont des parties du programme qui n'apparaissent pas dans l'application finale. Les
commentaires permettent de documenter et d'expliquer le code source. Presque tous les langages de
programmation permettent d'écrire des commentaires.
Ils sont introduits ou délimités par des caractères spéciaux (# en Bash ou Ruby) ou une instruction
particulière (REM en BASIC).

Indentation
L'indentation est l'utilisation d'espaces ou tabulations en début de ligne. Généralement, elle n'a pas
d'incidence sur le fonctionnement du programme et ne sert qu'à améliorer la lisibilité du code.
Pour certains langages, l'indentation est significative et obligatoire : en Python, l'indentation va servir
à délimiter une fonction, une classe ou un test conditionnel – à la différence de langages comme C où
ce sont les accolades { } qui remplissent cette fonction.

Séparation des instructions


Pour distinguer une instruction de la suivante, il existe principalement deux approches :
 soit la fin d'une instruction est marquée par un terminateur (un ; en C, Java, etc.) ;
 soit il existe un séparateur d'instructions (un ; en Pascal, une fin de ligne en bash ou Python).
La nuance est importante, car en C, la dernière instruction d'un bloc doit comprendre un ;
(terminateur) alors qu'en Pascal, il est inutile, voire fautif, d'en mettre un (cela consiste à ajouter une
instruction vide en fin de bloc). De même, le caractère ; peut être utilisé en C comme instruction vide,
ce qui n'aurait pas de sens en Pascal.
Les langages utilisant un terminateur sont réputés engendrer moins de fautes de syntaxe que ceux
utilisant un séparateur.

27
Balisage
Certains langages utilisent des « balises » délimitant des « environnements ». Une balise est
généralement un mot-clé associé à plusieurs caractères : \ ; < > ; etc.
Les langages permettant de générer du code source ou des documents utilisent souvent des balises.
Par exemple, PHP et JSP utilisent des balises pour délimiter les parties de code à interpréter. XML est
également un langage à balises, qui permet de définir des langages de programmation comme XSP ou
XSLT.
Stratégie d'évaluation

Une stratégie d'évaluation est un ensemble de règles qui décrivent comment évaluer une expression
dans un langage de programmation. La stratégie d'évaluation définit à quel moment les arguments des
fonctions et opérateurs sont évalués ou réduits.
On distingue essentiellement deux stratégies :
 l'évaluation stricte : les arguments des fonctions sont toujours évalués avant que la fonction ne
soit appliquée.
 l'évaluation paresseuse ou évaluation retardée : les arguments ne sont évalués que lorsque leur
valeur est effectivement requise. Ce type d'évaluation est généralement utilisé dans les langages
fonctionnels.
La plupart des langages ont un système d'évaluation stricte, et utilisent une forme d'évaluation
paresseuse pour les expressions booléennes (évaluation court-circuit). Cependant il est possible de
créer une évaluation paresseuse dans un langage à évaluation stricte. Par exemple, Scheme fournit la
fonction delay qui retarde l'évaluation d'une expression et force qui oblige l'évaluation.

Gestion de la mémoire

Les langages de programmation offrent plus ou moins de libertés au programmeur en ce qui concerne
la gestion de la mémoire :
 Soit elle est entièrement sous le contrôle du développeur qui doit gérer lui-même l'espace
mémoire disponible, les allocations et libérations (C).
 Soit tout peut être contrôlé par le compilateur ou par le moteur d'exécution (Java) : même s'il est
possible de donner des directives, la machine virtuelle gère elle-même la mémoire à l'aide d'un
ramasse-miettes.
Certains langages proposent un système intermédiaire. En Objective-C, il est possible de la gérer
directement, d'activer la gestion automatique de la mémoire ou d'utiliser un système de plus haut
niveau.
Réflexivité

On dit d'un langage de programmation est « réflexif » s'il permet, au moment de l'exécution,
d'analyser et d'agir sur le fonctionnement interne du programme lui-même.

28
Le langage Smalltalk fut un précurseur dans le domaine de la réflexivité. Il a d'ailleurs fortement
influencé bon nombre de langages réflexifs, tels que Io, Python, Ruby, Java ou Objective-C.

Exceptions

Les exceptions sont des cas limites d'exécution du programme (division par 0, etc.). Lorsqu'elles sont
générées, le déroulement du programme est interrompu. Au contraire d'une erreur qui interrompt
brutalement le programme, la gestion d'une exception permet d'interrompre proprement un
programme, de corriger l'erreur et d'en reprendre l'exécution.
La gestion des exceptions peut être différente selon les langages ; soit :
 Il n'y en a pas (C) ;
 Elle signale l'exception sans la traiter (C++, Java) ;
Elle permet un traitement : par exemple, la modification du programme par le programme lui-
même (comme en Python) pour reprendre une exécution « normalement ».
Concurrence

La programmation concurrente consiste à découper un programme en plusieurs fils d'exécution. La


concurrence permet de simuler l'exécution de différentes tâches de façon simultanée ou, dans le cadre
d'une interface graphique, d'effectuer des tâches en tâche de fond sans pour autant bloquer le
rafraîchissement de l'affichage. La programmation concurrente permet aussi de tirer parti de
ressources distribuées (multiples processeurs, cluster de machines, etc.) ou du système
d'ordonnancement de processus du système d'exploitation.
Certains langages intègrent directement la concurrence dans leurs primitives (Erlang, Concurrent
ML). Généralement, la concurrence est intégrée par l'intermédiaire de bibliothèques spécifiques : le
langage C dispose entre autres de la bibliothèque des threads POSIX ; Java dispose d'une classe
Thread dans ses bibliothèques standards.

Principaux paradigmes

Chaque langage de programmation est différent. Une solution exprimée dans un certain langage peut
« ressembler » à une solution exprimée dans un autre langage ; dans ce cas, on dit que les langages
utilisent le même paradigme (ou style). Deux programmes fournissant la solution au même
problème,mais écrits avec des paradigmes différents seront fondamentalement très différents.
De nombreux langages appartiennent simultanément à plusieurs catégories : ils sont dits « multi-
paradigmes ». Par exemple, C++ permet la programmation impérative, orientée objet et la
programmation générique (à base de classes et de fonctions paramétrées nommées templates).
Common Lisp est à la fois impératif, fonctionnel, orienté objet ; son caractère « programmable » (un
langage de programmation programmable…) lui permet d'intégrer d'autres « paradigmes » de
programmation en son sein (par exemple : la programmation logique et la programmation par
contraintes).

29
Langages impératifs et procéduraux

On distingue deux types de langages impératifs. D'une part les langages machines et assembleurs.
Ceci explique que les premiers langages de programmation apparus soient des langages impératifs :
une instruction du langage correspond à un ensemble d'instructions du langage machine. Les
structures de données et opérations sont plus complexes qu'au niveau de la machine, mais le
paradigme suivi reste le même.
Les langages procéduraux forment la seconde famille de langages impératifs. Une procédure, appelée
également fonction, est une suite d'instructions devant être effectuée dans un ordre précis. On
distingue parfois procédure et fonction par la caractéristique qu'une procédure ne renvoie pas de
résultat.
Parmi les langages impératifs figurent COBOL, Fortran, Pascal ou encore le C.
Langages déclaratifs

Un langage déclaratif ne décrit pas comment est réalisée une opération, comme dans un langage
impératif, mais décrit le problème lui-même, sans s'intéresser au contexte.
Figurent parmi les langages déclaratifs Oz, Prolog ou encore Clips.

Langages logiques
Un programme logique est composé de faits et de règles qui sont traités par un moteur d'inférence.
Prolog fut le premier langage de ce type à être fonctionnel sur un ordinateur.

Langages fonctionnels
Dans ce paradigme, l'opération de base n'est pas l'affectation, contrairement aux langages impératifs,
mais l'évaluation de fonctions. Ce paradigme est donc principalement efficace pour modéliser des
problèmes qui s'expriment par des valeurs de données, comme en mathématiques, et non pas des états
qui changent au cours de l'exécution.
Certains langages fonctionnels, dit « purs », interdisent totalement les effets de bord, tels que la
mutation des données où une variable est liée à une valeur non modifiable. D'autres, intègrent certains
traits des langages impératifs où les variables peuvent changer de valeur au cours de l'exécution.
Quelques exemples de langages fonctionnels : Objective Caml (langage fonctionnel et impératif),
Haskell (langage fonctionnel pur à évaluation paresseuse), Python (propose certaines fonctionnalités
du style fonctionnel comme l'utilisation de fonctions lambda ou la compréhension de listes).
Langages à pile

Ces langages ne manipulent que des piles de données où les opérations sont effectuées sur les
éléments du sommet d'une ou plusieurs piles.
Des exemples typiques sont les langages Forth, Factor, PostScript, Joy, Cat ou RPL (HP 48).

30
Langages à objets

Les langages à objets offrent un abstraction à la machine : l'objet est une structure sémantique
indépendante qui rassemble des données et des traitements.
En se basant sur une méthode de conception à objet et sur un langage de modélisation à objet, on peut
facilement implanter un concept au moyen d'un langage de programmation à objets.
Parmi les langages à objets sont généralement classés Ruby et Smalltalk, purement objet, c'est-à-dire
que tout est objet, depuis les types de base, jusqu'à l'interprète ou les blocs d'instructions ; le C++,
extension de C permettant d'utiliser des objets mais où tout n'est pas objet ; Python, très orienté objet
mais qui ne respecte pas tous les principes de la programmation objet comme l'encapsulation.

Utilisations

On peut aussi classer les langages de programmation en fonction de leur utilisation car beaucoup de
langages sont spécialisés à une application ou à un domaine particulier.

Langages de définition de données

Un langage de définition de données ne permet pas d'effectuer de traitement mais de décrire des
structure de données (listes, arbres …) et des instances de ces structures.
XML est par exemple un langage permettant la représentation de données sous forme de structure
arborescente ; la partie DDL de SQL sert à décrire des données relationnelles. Les langages qui
décrivent des documents peuvent également être considérés comme des langages de définition de
données. Ainsi, LaTeX est un exemple de langage de définition de données qui permet d'écrire un
document en centralisant sa mise en forme. LaTeX est compilé vers des d'autres langages de
description de document, généralement plus « bas niveau » comme PDF ou Postscript.
Ces langages ne sont habituellement pas considérés comme des langages de programmation.
Cependant les codes sources produits avec ces langages présentent certains traits de codes sources de
programmes comme des structures de contrôle (conditions, boucles...) et des moyens d'interaction
avec le système (variable d'environnement, formulaires...). Ils sont donc cités ici à titre indicatif, mais
sont à la frontière de la programmation.

Langages de requête

Les langages de requêtes sont destinés à interroger et manipuler les bases de données.
SQL est un langage de requête utilisé par un grand nombre de systèmes de gestion de bases de
données tels qu’Oracle ou SQL Server.
Langages pour pages Web dynamiques

Ce type de langages est utilisé pour une plus grande interaction entre un client et un serveur.
Du côté du serveur Web, cela permet de produire des pages dont le contenu est généré à chaque
affichage. Ces langages sont par ailleurs souvent couplés avec un langage pour communiquer avec
des bases de données (exemple : PHP).

31
Côté client (en général le navigateur web), les langages de réagir à certaines actions de l'utilisateur
sans avoir à questionner le serveur. Par exemple, le JavaScript d'une page Web peut réagir aux saisies
de l'utilisateur dans un formulaire (et vérifier le format des données).
Certains langages permettent de développer à la fois les aspects client et serveur. C'est le cas
d'Ocsigen, de Hop ou bien encore du Server-Side JavaScript.
Langages de programmation théorique

On désigne parfois par langages de programmation théoriques les systèmes formels utilisés pour
décrire de façon théorique le fonctionnement des ordinateurs. Ils ne servent pas à développer des
applications mais à représenter des modèles et démontrer certaines de leurs propriétés.
On peut citer la machine de Turing et le λ-calcul de Church, qui datent tous les deux des années 1930,
et donc antérieurs à l'invention de l'ordinateur. Le λ-calcul a par la suite servi de base théorique à la
famille des langages de programmation fonctionnelle. Dans les années 1980, Robin Milner a mis au
point le π-calcul pour modéliser les systèmes concurrents.

Langages spécialisés

 ABEL, langage pour la programmation électronique des PLD


 CDuce, langage fonctionnel d'ordre supérieur pour la manipulation de documents au format
XML.
 Forme de Backus-Naur (BNF), formalisation des langages de programmation
 PROMELA, langage de spécification de systèmes asynchrones
 VRML, description de scènes en trois dimensions

Langages synchrones
Langages de programmation synchrones pour les systèmes réactifs : Esterel, Lustre.

Langages à vocation pédagogique


Les pseudo-codes ont généralement un but uniquement pédagogique.
Logo est un langage fonctionnel simple à apprendre.

Langages pour l'électronique numérique


 Verilog, VHDL : langages de description matérielle, permettant de synthétiser de l'électronique
numérique (descriptions de portes logiques) et d'en simuler le fonctionnement
 SystemC, langage de description matérielle de plus haut niveau que les précédents et permettant
une simulation plus rapide

Langages pour la statistique


R et xLispStat sont à la fois un langage de statistiques et un logiciel.

32
Langages de programmation de Commande Numérique (C.N.)
Une machine-outil automatisée, ou Commande Numérique (C.N.), a besoin d'un langage de
programmation pour réaliser les opérations de tournage, ou de fraisage…

Langages de programmation des automates programmables industriels (API)


 Sequential function chart, langage graphique, dérivé du grafcet (NB : le grafcet définit les
spécifications de façon graphique)
 Langage Ladder, langage graphique

Langages de programmation audio


Nyquist est un langage de synthèse et d'analyse sonore. Pure Data est un logiciel de création musicale
graphique qui repose sur un langage de programmation procédural.

33
Paradigme de programmation
Un paradigme de programmation est un style fondamental de programmation informatique qui
traite de la manière dont les solutions aux problèmes doivent être formulées dans un langage de
programmation (à comparer à la méthodologie, qui est une manière de résoudre des problèmes
spécifiques de génie logiciel).

Utilisation

Un paradigme de programmation fournit (et détermine) la vue qu’a le développeur de l’exécution de


son programme. Par exemple, en programmation orientée objet, les développeurs peuvent considérer
le programme comme une collection d’objets en interaction, tandis qu’en programmation
fonctionnelle un programme peut être vu comme une suite d'évaluations de fonctions sans états. Lors
de la programmation d’ordinateurs ou de systèmes multi-processeurs, la programmation orientée
processus permet aux développeurs de voir les applications comme des ensembles de processus
agissant sur des structures de données localement partagées.
De la même manière que des courants différents du génie logiciel préconisent des « méthodologies »
différentes, des langages de programmation différents plaident pour des « paradigmes de
programmation » différents. Certains langages sont conçus pour supporter un paradigme en
particulier (Smalltalk et Java supportent la programmation orientée objet, tandis que Haskell supporte
la programmation fonctionnelle) alors que d’autres supportent des paradigmes multiples (à l’image de
C++, Common Lisp, OCaml, Oz, Python, Ruby ou Scheme).
De nombreux paradigmes de programmation sont aussi célèbres pour les techniques qu’ils prohibent
que pour celles qu’ils permettent. La programmation fonctionnelle pure, par exemple, interdit l’usage
d’effets de bord ; la programmation structurée interdit l’usage du goto. En partie pour cette raison, les
nouveaux paradigmes sont souvent considérés comme doctrinaires ou abusivement rigides par les
développeurs habitués aux styles déjà existants. Cependant, le fait d’éviter certaines techniques peut
permettre de rendre plus aisé la démonstration de théorèmes sur la correction d’un programme — ou
simplement la compréhension de son fonctionnement — sans limiter la généralité du langage de
programmation. De plus, il est possible d'écrire un programme en adoptant la programmation orientée
objet même si le langage, par exemple le langage C, ne supporte pas ce paradigme.
La relation entre les paradigmes de programmation et les langages de programmation peut être
complexe, car un langage de programmation peut supporter des paradigmes multiples. Pour citer un
exemple, C++ est conçu pour supporter des éléments de programmation procédurale, de
programmation orientée objet et de programmation générique. Cependant, concepteurs et
développeurs décident de la méthode d’élaboration d’un programme en utilisant ces éléments de
paradigmes. Il est possible d’écrire un programme purement procédural en C++, comme il est
possible d’en écrire un purement orienté objet, ou encore qui relève des deux paradigmes.

Exemples

 Programmation impérative, paradigme originel et le plus courant


 Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les
instructions goto

34
 Programmation orientée objet, consistant en la définition et l’assemblage de briques logicielles
appelées objets (comme en Smalltalk)
 Programmation fonctionnelle, avec laquelle un programme est une fonction au sens
mathématique du terme
 Programmation procédurale, à comparer à la programmation fonctionnelle
 Programmation déclarative, consistant à déclarer les données du problème, puis à demander au
programme de le résoudre
 Programmation événementielle, consistant à répondre à des événements
 Programmation interruptible, à comparer à la programmation événementielle
 Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de
prédicats (comme en Prolog)
 Programmation par contraintes, à comparer à la programmation logique
 Programmation concurrente, où l’on tient compte de l’exécution en parallèle de plusieurs piles
sémantiques
 Programmation orientée prototype, qui simplifie et rend plus flexible la programmation orientée
objet
 Programmation orientée composant (comme en OLE)
 Programmation orientée aspect (comme en AspectJ)
 Programmation par contrat, dans lequel le déroulement des traitements est régi par des règles
(comme en Eiffel)
 programmation chimique, les programmes sont vus comme des solutions chimiques abstraites.
Les données sont des molécules dont les réactions chimiques représentent les opérations.
 Programmation orientée agent, souvent basée sur la programmation orientée objet, qui simplifie
le développement d’agents logiciels
 Programmation orientée concept
 Programmation orientée pile (comme en Forth)
 Programmation orientée principes
 Programmation orientée flux de données, utilisée souvent pour les solutions de communication
client/serveur, elle permet d'abstraire les différents plateformes en se concentrant sur l'échange et le
traitement des données.Elle est généralement représentée sous forme de diagrammes ou de graphes
(voir Diagramme de flux de données) (comme dans un Tableur)
 Programmation non-déterministe
 Programmation orientée sujet

35
 Programmation réactive
 Programmation synchrone
 Programmation orientée classe, à comparer à la Programmation orientée prototype (dans le
contexte de la programmation orientée objet)
 Programmation par annotations (comme en langage Flare)
 Programmation par attributs (comme avec les annotations Java, pré-traitées par la classe
XDoclet, ou avec les attributs C#)
 Programmation sur flux, à comparer à la Programmation sur événement
 Programmation par messages, à comparer à la programmation impérative
 Programmation orientée processus, pour la programmation parallèle
 Programmation récursive, à comparer à la programmation itérative
 Programmation réflexive
 Programmation scalaire, à comparer à la programmation par tableaux
 Programmation au niveau valeur, à comparer à la programmation au niveau fonction

36
Internet
Internet est le réseau informatique mondial qui rend accessibles au public des services variés comme
le courrier électronique, la messagerie instantanée et le World Wide Web, en utilisant le protocole de
communication IP (internet protocol). Son architecture technique qui repose sur une hiérarchie de
réseaux lui vaut le surnom de réseau des réseaux.
Internet ayant été popularisé par l'apparition du World Wide Web, les deux sont parfois confondus par
le public non averti. Le World Wide Web n'est pourtant que l'une des applications d'Internet.

Terminologie
Le terme d'origine américaine « Internet » a été dérivé du concept d'internetting (en français :
« interconnecter des réseaux ») dont la première utilisation documentée remonte à octobre 1972 par
Robert E. Kahn au cours de la première ICCC (International Conference on Computer
Communications) à Washington.
Les origines exactes du terme Internet restent à déterminer. Toutefois, c'est le 1er janvier 1983 que le
nom « Internet », déjà en usage pour désigner l'ensemble d'ARPANET et plusieurs réseaux
informatiques, est devenu officiel.
En anglais, on utilise un article défini et une majuscule, ce qui donne the Internet. Cet usage vient du
fait que « Internet » est de loin le réseau le plus étendu, le plus grand « internet » du monde, et donc,
en tant qu'objet unique, désigné par un nom propre. Un internet (un nom commun avec « i »
minuscule) est un terme d'origine anglaise utilisé pour désigner un réseau constitué de
l'interconnexion de plusieurs réseaux informatiques au moyen de routeurs.
Une publication au journal officiel indique qu'il faut utiliser le mot « internet » comme un nom
commun, c'est-à-dire sans majuscule.

Historique

En 1965, Roberts testa avec Thomas Merrill la première connexion informatique à longue distance,
entre le Massachusetts et la Californie. Le résultat montra que des ordinateurs pouvaient travailler
ensemble à distance, mais que le mode de télécommunication par établissement de circuit du système
téléphonique était inadapté. Le concept de communication par paquets de Kleinrock s'imposa.
En 1966, Roberts fut engagé par Taylor à la DARPA pour concevoir l'ARPANET. Il publia les plans
en 1967. En présentant ce texte, il découvrit deux autres groupes de chercheurs travaillant
indépendamment sur le même sujet : un groupe du National Physical Laboratory (NPL) du Royaume-
Uni avec Donald Davies et Roger Scantlebury, et un groupe de la RAND Corporation avec Paul
Barran.
Entre 1962 et 1965, le groupe de la RAND avait étudié la transmission par paquets pour l'armée
américaine. Le but était de pouvoir maintenir les télécommunications en cas d'attaque
(éventuellement nucléaire), ce que permet une transmission par paquets dans un réseau non centralisé.
Il s'agissait d'un développement indépendant d'ARPANET : bien que probablement robuste face à une
telle attaque, ARPANET n'a pourtant été conçu que pour faciliter les télécommunications entre
chercheurs. Le rapport de Paul Baran est resté purement théorique, et est rapidement tombé dans
l'oubli. Mais le mythe d'« ARPANET comme dernier rempart à une attaque atomique » trouve là son
origine.
37
Pendant ce temps, au British National Physical Laboratory, l'équipe de Donald Davies avait
progressé : NPL Network, le premier réseau maillé fondé sur la transmission de datagrammes
(packets) était fonctionnel. Mais l'histoire d'Internet n'a pas été écrite par les Européens : ARPANET
sera désormais l'origine officielle d'Internet.
En août 1968, la DARPA accepta de financer le développement du matériel de routage des paquets
d'ARPANET. Ce développement fut confié en décembre à un groupe de la firme Bolt, Beranek and
Newman (BBN) de Boston. Ce dernier travailla avec Bob Kahn sur l'architecture du réseau. Roberts
améliorait les aspects topologiques et économiques du réseau. Kleinrock préparait des systèmes de
mesures du réseau.
En septembre 1969, BBN installa le premier équipement à l'UCLA où travaillait Kleinrock. Le
second nœud du réseau fut installé au Stanford Research Institute (SRI) où travaillait Douglas
Engelbart sur un projet d'hypertexte. Deux nœuds supplémentaires furent ajoutés avec l'université de
Santa Barbara et l'université d'Utah. Fin 1969, ARPANET comptait donc quatre nœuds.
Le Network Working Group (NWG) conduit par Steve Crocker finit le protocole de communication
poste-à-poste NCP en décembre 1970. Ce protocole fut adopté entre 1971 et 1972 par les sites
branchés à ARPANET. Ceci permit le développement d'applications par les utilisateurs du réseau.
En 1972, Ray Tomlinson mit au point la première application importante : le courrier électronique. En
octobre 1972, Kahn organisa la première démonstration à grande échelle d'ARPANET à
l'International Computer Communication Conference (ICCC). C'était la première démonstration
publique.
Le concept d'Internet est né d'ARPANET. L'idée était de permettre la connexion entre des réseaux
divers : ARPANET, des communications avec les satellites, des communications par radio. Cette idée
fut introduite par Kahn en 1972 sous le nom de Internetting. Le protocole NCP d'ARPANET ne
permettait pas d'adresser des hôtes hors d'ARPANET ni de corriger d'éventuelles erreurs de
transmission. Kahn décida donc de développer un nouveau protocole, qui devint finalement TCP/IP.
En parallèle, un projet inspiré par ARPANET était dirigé en France par Louis Pouzin : le projet
Cyclades. De nombreuses propriétés de TCP/IP ont ainsi été développées, plus tôt, pour Cyclades.
Pouzin et Kahn indiquent que TCP/IP a été inspiré par Cyclades.
En 1973, Kahn demanda à Vint Cerf (parfois appelé le père d'Internet) de travailler avec lui, car Cerf
connaissait les détails de mise en œuvre de NCP. Le premier document faisant référence à TCP est
écrit en 1973 par Cerf : A Partial Specification of an International Transmission Protocol. La
première spécification formelle de TCP date de décembre 1974, c'est le RFC 675.
La version initiale de TCP ne permettait que la communication en établissant un circuit virtuel. Cela
fonctionnait bien pour le transfert de fichiers ou le travail à distance, mais n'était pas adapté à des
applications comme la téléphonie par Internet. TCP fut donc séparé de IP et UDP proposé pour les
transmissions sans établissement d'un circuit.
À la fin des années 1980, la NSF (National Science Foundation) qui dépend de l'administration
américaine, met en place cinq centres informatiques surpuissants, auxquels les utilisateurs pouvaient
se connecter, quel que soit le lieu où ils se trouvaient aux États-Unis : ARPANET devenait ainsi
accessible sur une plus grande échelle. Le système rencontra un franc succès et, après la mise à
niveau importante (matériels et lignes) à la fin des années 1980, s'ouvrit au trafic commercial au
début des années 1990.
38
Le début des années 1990 marque, en fait, la naissance d'Internet tel que nous le connaissons
aujourd'hui : le web, un ensemble de pages en HTML mélangeant du texte, des liens, des images,
adressables via une URL et accessibles via le protocole HTTP. Ces standards, développés au CERN
par Tim Berners-Lee devinrent rapidement populaires grâce au développement au NCSA par Marc
Andreessen et Éric Bina du premier navigateur multimédia Mosaic.
En janvier 1992, l’Internet Society (ISOC) voit le jour avec pour objectif de promouvoir et de
coordonner les développements sur Internet. L’année 1993 voit l’apparition du premier navigateur
Web ou butineur (browser), supportant le texte et les images. Cette même année, la National Science
Foundation (NSF) mandate une compagnie pour enregistrer les noms de domaine.

Gouvernance

Selon la définition du groupe de travail sur la gouvernance d'Internet, il faut entendre par
« gouvernance de l’Internet » l’élaboration et l’application par les États, le secteur privé et la société
civile, dans le cadre de leurs rôles respectifs, de principes, normes, règles, procédures de prise de
décisions et programmes communs propres à modeler l’évolution et l’usage de l’Internet.
Un certain nombre d'organismes sont chargés de la gestion d'Internet, avec des attributions
spécifiques. Ils participent à l'élaboration des standards techniques, l'attribution des noms de
domaines, des adresses IP, etc. :
 Internet Corporation for Assigned Names and Numbers (ICANN), sous la tutelle du ministère
du Commerce américain ;
 Internet Engineering Task Force (IETF) ;
 Internet Society (ISOC).
Dans un but de maintenir ou d'élargir la neutralité des réseaux, mais aussi d'engager les diverses
parties globales dans un dialogue sur le sujet de la gouvernance, les Nations unies ont convoqué :
 le Sommet mondial sur la société de l'information ;
 le Forum sur la gouvernance de l'Internet.

Technique

Internet est composé d'une multitude de réseaux répartis dans le monde entier. Chaque réseau est
rattaché à une entité propre (université, fournisseur d'accès à Internet, armée) et se voit attribuer un
identifiant unique appelé Autonomous System (AS). Afin de pouvoir communiquer entre eux, les
réseaux s'échangent des données, soit en établissant une liaison directe, soit en se rattachant à un
nœud d'échange (point de peering).
Chaque réseau est donc connecté à plusieurs autres réseaux. Lorsqu'une communication doit s'établir
entre deux ordinateurs appartenant à des AS différents, il faut alors déterminer le chemin à effectuer
parmi les réseaux. Aucun élément d'Internet ne connaît le réseau dans son ensemble, les données sont
simplement redirigées vers un autre nœud selon des règles de routage.

39
Connexions grand public

Aller sur Internet nécessite un accès IP. Pour cela, l'utilisateur emploie les matériels et logiciels
suivants :
 Un ordinateur personnel ou tout autre équipement terminal d'un réseau :
 Assistant personnel
 Câble
 Console de jeux vidéo
 Téléphone mobile
 Un canal de communication :
 Fibre optique
 Ligne téléphonique fixe : ligne analogique, xDSL
 Ligne téléphonique mobile : 3G+, 3G, Edge, GPRS, GSM (CSD)
 Internet par satellite
 Wi-Fi
 Un système (logiciel/matériel) client pour le protocole réseau utilisé (PPP,
PPPoX, Ethernet, ATM, etc.)
 Un fournisseur d'accès à Internet (FAI) (en anglais ISP pour Internet Service
Provider)
Des logiciels sont, eux, nécessaires pour exploiter Internet suivant les usages :
 Courrier électronique : un client SMTP et POP (ou POP3) ou IMAP (ou IMAP4)
 Transferts de fichiers : un client ou un serveur FTP (File Transfert Protocol)
 World Wide Web : un navigateur Web
 Pair à pair : l'un des nombreux logiciels de P2P en fonction de l'usage (partage de
fichiers en pair à pair, Calcul distribué, P2P VoIP, etc.)

Protocoles

Internet fonctionne suivant un modèle en couches, calqué sur le modèle OSI. Les éléments
appartenant aux mêmes couches utilisent un protocole de communication pour s'échanger des
informations.
Un protocole est un ensemble de règles qui définissent un langage afin de faire communiquer
plusieurs ordinateurs. Ils sont définis par des normes ouvertes, les RFC.

40
Chaque protocole a des indications particulières et, ensemble, ils fournissent un éventail de moyens
permettant de répondre à la multiplicité et à la diversité des besoins sur Internet.
Les principaux sont les suivants :

• IP (Internet Protocol) : protocole réseau qui définit le mode d'échange élémentaire


entre les ordinateurs participants au réseau en leur donnant une adresse unique sur le réseau.

• TCP : responsable de l'établissement de la connexion et du contrôle de la transmission.


C'est un protocole de remise fiable. Il s'assure que le destinataire a bien reçu les données, au
contraire d'UDP.

• HTTP (HyperText Transfer Protocol) : protocole mis en œuvre pour le chargement des
pages web.

• HTTPS : pendant du HTTP pour la navigation en mode sécurisé.

• FTP (File Transfer Protocol) : protocole utilisé pour le transfert de fichiers sur Internet.

• SMTP (Simple Mail Transfer Protocol) : mode d'échange du courrier électronique en


envoi.

• POP3 (Post Office Protocol version 3) : mode d'échange du courrier électronique en


réception.

• IMAP (Internet Message Access Protocol) : un autre mode d'échange de courrier


électronique.

• IRC (Internet Relay Chat) : protocole de discussion instantanée.

• NNTP (Network News Transfer Protocol) : protocole de transfert de message utilisé


par les forums de discussion Usenet

• SSL ou TLS : protocoles de transaction sécurisée, utilisés notamment pour le paiement


sécurisé.

• UDP : permet de communiquer, de façon non fiable mais légère, par petits
datagrammes.

• DNS (Domain Name System) : système de résolution de noms Internet.

• ICMP (Internet Control Message Protocol) : protocole de contrôle du protocole IP.


Indépendamment du transfert entre deux points, les passerelles doivent pouvoir s'échanger des
informations de routage. IGP (Interior Gateway Protocol), EGP (Exterior Gateway Protocol) et BGP
(Border Gateway Protocol) satisfont ce besoin.

41
Caractéristiques générales de Windows

Dans les chapitres suivants, nous verrons les différentes versions de Windows en détails. Les
quelques chapitres qui suivent vont généraliser quelques caractéristiques des successeurs de Windows
3.X: Windows NT, 95/98/Me, 2000, XP, 2003 et Vista.
Je ne m'attache pas aux caractéristiques particulières dans cette partie. Ces quelques chapitres vont
généraliser certains points comme la base de registre, les différents dossiers créés, les partitions, ...
C'est notre base de travail pour les différentes formations futures sur les systèmes d'exploitation.

Un petit rappel

Windows va utiliser 2 dossiers différents:

• le dossier c:\windows en lui-même intègre les fichiers et dossiers du système d'exploitation

• le dossier c:\programm Files intègre les programmes. Il rassemble les programmes accessoires
fournis avec Windows (Notepad, calculette, ...) et les programmes installés ultérieurement par
les utilisateurs comme Word, Excel, Access, PowerPoint, ...
Suivant le système d'exploitation, le dossier (mes) documents (95/98/me, que nous appellerons
amateurs) ou un sous-dossier "documents and setting" (NT, 2000, XP, 2003, Vista que nous
appellerons professionnels) vont reprendre les profils utilisateurs avec leurs documents. Le
contenu du bureau dans les versions amateurs est directement inclus dans le dossier Windows. Pour
les versions professionnelles, il est inclus comme sous-dossier du profil utilisateur.
Ceci est lié aux différences de fonctionnalité de ces deux familles au niveau accès utilisateurs. Même
si tous ces systèmes d'exploitations acceptent des bureaux différents suivant les utilisateurs, il n'y a
quasiment aucune sécurité pour les versions amateurs (95/98). La touche <ESC> permet de passer
outre le login / mot de passe et l'accès à tous les dossiers et souvent programmes inclus sur le disque
dur.

La base de registre

Une première particularité de ces versions de Windows est la base de registre. Constituée de divers
fichiers, elle intègre la configuration du matériel et des logiciels. A part Windows 95, toutes les
versions de Windows incluent des outils de vérification, sauvegarde. Les dernières versions
permettent également de rétablir la configuration précédente. Elle sera vue plus en détail dans le
chapitre suivant.
Pour accéder à la base de registre, dans démarrer -> Exécuter, tapez la commande REGEDIT.

Une réinstallation de Windows

Une installation de Windows va créer tous les dossiers et fichiers nécessaires, même si quelques
options sont possibles. Avant de formater un disque dur, la technique standard des techniciens
amateurs en cas de problème Windows, songez qu'une autre option est possible: supprimer les

42
dossiers Windows et programm Files (attention à sauvegarder les fichiers du bureau si nécessaires en
Win95/98/Millenium.
Pour cela, la solution la plus simple est de "coller" le disque dur en esclave sur une installation propre
de Windows. Une fois les dossiers supprimés, vous remettez le disque dur sur la machine d'origine et
réinstallez Windows. Cette solution permet de ne pas perdre de données, sauf dans le cas d'outlook
Express et d'outlook ou d'autres manipulations sont nécessaires.
Remarque: Coller un disque dur sous 2000 ou XP Pro sur un PC équipé de Windows XP Home
provoque quasiment chaque fois une nouvelle demande de clés chez Microsoft.
Cette solution peut poser des problèmes sous XP Pro principalement si l'utilisateur a demandé le
cryptage des dossiers utilisateurs, il n'est pas possible de les lire (même en réinstallant Windows XP
Pro avec le même profil utilisateur: login - mot de passe). Ce cryptage n'est possible qu'en partitions
NTFS.

Outils de base

La gestion de l'ordinateur se fait par le panneau de configuration disponible à partir du menu


Démarrer. Toutes les versions de Windows n'ont pas les mêmes icônes. On retrouve:
 Affichage: permet de modifier les propriétés de l'écran
 Ajout/suppression de matériel permet d'ajouter un nouveau périphérique interne ou externe.
Avec les fonctionnalités plug and Play de Windows, cette fonction est peu utilisée.
 Ajout/suppression de programme: permet d'ajouter ou de supprimer un logiciel, des
composantes de Windows.
 Connexion et accès à distance permet de paramétrer les communications réseaux.
 Systèmes reprend les propriétés du matériel.
 Son et multi-média reprend tout ce qui a un rapport avec le son.
 Polices: reprend les polices intégrées sous Windows. Même si cette fonction est peu utilisée en
pratique, vous pouvez insérer de nouvelles polices dans ce dossier.
Ce ne sont que les principaux. Chacun seront vues dans chaque système d'exploitation.

Multi-utilisateur

Chacun de ces systèmes d'exploitation accepte le multi-utilisateur. Il y a néanmoins une grosse


différence de gestion. Les séries amateurs (95/98/Millenium) gèrent les utilisateurs via un seul fichier
présent dans le dossier Windows au format pwl (utilisateur.pwl). En supprimant ce fichier, vous
supprimer le profil utilisateur. De plus, sans le mot de passe associé au login, vous n'avez pas
directement accès au bureau de l'utilisateur. Par contre, vous avez l'accès aux fichiers du disque durs,
y compris à ceux qui sont créés sur le bureau d'un utilisateur particulier. Comme mentionné, la touche
<ESC> permet de passer outre la demande de login. Par contre, cette méthode ne permet pas
d'accéder aux ressources réseau externes (accès sur le serveur).

43
Dans les systèmes d'exploitation professionnels, il est impossible d'accéder aux ressources de
l'ordinateur sans login et mot de passe. Les utilisateurs sont également repris par groupe.
L'administrateur est le plus haut niveau.

Microsoft Management Console

La MMC (abréviation de Microsoft Management Console) est utilisée dans les versions Pro et
serveurs (même si cette possibilité est implantée en XP Home et Vista Familial mais avec des options
très limitées). Windows 95 / 98 / millenium n'utilisent pas cette possibilité.
Elle permet d'ajouter ou de supprimer des composants logiciels enfichables. Ces logiciels optionnels
permettent par exemple d'interdire l'accès au panneau de configuration complet, d'empêcher
l'installation de programmes, la modification des paramètres réseaux, de supprimer des fichiers de
certains dossiers, ... ou même (en versions serveurs) de gérer les droits des groupes et utilisateurs
locaux. Nous en parlerons principalement dans les versions serveurs sous 2000 et 2003.

Les partitions

Avec Windows 95, la partition FAT 16 a été modifiée en VFAT. La limitation d'une partition à 2 GB
maximum est toujours d'application mais ce type de partition accepte les noms de fichiers longs et les
caractères accentués. Windows 95B et suivant (pas NT4) reconnaissent les partitions FAT 32. Si
théoriquement, il n'y a quasiment pas de limitations de taille de partitions, la commande FDISK de
Windows 98 n'accepte pas de disques durs de 60 GB. Millenium les accepte mais ne permet pas de
partitionner le disque dur. NTFS n'a pas ces problèmes, même si des limitations de capacités sont
également d'application.
Les séries professionnelles n'utilisent pas directement la commande FDISK. Les partitions sont créées
à l'installation ou via la gestion des disques durs dans les outils d'administration du panneau de
configuration.
Si les partitions NTFS sont plus stables, les partitions FAT sont reconnues par tous les systèmes
d'exploitation Windows (sauf FAT 32 par Windows 95). La sécurité sous NTFS est néanmoins accrue,
y compris en cas de panne de courant. Le choix de NTFS est également lié au droits d'accès
utilisateurs:
 Encryptage EFS (à partir de Windows 2000)
 Taille des clusters fixées (4KB jusque 2 Tera-Bytes), inférieur à la FAT32 d'où une occupation
moindre des fichiers sur le disque dur
 Compression des fichiers (pas des volumes comme dans Win98).
 Quota d'espace disque dur par utilisateur, attributs de sécurité d'accès sur les fichiers et dossiers
(lecture, écriture, exécution, ...)

44
Windows XP: Présentation

Avant de débuter ce cours technique sur Windows XP, commençons par voire les différentes versions
et un petit historique de ce système d'exploitation. XP (pour eXPérience) est sorti en 2001. Il reprend
quasiment la même structure que Windows 2000. Il n'y a pas de versions serveurs, fonction dédiée à
Windows 2003. Cinq versions sont proposées, la version Home pour amateurs et la version Pro pour
professionnels sont les plus courantes, trois autres versions sont développées:
 XP tablette PC (sorti en 2002)
 XP 64 bits (sorti en 2003), uniquement livré en OEM
 La version Édition Media Center, aussi appelée MCE, (2002) intègre, outre Media Player,
divers outils multimédia comme regarder la télévision. Elle n'est livrée qu'en OEM.
Toutes découlent de Windows 2000 et peu de différences entre les deux versions standards, y compris
la stabilité (en plus comme en moins).Conformément à une directive Européenne, Microsoft a retiré
Media Player, le lecteur multimédia, dans les versions N (c'est identique pour Vista), uniquement pour
l'Europe.
Au niveau réparation, les versions Home et Pro utilisent les mêmes outils, sauvegarde et restauration
automatique de la base de registre, démarrage sur le dernier fonctionnel, ... Internet Explorer 6.0 est
implanté dès la première version. Il permet un cryptage sur 128 bits, comme Internet Explorer 5.5.
Dès le départ, Windows XP s'est fait remarqué par une instabilité supérieure aux anciennes versions
(à part Millenium) et par la lourdeur du système, en espace disque et en mémoire d'utilisation. De
nombreuses failles de sécurité sont également apparues, tant au niveau du système d'exploitation que
d'Internet Explorer 6.0. Ce système d'exploitation a probablement facilité la méfiance des
professionnels au niveau sécurité vis à vis de Microsoft. Ce n'est qu'avec les différentes corrections
successives, dont les services Pack, qui ont corrigé le problèmes pour arriver au système
d'exploitation actuel. On se rappellera notamment de Blaster en septembre 2003 qui redémarrait les
machines ou du vers Sasser en 2004, juste avant la sortie de la version SP2, qui permettait de prendre
le contrôle à distance.
XP a été remplacé en janvier 2007 (pour le grand public) par Windows Vista, alors qu'il est (enfin)
stable.

45
Différence Windows XP Home et Pro

La version Pro reprend notamment:


 bi-processeur. Le dual-core et l'hyperthreading sont acceptés par les deux versions, ce qui
n'était pas tout à fait le cas en Windows 2000.
 Partage réseau de dossiers par mot de passe (limitation à 10 utilisateurs extérieurs
maximum), en home, une fois un dossier partagé, il est accessible à tous les autres ordinateurs du
réseau.
 Cryptage des fichiers
 Bureau à distance (accès complet à partir d'un autre ordinateur)
 Mise en cache des dossiers et fichiers hors connexion réseau
 Service d'installation à distance de logiciels

Configuration minimale

Les deux versions XP Home et Pro nécessitent les mêmes ressources minimum, pour la version de
base, plus pour les versions SP1, SP2 et surtout SP3.
 Un PC équipé d'un processeur cadencé à 233 MHz minimum (300 MHz recommandé) pour la
version de départ.
 128 Mo de mémoire Ram minimum recommandé (64 Mo minimum requis ; risque de nuire aux
performances et à certaines fonctionnalités) ;
 1,5 Go d'espace libre sur le disque dur ;
 Carte graphique VGA (640 X 480) minimum
 Un lecteur de CD-ROM ou DVD, aucune version sur disquette n'est disponible (heureusement)

Services Pack

Le service pack 1 est sorti en 2002 et corrige différents problèmes et failles de sécurité (c'est un
euphémisme).
Le service Pack 2, sorti en 2004, modifie le fonctionnement du système d'exploitation au niveau
piratage et sécurité. Le Pack2 ne fait pas que remettre à jour le système d'exploitation mais apporte
des modifications à Internet Explorer (blocage des activeX, fenêtre publicitaires - pop up) ou Outlook
Express
La première grosse différence viens du Genuine Advantage sorti dans la foulée en 2005 qui exécute
une vérification approfondie du numéro de licence. Le service Pack SP2 inclut en plus un centre de
sécurité qui vérifie si les mises à jour automatique sont activées, la présence d'un logiciel anti-virus et
inclus un pare-feu (uniquement en entrée). Le DEP (Data Extension Protection) est également
implanté (comme dans 2003 SP1). Il vérifie de manière logicielle si un programme tente d'écrire dans

46
la zone mémoire RAM réservée au données et le bloque éventuellement). Ce Service Pack est une
réponse de Microsoft aux détracteurs de la sécurité de Windows.
Malgré la sortie de Vista en novembre 2006 (contrats entreprises) et janvier 2007 (les autres), un
service Pack 3 est sorti en février 2008.

Au niveau dépannage

Outres les commandes de gestion de la base de registre REGEDIT, XP intègre une sauvegarde
automatique de la base de registre avec des points de récupération. Ceci permet de revenir en arrière
en cas de problème lors de l'installation d'un logiciel ou d'un pilote. Cette fonction peut néanmoins
poser problèmes comme la récupération dans la restauration d'un virus ou d'un programme
publicitaire pourtant éradiqué (et oui ça m'est arrivé). Cette fonction est directement accessible au
démarrage via le menu F8 ou dans les accessoires. Scanreg implanté en Windows 98 a disparu
(comme en 2000).

47
Systèmes de fichiers sous Windows

Suivant le système d'exploitation Windows, on retrouve deux familles de types systèmes de fichiers
sous Windows: les partitions FAT et les partitions NTFS. D'autres sont utilisées pour les CD-ROM et
DVD comme le format de disque universel (UDF - Uniform Format Disk à partir de Windows 98) et
le CDFS (CD-ROM Files systems) ne sont utilisés qu'en lecture seule.
Une partition est un découpage logique de la surface du disque dur permettant d'utilisation d'un
système de fichiers. La partition de démarrage reprend le système d'exploitation. En Fat, elle doit
obligatoirement être C:. Pour les systèmes 2000 et supérieurs, ceci n'a pas d'importance.

La FAT

La FAT est basée sur une table d'allocation de fichier (une par partition). Cette table est finalement
une simple table de matière reprenant pour chaque clusters une valeur numérique définissant s'il est
libre ou occupé. Ce tableau reprend également le numéro de cluster suivant utilisé par le fichier si
nécessaire. Chaque entrée de la FAT a une longueur de 12 (obsolète), 16 ou 32 bits suivant le type.
Les deux première reprennent des informations sur la table elle-même. Deux copies de la FAT sont
insérées sur le disque, dans le cas où un est défectueux.
Différentes versions de la FAT (File Allocation Table) existent suivant l'évolution:

• FAT 12: DOS versions inférieures à 4.0. Elle n'est lisible par aucun système d'exploitation
supérieure.

• FAT 16: A partir du DOS 4.0, lisible par toutes versions de Windows

• VFAT: adaptation de la FAT 16 pour accepter les noms de fichiers longs et caractères accentués,
à Partir de Windows 95.

• FAT32: nouvel encodage, à partir de Windows 95 B.


Les versions FAT16 et VFAT sont limitées à 2 GB par partitions. Pour chaque type de partition FAT,
la taille des clusters dépend de la taille de la partition. Toutes les versions actuelles de Windows
reconnaissent les partitions FAT.

Taille de la partition Taille des clusters FAT 16 Taille des Clusters FAT 32
32 - 64 MB 1 KB -
64 - 127 MB 2 KB -
128 - 255 MB 4 KB -
256 - 511 MB 8 KB -
512 - 1023 MB 16 KB 4 KB

48
Taille de la partition Taille des clusters FAT 16 Taille des Clusters FAT 32
1024 - 2047 MB 32 KB 4 KB

2048 MB - 8 GB - 4 KB
8 - 16 GB - 8 KB
16 - 32 GB - 16 KB
Plus de 32 GB - 32 KB

NTFS

Les partitions NTFS (New Technology File System) utilisent un système de fichiers basé dur une
table de fichier maître appelé MFT (Master File Table) qui reprend des informations détaillées sur le
fichier. Comme la FAT32, NTFS permet l'utilisation de noms de fichiers longs. Lorsque des fichiers
sont ajoutés sur le disque dur, la taille du fichier maître augmente.
NTFS utilise chaque entrée MTF pour définir à quel fichier elle correspond. On retrouve également la
taille du fichier, la date, les autorisations, ...Lorsque des fichiers sont ajoutés sur le disque dur, la taille
du fichier maître augmente.
Ici aussi, différentes versions des partitions NTFS sont utilisées.
NTFS 4.0, utilisé par Windows NT4 limite la taille d'une partition à 2 GB
NTFS 5.0, à partir de Windows 2000
La taille maximum d'une partition sous NTFS (version 2000) est de 2 TB.

Créer les partitions

Windows 95/98/Me utilisent la commande DOS FDISK pour créer les partitions. Ces versions
n'acceptent que les FAT (VFAT pour tous et Fat 32 à partir de Windows 95 B).
Pour toutes les autres versions de Windows, les partitions sont créées au début de l'installation. Vous
pouvez néanmoins utiliser la gestion des disques dans les outils d'administration pour créer une
partition sur un nouveau disque dur installé en slave ou sur une partie du disque principal non
configuré.

49
Quel type de partition choisir?

En Win9x, l'utilisation de partitions en FAT 32 est obligatoire, NTFS n'est pas reconnu. Par contre
pour les systèmes d'exploitation Win2000 et supérieur (XP, 2003 et Vista), il est nettement préférable
d'utiliser le NTFS. Un partage en réseau de dossiers en NTFS permet de toute façon à des stations
configurées en Win9X de lire les fichiers.
Par contre, les partitions NTFS permettent:
 sécurité des accès aux dossiers utilisateurs pour chaque utilisateur. Sauf s'il est administrateur,
un utilisateur standard ne peut accéder aux dossiers et fichiers d'un autre utilisateur s'il n'y est
pas autorisé.
 Mise en place de Quota par utilisateur ou pour les utilisateurs d'un même groupe.
 Accès plus rapide aux fichiers
 Partition de plus grande tailles. Windows 9X n'accepte pas la commande FDISK sur des
disques supérieurs à 60 GB, la même commande le permet avec un millenium mais n'accepte
de créer qu'une seule partition principale.
Les versions 2000, XP, 2003, Vista refusent de créer des partitions en FAT32 supérieures à 32
GB.
Pour les serveurs, les partitions en NTFS sont quasiment obligatoires au niveau des droits d'accès ou
quota (espace disque maximum par utilisateur)

50
51
Mise en réseaux Windows

Une des caractéristique des systèmes d'exploitations actuels (y compris MacOs et Linux) est de
pouvoir partager des ressources entre plusieurs ordinateurs via une connexion réseau (Ethernet et
WIFI sont les plus courants). Les ressources partagées peuvent-être des dossiers et des fichiers ou des
périphériques.
Les périphériques les plus couramment partagés sont les imprimantes et les modems (partage de
connexion Internet sous Windows). D'autres sont également possibles comme un scanner (modèles
spécifiques ou PSC), disques durs externes ou sauvegardes sur bandes.
Le partage de ces ressources nécessite des règles, des autorisations, des privilèges. Si dans le cas d'un
partage d'imprimante, ça ne pose que peu de problèmes, c'est nettement plus problématique dans le
cas des dossiers contenant des fichiers.

Types de réseaux sous Windows

Dans le cas des réseaux Microsoft, deux techniques sont utilisées: les groupes de travail et les
domaines. Le fonctionnement est nettement différents, notamment au niveau de la centralisation des
noms d'utilisateurs / mots de passe.
Dans le cas d'un groupe de travail (Workgroup), chaque ordinateur est équivalent et peut partager
(ou non) ses ressources, on parle de réseaux Peer-to-peer (points à points). L'accès aux données d'un
autre ordinateur peut selon la configuration et la version du système d'exploitation demander ou non
un mot de passe suivant le paramétrage de chaque dossier. Ce codes peuvent être rentrés lors de
l'accès au dossier partagé (Win98) ou suivant le login lors du démarrage sur le PC (les versions
actuelles pour un partage avec mot de passe).
L'utilisation d'un domaine nécessite un système d'exploitation serveur. Cette solution n'est donc pas
adaptée pour un petit réseau familial mais pour un réseau d'entreprise. Un ordinateur partage ses
ressources avec plusieurs stations qui se connectent. Les utilisateurs et ressources sont repris
directement sur le serveur dans une base de donnée appelée Activive Directory Service. Lorsqu'un
utilisateur démarre un ordinateur (quel qu'il soit), il doit entrer un nom d'utilisateur et un mot de
passe. La station vérifie alors si l'utilisateur est autorisé à se connecter sur le serveur (en fait sur le
domaine, l'ensemble des ressources). Suivant le login, différents privilèges lui seront proposées par le
serveur comme l'accès à des dossiers spécifiques. Plusieurs serveurs peuvent être présents sur le
réseaux. S'ils sont dans le même domaine (éventuellement en sous-domaine comme nous le verrons),
l'utilisateur peut se connecter sur tous. Sinon, il pourra que se connecter que sur un seul serveur.
Les deux solutions peuvent être éventuellement mélangées: quelques stations partageant leurs
ressources en groupe de travail (WorkGroup) sans pouvoir se connecter sur le serveur, d'autres
utilisant le serveur de domaine et ayant accès aux autres PC avec un mot de passe mais c'est
difficilement gérable.

Groupes de travail

Le gros avantage de cette méthode est la facilité de mise en oeuvre. Vous sélectionnez le dossier et
avec le menu contextuel, sélectionnez la commande partage. Suivant la version de Windows, vous

52
pouvez accepter toutes les connexions, entrer un mot de passe en lecture ou en lecture/écriture
(Windows 95/98/Me) ou créer des autorisations utilisateur + mot de passe, éventuellement "tout le
monde" ou en mode Invité. Cette solution est utilisée par les versions professionnelles de Windows
(NT, 2000, XP Pro, Vista Business). XP Home et Vista familial n'autorisent pas un partage par mot
de passe. Dans le cas d'XP Pro, seuls 10 utilisateurs peuvent se connecter simultanément sur un
ordinateur avec une configuration particulière.
Passons les anciennes versions personnelles pour nous intéresser aux versions actuelles
professionnelles. Le gros défaut vient de la méthode d'autorisations. Pour accepter un utilisateur via
le réseau, celui-ci doit être créé sur la station. Il peut donc entrer en session via son propre ordinateur
et le réseau Ethernet ou directement sur la station. Même si on donne peu de privilèges à ces
utilisateurs sur l'ordinateur central (compte invité par exemple), ceci pose quelques risques de
sécurité.
Pour un réseau de 3 ou 4 PC, ceci ne pose finalement que peu de problèmes. Un seul petit
inconvénient, l'utilisateur qui change de mot de passe sur sa propre station n'aura plus accès
automatiquement aux ressources partagées sur l'ordinateur central. Par contre, pour un réseau de 10
utilisateurs avec 3 partageant des dossiers, ceci nécessite de créer les 10 ordinateurs sur les 3 PC.
C'est carrément ingérable pour un réseau de 100 utilisateurs ou plus, même en utilisant un seul PC
partagé.
Tous les ordinateurs doivent être dans le même groupe de travail, sinon ils ne se verront pas
(Vista permet quelques exceptions). Pour tous les systèmes d'exploitation, il s'appelle WorkGroup par
défaut, sauf en Windows XP Home où il s'appelle Home.

Nom de domaine

Le principal défaut d'un groupe de travail est le manque de centralisation des utilisateurs et des
ressources. Dans le cas d'un serveur de domaine (NT, 2000 ou 2003), l'utilisateur et son ordinateur
sont créés sur le serveur. Cette solution utilise deux notions distinctes:
 le nom de domaine (DNS - Domaine Name Service) permet de nommer chaque serveur
suivant un nom suivi d'une extension, identique à celle des sites Internet.
 Active Directory service est un annuaire reprenant l'ensemble des ressources utilisables sur le
réseau: utilisateurs, ordinateurs, disques partagés, imprimantes et périphériques réseaux (s'ils
sont compatibles) mais aussi les dossiers partagés. Les serveurs nommés en DNS doivent
obligatoirement faire partie d'un annuaire Active Directory. Ce dernier peut reprendre
plusieurs serveurs.
Chaque domaine inclut un contrôleur principal au moins. Il est unique sur le réseau. En ajoutant des
serveurs, ceux-ci peuvent juste être membres et répliquer la base de donnée. L'accès est néanmoins
possible sur tous les serveurs du domaine par tous les ordinateurs et utilisateurs autorisés.
Pour démarrer son PC (ou un autre du réseau), un utilisateur entre son login et son mot de passe et le
domaine (ce dernier est automatique). S'il change son mot de passe, il est directement changé dans la
base de donnée Active Directory. Si un utilisateur change d'ordinateur (définitivement ou
temporairement), il entre les mêmes codes de connexion et retrouve les mêmes ressources. Ce n'est

53
pas le seul avantage. A la connexion, le serveur va lui renvoyer également son bureau Windows, son
menu Démarrer, y compris les programmes (on parle de profil utilisateur). Bref, quelque soit
l'ordinateur sur lequel il travaille, il retrouve exactement le même environnement de travail.
Active Directory permet d'autres paramétrages comme les horaires d'accès, la suppression temporaire
ou définitive des droits d'accès, des niveaux d'utilisateurs plus spécifiques, ... Ceci est impossible en
groupe de travail.
Tous les systèmes d'exploitation ne peuvent pas se connecter sur Active Directory. Microsoft a limité
cette possibilité à quelques versions. 95, 98 et Me ont cette possibilité via WINS, Windows 2000
également. Par contre, pour XP et Vista, seules les versions Pro et Business ont cette possibilité (pas
les versions Home et familiale).
Outre l'utilisation d'un serveur dédié, la configuration de départ est plus complexes. Elle permet
néanmoins une meilleur sécurité puisqu'un utilisateur distant ne peut pas se connecter directement
(physiquement) sur le serveur. Un autre avantage est la centralisation des sauvegardes des données
sur un seul PC.
Depuis les versions 2003 (donc 2008 server inclus), les connexions Internet des utilisateurs du réseau
local passent pas le serveur. Le premier avantage est la centralisation des droits d'accès vers Internet
(comme authoriser uniquement quelques sites à certains utilisateurs). Le deuxième avantage est lié à
l'utilisation d'Exchange pour les mails (une option suivant les versions). Les mails sont récupérés
par le serveur qui les renvoit vers l'utilisateur. Ceci permet de supprimer les fichiers liés suivant
l'extension (virus et autres fichiers ludiques), les extensions sont paramétrables, mais aussi de
centraliser la sauvegarde des mails, un des gros problème sur les stations.
Solution active Directory (donc serveur dédié), la plus sécurisée ...? Oui, mais aussi la plus centralisée.
Pourtant, le prix des licences est plus chères, les compétances d'administration sont plus pointues. Autre
désantage, beaucoup de logiciels n'acceptent de s'installer sur les serveurs sans des versions dédiées (donc
aussi plus chères). Prenons le cas des anti-virus, seules des versions spécifiques (tous éditeurs confondus)
acceptent de s'installer. Par contre, les mises à jour se téléchargent une seule fois, c'est le serveur qui les
redistribue aux ordinateurs clients via le réseau interne (gain de bande passante Internet), aux horaires définis
par l'administrateur. C'est la même chose pour les mises à jour de Windows sur les stations. De toute façon,
imaginons 300 ordinateurs qui se mettent à jour en même temps et c'est la connexion ADSL qui s'écroule.

Les applications réseaux

Connecter des ordinateurs en réseau ne sert pas à grand chose sans des applications. L'utilisation d'un
réseau permet:
 Jeux. Le partage en réseau local permet de jouer à plusieurs simultanément si le jeux inclue
cette possibilité. Dans ce cas, un petit réseau Peer to Peer de type WinXP ou Vista est
suffisant.
 Partage de documents: on peut choisir soit pour un réseau Peer To Peer, soit pour un réseau
lourd suivant le niveau de sécurité à installer. Dans un réseau point à point, peu de
mécanismes de sécurité et d'administration son implantés mais l'installation est relativement
facile et plus souple. Par contre, la sauvegarde doit se faire sur tous les ordinateurs, ce qui
n'est pas le cas avec un serveur central. Les peer to peer ne sont utilisés que pour un petit
nombre d'ordinateurs. Un NAS permet également de centraliser les fichiers et les partager.

54
 Application centrale. Les applications de gestion utilisent un logiciel gérant une (ou
plusieurs) bases de données utilisées simultanément par différents clients. Ces logiciels
nécessitent généralement un système d'exploitation dédié qui accepte la connexion simultané
de plusieurs PC (comptabilité, facturation et gestion des stock, ...) sur l'application. Les droits
d'accès se font à deux niveaux: dossiers partagés et limitations des fonnctions au niveau même
du logiciel suivant les privilèges utilisateurs.
 Le Partage de connexion Internet permet de connecter plusieurs ordinateurs simultanément
sur Internet via une seule connexion. Le partage utilise soit les fonctionnalités de Windows (à
partir de Windows 98 SE), routeur ADSL ou d'un logiciel proxy, voire un serveur 2003 ou
2008.
 Partage de périphériques. Le principal périphérique partagé est l'imprimante.

55
La base de registre

Depuis Windows NT (Windows 95 pour les systèmes d'exploitation standard), la configuration des
paramètres matériels internes (processeur, chipset, ...), logiciels et configuration diverses comme les
périphériques externes utilise la base de registre. Elle remplace les fichiers win.ini et system.ini
utilisés en Windows 3.X, limités à 64 KB. Ce chapitre va donner une brève description du contenu et
de sa réparation dans les différents systèmes d'exploitation Microsoft.
Sous Windows 95/98/Millenium, elle est reprise dans deux fichiers cachés dans le dossier Windows:
user.dat et system.dat. Millenium reprend un troisième fichier classes.dat. Pour les afficher dans le
dossier, utilisez la commande DOS attrib. A chaque démarrage correct, Windows crée une copie de
ces deux fichiers: sytem.da0 et user.da0. A la fin de l'installation, le fichier de sauvegarde system.1st
(également caché) est également créé dans la root du disque dur (95 et 98).
Sous 2000 et XP, 2 fichiers sont utilisés dans le dossier winnt\system32\config: default et system.
Dans ce dossier, on retrouve également les fichiers log (security, system et default). Les parties
utilisateurs sont reprises dans chaque profil sous les fichiers Ntuser.dat et UsrClass.dat.
Pour rappel, modifier des clés dans la base de registre peut entraîner des disfonctionnements
importants, voire une réinstallation du système.

Outils base de registres

Le premier outils est regedit. Tapez la commande dans Démarrer -> exécuter. Il est présent dans
toutes les versions des systèmes d'exploitation.

L'utilitaire scanreg permet de vérifier la base de registre sous Windows 98 et Millenium. 2000 n'a pas
d'utilitaire comparable. XP permet d'utiliser des points de restauration.

Classes de la base de registre

Elle est décomposée en 5 classes:


 HKEY_CLASSES_ROOT regroupe des paramètres spécifiques aux programmes comme les
extensions de fichiers, icônes spécifiques, menus contextuels, fichiers communs (dll par
exemple), licence
 HKEY_CURRENT_USER est spécifique à chaque utilisateur (profil). Il reprend les
configurations claviers, curseurs souris, raccourcis vers des lecteurs réseaux, ...

56
 HKEY_LOCAL_MACHINE regroupe les paramètres de configuration de la machine. Ils
sont définis pour la plupart à l'installation de Windows. On retrouve les pilotes des
composants hardwares internes (processeur, chipset, ...) et externes, paramètres de
désinstallation des logiciels, ...
 HKEY_USERS reprend la liste et paramétrage des profils de tous les utilisateurs.
 HKEY_CURRENT_CONFIG reprend le profil matériel de l'ordinateur au démarrage
comme la résolution écran, pilotes de périphériques à charger, .... C'est une copie de
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current

Types de données du registre

Je reprend seulement les principaux avec une courte description.


 REG_SZ gère une chaîne de caractères, c'est le plus courant.
 REG_BINARY, type de données binaires. Ce sont des suites d'octets qui peuvent
éventuellement être cryptés
 REG_DWORD, codés sur 4 octets. Elles peuvent être introduites en décimal ou en
hexadécimal.

 REG_EXPAND_SZ, chaîne de caractères contenant une variable. Dans l'exemple ci-dessous,


%systemroot% représente le dossier d'installation de Windows (typiquement WINNT).

 REG_MULTI_SZ, plusieurs chaînes de caractères liés, séparés par le caractère Null (0 en


code Ascii) et terminée par le même caractère.
 REG_FULL_RESOURCE_DESCRIPTOR (depuis XP), tableaux imbriqués, sert à stocker
des ressources utilisés par les périphériques.

57
Sauvegarde et restauration de la base de registre

Dans les versions Windows 9X et 2000, il n'y a pas de sauvegarde automatique de la base de registre.
Win95: (après les commandes attrib et effacement des 2 fichiers .dat) sous DOS: copy
user.da0 user.dat et copy system.da0 system.dat.
Win98 / Millenium: la commande DOS scanreg permet de récupérer ou de sauvegarder
jusque 5 niveaux par défaut. La sauvegarde se fait automatiquement à chaque démarrage
réussit (pas la restauration). Elle peut être utilisée au démarrage sou DOS ou sous Windows
dans les outils systèmes.

2000 / XP: La commande Scanreg n'existe plus. Sous 2000, vous pouvez utiliser la commande
regedit et importer / exporter dans le menu registre

XP et Milleniums. Dans démarrer -> Programmes -> accessoires ->Outils système -


>Restauration du système. Cet outils permet de revenir à un point de récupération précédant
ou de créer un point de sauvegarde. A chaque nouvelle installation de logiciel ou périphérique,
un point de restauration est créé.

Autres outils

Modifier les données de la base de registre est souvent dangereux, la moindre erreur provoque le
plantage de la machine au prochain démarrage. Les anti-spyware (Ad-aware, spybot, ...) et quelques
utilitaires comme Hijack permettent de la nettoyer.

58